欢迎来到天天文库
浏览记录
ID:38800944
大小:24.00 KB
页数:3页
时间:2019-06-19
《查询方式与中断方式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、(原创)串口通讯总结——查询方式与中断方式我们知道串口通讯有查询与中断两种方式,但是对于两种方式的区别很多人并不是非常清楚,对于两者的实现到底有和不同呢?让我们简单的总结如下:查询方式:发送数据——先发后查;接收数据——先查后收。中断方式:发送数据——发送、等待中断、中断中发送;接收数据——等待中断、在中断中接收。下面让我们通过两个列子进一步看一下两者的区别:/******************查询方式实现的串口通讯*************************/#include2、.h>#defineuintunsignedint#defineucharunsignedcharucharcodetable[]="E-mail:xtxy_esl@163.com";uchari,temp;voidinit_ser()//串口初始化{TMOD=0x20;//定时器1工作于方式2TH1=0xf3;//娤初值波特率为2400TL1=0xf3;TR1=1;//开定时器1SCON=0x50;//设置串口方式1允许接收EA=0;//关总中断}voidout_ser()//串口输出{whil3、e(table[i]!=' '){SBUF=table[i];while(!TI);//注意“;”TI=0;i++;}i=0;SBUF=temp;while(!TI);TI=0;}voidmain(){init_ser();//串口初始化while(1)//必须在大循环中{if(RI)//扫描是否接收到数据(一个字节){RI=0;temp=SBUF;out_ser();//串口输出}}}/******************中断方式实现的串口通讯*************************4、/#include#defineuintunsignedint#defineucharunsignedchar//ucharcodetable[]="youget";uchartemp,flag;voidinit_ser()//串口初始化{TMOD=0x20;//定时器1工作于方式2TH1=0xfd;//娤初值波特率为TL1=0xfd;TR1=1;//开定时器1SCON=0x50;//设置串口方式1允许接收EA=1;//开总中断ES=1;//开串口中断}voidmain(){in5、it_ser();while(1){if(flag==1){ES=0;SBUF=temp;while(!TI);TI=0;ES=1;flag=0;}}}voidser()interrupt4{temp=SBUF;//读走数据RI=0;flag=1;}
2、.h>#defineuintunsignedint#defineucharunsignedcharucharcodetable[]="E-mail:xtxy_esl@163.com";uchari,temp;voidinit_ser()//串口初始化{TMOD=0x20;//定时器1工作于方式2TH1=0xf3;//娤初值波特率为2400TL1=0xf3;TR1=1;//开定时器1SCON=0x50;//设置串口方式1允许接收EA=0;//关总中断}voidout_ser()//串口输出{whil
3、e(table[i]!=' '){SBUF=table[i];while(!TI);//注意“;”TI=0;i++;}i=0;SBUF=temp;while(!TI);TI=0;}voidmain(){init_ser();//串口初始化while(1)//必须在大循环中{if(RI)//扫描是否接收到数据(一个字节){RI=0;temp=SBUF;out_ser();//串口输出}}}/******************中断方式实现的串口通讯*************************
4、/#include#defineuintunsignedint#defineucharunsignedchar//ucharcodetable[]="youget";uchartemp,flag;voidinit_ser()//串口初始化{TMOD=0x20;//定时器1工作于方式2TH1=0xfd;//娤初值波特率为TL1=0xfd;TR1=1;//开定时器1SCON=0x50;//设置串口方式1允许接收EA=1;//开总中断ES=1;//开串口中断}voidmain(){in
5、it_ser();while(1){if(flag==1){ES=0;SBUF=temp;while(!TI);TI=0;ES=1;flag=0;}}}voidser()interrupt4{temp=SBUF;//读走数据RI=0;flag=1;}
此文档下载收益归作者所有