标题:
尴尬了。忘记单片机串口怎么发送十六进制了?
[打印本页]
作者:
sq8422779
时间:
2021-6-21 18:02
标题:
尴尬了。忘记单片机串口怎么发送十六进制了?
SendString("STC15F2K60S2\r\nUart2 Test !\r\n");这个没问题,是字符串。
怎么发送SendString(74)SendString(A1) ,这种十六进制数据?
这个dat的类型改成啥?忘记了。。
void SendData(BYTE dat)
{
while (busy); //等待前面的数据发送完成
ACC = dat; //获取校验位P (PSW.0)
if (P) //根据P来设置校验位
{
#if (PARITYBIT == ODD_PARITY)
S2CON &= ~S2TB8; //设置校验位为0
#elif (PARITYBIT == EVEN_PARITY)
S2CON |= S2TB8; //设置校验位为1
#endif
}
else
{
#if (PARITYBIT == ODD_PARITY)
S2CON |= S2TB8; //设置校验位为1
#elif (PARITYBIT == EVEN_PARITY)
S2CON &= ~S2TB8; //设置校验位为0
#endif
}
busy = 1;
S2BUF = ACC; //写数据到UART2数据寄存器
}
作者:
xuyaqi
时间:
2021-6-21 19:34
下面就是串口怎么发送十六进制程序,Udat是一个十六进制数,你把发字符看到最后就是它:
void Uart1_SendChar(unsigned char Udat)
{
SBUF=Udat; //将要发送的数据放入串口数据缓冲区
while(!TI); //等待发送完成
TI=0; //清零TI发送完成标记
}
作者:
lishengaha
时间:
2021-6-22 00:25
发送都是二进制,也可以说是十六进制,都是一个字节。至于是字符还是十六进制数值是看你怎么接收,同样发0x30H,你按字符收就是字符0,按十六进制收就是0x30h
作者:
冰点36
时间:
2021-6-22 08:55
直接设定16进制值
作者:
kimoye
时间:
2021-6-22 08:57
lishengaha 发表于 2021-6-22 00:25
发送都是二进制,也可以说是十六进制,都是一个字节。至于是字符还是十六进制数值是看你怎么接收,同样发0x ...
就是这个理解
作者:
sq8422779
时间:
2021-6-22 11:26
我看错了我去,前面0x就是16进制,我去
作者:
人人学会单片机
时间:
2021-7-6 20:28
串口1打印程序 可以打印3个十六位的变量 波特率9600
http://www.51hei.com/bbs/dpj-201660-1.html
串口发送 不需要while死等 串口接收执行软件复位
http://www.51hei.com/bbs/dpj-200927-1.html
作者:
790116460
时间:
2021-7-19 23:46
单片机的串口是,你给的是什么格式他就发送什么格式,在使用串口助手接收到时候也会出现“用什么显示的选项”:
1.如果你串口发送的是16进制数,可以直接把16进制数放到数组里面进行发送,也可以用sprintf函数对数据进行格式化成16进制格式,在进行发送。
2.如果你想发送ASCII码,就要把数据转换成字符串或者ASCII码进行发送
作者:
dwb123
时间:
2021-7-20 11:43
这个需要上位机显示16进制,而不是发送16进制。这边推荐正点原子的上位机
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1