怎样将整型数据从单片机发送到串口调试精灵??

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:14:04
怎样将unsigned int Number[]={178,330,12345,456,86,53,32,4245};里的数据一次性发到串口调试精灵??
题意如上,要求用c51语言编写程序,从单片机向pc机发送这一整形数组数据,怎样实现???有的人说要分位,有的说要转化为字符型,搞得的我好茫然!!
哪位高手能给出程序啊??
单片机向串口精灵发送数据已经成功啦!!

但是现在不知道vb的接收数据的程序怎样编??
例如发送unsigned long Number[]={178}到vb是分"1""7""8"一同发送给vb的,vb怎样把"1""7""8"接收到??
并且把"1""7""8"还原成数字178呢???

那位高手能够给点vb程序提示啊,我实在太笨啦!!
感激不尽啊

应该分位传送的,否则串口调试精灵不识别发送的数据。
可以这样:
如:发送178:
i=178;
i1=i/100;
i2=(i%100)/10;
i3=(i%100)%10;
i1=i1+0x30;
i2=i2+0x30;
i3=i3+0x30;

然后依次发送:i1,i2,i3
可以这样发送:
TI=0;
SBUF=i1;
while(!TI);
TI=0;
SBUF=i2;
while(!TI);
TI=0;
SBUF=i3;
while(!TI);
TI=0;
依次类推....

问题的关键是串口每次发送的最多是8个二进制位,也就是一个字节。所以整形量总是要拆开发送的。至于是拆成位、字节还是字符串,那个是通讯协议的问题,或者说都可以任意(你没有更多的说明,所以我假设协议由你自己定)。
用for循环完全可以,只要保证发送的2个字节之间延时足够的时间即可,具体时间要看波特率,通常波特率的倒数乘以10是串口硬件发送一个字节的时间,延时比这个长即可。

关于补充:
那个就是编程算法的问题了,例如你收到“1”“7”“8”的ASCII码,各自减去“0”的ASCII码,就变成1,7,8三个数了,然后1*100+7*10+8*1不就是178了吗。通常采用下面的编程算法就可以将各个位分别表示的数“合成”还原成其对应的数值:
个位数+10*(十位数+10*(百位数+10*(千位数+...))...