中断法和查询法的比较

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

查询方式:发送数据——先发后查;

接收数据—-先查后收.

中断方式:发送数据——发送、等待中断、中断中发送;

接收数据——等待中断、在中断中接收。

下面让我们通过两个列子进一步看一下两者的区别:

/******************查询方式实现的串口通讯*************************/

#include〈reg52。h>

#define uint unsigned int

#define uchar unsigned char

uchar code table[]=”E—mail:xtxy_esl@163。com ";

uchar i,temp;

void init_ser() //串口初始化

{

TMOD=0x20; //定时器1工作于方式2

TH1=0xf3; //娤初值波特率为2400

TL1=0xf3;

TR1=1; //开定时器1

SCON=0x50; //设置串口方式1 允许接收

EA=0; //关总中断

}

void out_ser() //串口输出

{

while(table[i]!= ’\0’)

{

SBUF=table[i];

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〈reg52。h〉

#define uint unsigned 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;

}

相关文档
最新文档