您的位置 首页 解答

51单片机———串口通讯的疑问

/*程序的功能是在T1定时器工作方式2下使用串口工作方式1实现串口通讯,即PC机发送一串数据,51单片机将数据反馈回来。使用回车符作为一串字…

/*程序的功用是在T1定时器作业方式2下运用串口作业方式1完成串口通讯

即PC机发送一串数据,51单片机将数据反应回来。运用回车符作为一串字符串的结束标志总结:我是参照郭天祥51单片机写的,这个程序写得仍是有点疑问,便是下面在承受完数据后一定要先将串口中止封闭(即ES = 0),然后再进行处理,假如不封闭中止的话,反应回PC机的数据便是I get\n*/#include//#define DEBUG#define u8 unsigned char#define u16 unsigned int#define MAXSIZE 64u8 code table[] = "I get ";u8 flag,index,i,Len;u8 Buff[MAXSIZE];void Configuration(){TMOD = 0x20;TH1 = 0xF3;							//设置波特率为4800TL1 = 0xF3;TR1 = 1;SCON = SCON & (0x3<<6);	SCON = SCON | (0x01<<6) | (1<<4);	//设置串口作业形式和使能承受PCON = PCON | (1<<7);				//设置波特率加倍,即终究的波特率为9600EA = 1;								//舱位中止ES = 1;}void Recieve() interrupt 4{RI = 0;Buff[index++] = SBUF;#ifdef DEBUGSBUF = Buff[index-1];while(!TI);TI = 0;#endifif (Buff[index-1]==\n )			//这一串数据结束{Len = index;index = 0;flag = 1;	}}void main(){Configuration();while(1){if (1==flag)					//判别是否有数据到来{ES = 0;						//要封闭中止,不然程序有问题for(i=0;i<6;i++){SBUF = table[i];while(!TI);				//等候数据发送结束TI = 0;}for(i=0;i

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/263609.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部