串口通信的问题,希望各路高手点拨

alywang   2007-12-27 22:32 楼主
小弟初学51单片机,遇到一个问题,即“PC机以16进制发送一个0-65536之间的任一十进制数,当单片机收到此数后在数码管上显示出来”,小弟之前只了解SBUF,但SBUF一般存储的是16进制字符,如何把它还原成原本要发送的十进制数呢?
请大家帮助一下,小弟不胜感激

回复评论 (11)

还原,是你程序处理的事情

串口通信一般有两种方式  1、字符 2、字节
点赞  2007-12-28 11:18
pc发送时:以十六进制发送
   比如:0x12
mcu接收:sbuf=0x12

你在把十六进制数转换成十进制数显示就可以了!


点赞  2007-12-28 14:14
进步中....
点赞  2007-12-28 14:47
谢谢,再问一下,一般0x打头的16进制数字是unsigned char类型,如何转化为unsigned int类型对应的十进制数呢
点赞  2007-12-28 20:05
unsigned   char类型,转化为unsigned   int类型用强制转换符
如:unsigned   char i;
unsigned   int k;
k = (unsigned int)i;
十进制:
如0x29 等于 41;
用0x29除以10,整数部分为4, 余数为1;依次类推,多少为都可以。方法多样。     
点赞  2007-12-29 11:26
以解决 谢谢
点赞  2007-12-29 13:13
自己写个小程序就搞定了
点赞  2008-1-6 10:18
flowercity
菜农
等 级:
发表于:2007-12-28 11:18:321楼 得分:0
还原,是你程序处理的事情

串口通信一般有两种方式     1、字符   2、字节

======================================

发送字符和发送字节有什么区别?
点赞  2008-1-11 09:29
这个简单啊,网上搜一下就得到答案了.
点赞  2008-5-1 07:20
不知,帮顶
点赞  2008-5-1 18:20
你发送的都是八位的数据,至于是字符还是什么由你的软件协议解决,超过8位的数据需要分解成多个8位数据发送,这个属于软件协议范畴
点赞  2008-6-8 22:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复