利用串口传输各种数值数据二、MCS-51单片机端设计1、通信协议为做演示说明我们仅发送3个数据顺序依次为:字符型数据、整型数据、浮点型数据,字符型数据、整型数据、浮点型数据在MCS-51单片机的C语言中分别占用1、2、4个字节
由于是采用周期性的数值数据发送方法,为使PC机端能准确接收所发送数据设计数据包如下:所有数据按发送顺序及占用字节数顺序排列,等待发送
数据包以两个字节的数据0XFF表示数据包结尾
当等待发送数据为0XFF时,插入转义字符0X27,避免发送数据中出现连续的两个0XFF,造成虚假的数据包结尾
插入的转义字符在接收时自动删除,为避免发送数据为0X27时被自动删除,在其后也插入转义字符0X27
2、单片机程序设计由于发送、接收双方距离较近,故波特率设置为9600bps、数据位数为8位、没有奇偶校验位、1位停止位
系统的定时器/记数器T0、T1已另作它用,故选择T2做为波特率发生器
使用T2做为波特率发生器时不会产生通讯中断
单片机发送程序由两个子程序组成:串口初始化、数据发送
代码如下:voidinit232(void)//串口初始化子程序{SCON=0x50;PCON=0x80;T2CON=0x34;RCAP2L=0xb2;RCAP2H=0xff;TL2=0xb2;TH2=0xff;TR2=1;}voidsenddata()//数据发送子程序{uchardata*datapd;uchari;pd=&char_data;//sendchardataSBUF=*pd;while(TI==0);TI=0;if(((*pd)==0xff)||((*pd)==0x27)){SBUF=0x27;while(TI==0);TI=0;}pd=&int_data;//sendintdatafor(i=0;i