《查询方式与中断方式》由会员分享,可在线阅读,更多相关《查询方式与中断方式(3页珍藏版)》请在金锄头文库上搜索。
1、(原创)串口通讯总结 查询方式与中断方式我们知道串口通讯有查询与中断两种方式,但是对于两种方式的区别很多人并不是非常清楚,对于两者的实现到底有和不同呢?让我们简单的总结如下:查询方式:发送数据 先发后查;接收数据 先查后收。中断方式:发送数据 发送、等待中断、中断中发送;接收数据 等待中断、在中断中接收。下面让我们通过两个列子进一步看一下两者的区别:/*查询方式实现的串口通讯*/#include#define uint unsigned int#define uchar unsigned charuchar code table=E-mail:xtxy_ ;uchar i,temp;void
2、init_ser() /串口初始化 TMOD=0x20; /定时器1工作于方式2TH1=0xf3; /娤初值波特率为 2400TL1=0xf3;TR1=1; /开定时器1SCON=0x50; /设置串口方式1 允许接收EA=0; /关总中断void out_ser() /串口输出while(tablei != 0) SBUF=tablei; while(!TI); /注意“ ;”TI=0;i+; i=0;SBUF=temp;while(!TI);TI=0;void main()init_ser(); /串口初始化while(1) /必须在大循环中if(RI) /扫描是否接收到数据(一个字节)
3、RI=0; temp=SBUF; out_ser(); /串口输出 /*中断方式实现的串口通讯*/#include#define uint unsigned int#define uchar unsigned char/uchar code table=you get ;uchar temp,flag;void init_ser() /串口初始化 TMOD=0x20; /定时器1工作于方式2TH1=0xfd; /娤初值波特率为TL1=0xfd; TR1=1; /开定时器1SCON=0x50; /设置串口方式1 允许接收EA=1; /开总中断ES=1; /开串口中断void main()init_ser();while(1)if(flag=1)ES=0;SBUF=temp;while(!TI);TI=0;ES=1;flag=0; void ser() interrupt 4 temp=SBUF; /读走数据RI=0;flag=1;