本帖最后由 fox_lin 于 2012-8-9 21:53 编辑
最近在了解51单片机,看到讲串口通讯部分的,在看例程的时候想到一个问题。
例程如下:
void main()
{
uchar i;
init(); //定时器工作方式、初值,中断控制函数
while(1)
{
if(flag==1) //标志位,为1时则串口有数据输入
{
ES=0; //此处关闭了串口中断。我的疑问就在这里开始
for(i=0;i<6;i++)
{
SBUF=table;
while(!TI);
TI=0;
} //送显一串固定的数组数据,table是一个六个字符的数组数据,不知道为什么,帖子里显示不出表示数组的方括号
SBUF=a; //送显一个不固定的字符
while(!TI);
TI=0; /* 我的疑问是:既然已经关闭了串口中断,此处TI如果不置零、也没有下一句的ES=1,为什么我调试时单片机依然会响应这个中断请求?*/
ES=1;
flag=0;
}
}
}
代码贴的有点乱,大家包涵点,还望明白人给指点个,谢谢了。 |