C51单片机,如果打开串口中断,但我程序里用的是查询方式,为什么就不工作?

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
void Send_char(uchar x);
void main()
{
// uchar i;
SCON=0X50;//工作方式:方式1:10位全双工串口异步通信;允许接收;发送/接收中断清零
PCON=0X80;//电源控制寄存器:波特率加倍
//因为串口工作方式为方式1,所以波特率可变,即由定时器T1充当波特率发生器,所有需要用到SMOD
TMOD=0X20;//定时器T1为工作方式2,即8位可自动重装载定时器;
TH1=0XFa;
TL1=0XFa;
//如果需要用到串口中断,则需要设置“中断允许寄存器IE”
EA=1;//开总中断
ES=1;//开串口中断
ET0=0;//因为串口的工作方式为“10位全双工串口异步通信”,所以不管它是以查询方式还是以中断方式使用串口,都必须让定时器T1关中断;
TR1=1;//启动定时器1
/***********到此串口初始化设置完成************/
while(1)
{
if(RI==1)
{
RI=0;//软件
temp=SBUF;
P0=temp;
Send_char(temp);
}
}
}
void Send_char(uchar x)
{
SBUF=x;
while(!TI);
TI=0;
}

为什么要这么做呢,与自己过不去吗?
既然开中断,又不用中断,用查询方式,这是故意为难自己吗?
没有这么做的。查询或中断,要选择一种,不能二者都要。因开中断了,却没有 中断程序,所以,不论是接收或发送,都会响应中断的,但因没有中断程序,所以,就会飞程序了,就是你说的不工作了,真是自找的。
要查询,就不能开中断。要开中断,就必须有中断程序。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答