微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于51单片机的串口程序

关于51单片机的串口程序

时间:10-02 整理:3721RD 点击:

我想知道下面这一段串口程序的作用。主要是printHex这个函数,发送一个字节的数据为什么要先发字符‘0’和'x'?求大神讲解
void usatPutChar(uint8 dat)
{
        SBUF = dat;                        
        sendFlay = 1;
        while(sendFlay);  
}

void printHex(uint8 dat)
{
        usatPutChar('0');
        usatPutChar('x');
        usatPutChar(HexTable[dat >> 4]);
        usatPutChar(HexTable[dat & 0x0f]);
}

在C语言中,二级制的前缀是0b,八进制的前缀是0,十六进制的前缀是0x,你这个程序中发送数据前加上0x应该是要告诉接收端,这里发送的数为十六进制数,好让接收端自动识别。

以16进制的形式传输

就是这个意思 假如 10 HEX就是0x0a

发送“0X”,16进制前面都是0x后跟数字。估计是打印16进制数出来

你就记得 你发的其实是字符 。0 x * * 类似这样的  但是想要表达的意思是这是个16进制数据  明白了吗?看看ASCII表

可能是要显示十六进制数据【0x】吧,例如:0xFC等等。

为了使接收端知道所收到的是十六进制的数据,在数据开头加上'0x'

函数名是printHex,意思是输出十六进制,0x是16进制。

你牛,你牛 你是大牛,厉害

知道了,谢谢你啊,我还有个问题想问一问,为什么我调用printHex这个程序向PC端返回数据的时候,PC端只能接收到一个字节呢?

了解了,谢谢你啊,我还有个问题,为什么我调用printHex这个程序向PC端返回数据的时候,PC端只能接收到一个字节呢?

谢谢你啊,了解了,不过我调用该程序的时候为什么PC端只能接收到一个字节呢?

明白了,谢谢你,那这程序其实是把一个字节的数据分成两个字节发送,那怎么我的PC端只能接收到一个字节呢?搞不明白

谢谢你,了解啦

好的,谢谢你

好的,谢谢你了

小编如果有了满意的答案  希望可以选择一个最佳答案哦

谢谢你啦,不过为什么我调用这个程序,但是PC端只能接收到一个字节呢?

好的,我知道啦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top