我已经设置好了,C#写的上位机程序。发送的是string=“100”,问题:PC如何把数据发送给单片机,单片机如何处理数据。得到100;
追答我明白你的意思了.你是发了100收到的不是100.那是进制问题.单片机收到的并不是100而是64吧.我把它化成BCD码就行了.
64÷10=6……4
即商是6,余数是4
如果将商乘以16再加上余数,就是:
6×16+4=100,其16进制数就是64H,即是十进制数64(16进制为40H)的BCD码为64H。
如果在单片机中,程序这么写:
char HEX,BCD;
BCD=(HEX/10*16)+(HEX%10);
其中HEX存储十六进制数,BCD中存储的就是其BCD码
用的串口助手,字符格式。100
追答那样的话你就发错了,单个字符发送区是0-F.不包括两位数的,那是几个字符不是一个字符
追问是,是发错了。谢谢指出。但是我改发a,b,c后,P2=SBUF;P2一直显示0x7c。能加下我Q吗:470837921
追答好吧
比如PC发送“100”,PC是如何发送的,单片机直接接收的是“100”还是怎么?
追答这个没什么关系的,反正你只要想不管是什么类型的变量都是以二进制补码形式存在内存中的,所以你发送一个十进制数就相当于把这个数转换二进制补码形式发送到单片机,然后单片机就会把这个二进制补码再转换成十进制显示出来,其实由这个你还可以知道不同类型的数据怎么进行转换的。
发送100可以这样发1 0 0
试试
问题是:PC发送的字符型数据 单片机如何接收。
追答若已经知道PC发送格式为字符型,直接按字符型接收处理便是。
能详细说下吗。接收如何处理。