《2020年整理中断法和查询法的比较.doc》由会员分享,可在线阅读,更多相关《2020年整理中断法和查询法的比较.doc(3页珍藏版)》请在金锄头文库上搜索。
1、查询方式:发送数据先发后查; 接收数据先查后收。中断方式:发送数据发送、等待中断、中断中发送; 接收数据等待中断、在中断中接收。下面让我们通过两个列子进一步看一下两者的区别:/*查询方式实现的串口通讯*/#include#define uint unsigned int#define uchar unsigned charuchar code table=E-mail:xtxy_ ;uchar i,temp;void init_ser() /串口初始化 TMOD=0x20; /定时器1工作于方式2 TH1=0xf3; /娤初值波特率为2400 TL1=0xf3; TR1=1; /开定时器1 S
2、CON=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) /扫描是否接收到数据(一个字节) RI=0; temp=SBUF; out_ser(); /串口输出 /*中断方式实现的串口通讯*/#include#define uint unsig
3、ned int#define uchar unsigned char/uchar code table=you get ;uchar temp,flag;void init_ser() /串口初始化 TMOD=0x20; /定时器1工作于方式2 TH1=0xfd; /娤初值波特率为 TL1=0xfd; TR1=1; /开定时器1 SCON=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; 3