小弟初学51单片机,遇到一个问题,即“PC机以16进制发送一个0-65536之间的任一十进制数,当单片机收到此数后在数码管上显示出来”,小弟之前只了解SBUF,但SBUF一般存储的是16进制字符,如何把它还原成原本要发送的十进制数呢?
请大家帮助一下,小弟不胜感激
还原,是你程序处理的事情
串口通信一般有两种方式 1、字符 2、字节
pc发送时:以十六进制发送
比如:0x12
mcu接收:sbuf=0x12
你在把十六进制数转换成十进制数显示就可以了!
谢谢,再问一下,一般0x打头的16进制数字是unsigned char类型,如何转化为unsigned int类型对应的十进制数呢
unsigned char类型,转化为unsigned int类型用强制转换符
如:unsigned char i;
unsigned int k;
k = (unsigned int)i;
十进制:
如0x29 等于 41;
用0x29除以10,整数部分为4, 余数为1;依次类推,多少为都可以。方法多样。
flowercity
菜农
等 级:
发表于:2007-12-28 11:18:321楼 得分:0
还原,是你程序处理的事情
串口通信一般有两种方式 1、字符 2、字节
======================================
发送字符和发送字节有什么区别?
你发送的都是八位的数据,至于是字符还是什么由你的软件协议解决,超过8位的数据需要分解成多个8位数据发送,这个属于软件协议范畴