51单片机串口中断问题

串口收发用的是同一个中断,中断子程序的通用写法却是不分辨收中断还是发中断,普遍采用查询方式判断发数据帧结束,即while(!TI) TI=0; 我的问题是为什么不能在中断子程序中判断收发,开了串口中断后,当TI==1时,根据中断的原理,应该也进入中断子程序,可在查询TI时(即while(!TI)),程序到底进入中断没有

事实上,只要开串口中断,不管是TI=1还是RI=1,都会进入中断,至于进入中断后干什么,完全看你的服务程序了。追问

您的意思是只要开了中断,即使用查询的方法,TI置位后也会进入中断,只不过可以不响应服务程序???

追答

嗯,是的,你可以写个程序试验下。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-15
怎么会不分收中断。发中断?收中断TI,发中断RI,难道我记错了?

while(!TI) TI=0; 那不是等发送发完吗?

串口中断不是响应接收中断嘛?RI被置位,中断产生。

好久没弄过51了,也不知道记错了嘛
第2个回答  2011-08-15
串口中断服务子程序中首先要做的事就是判定中断源,收则OOOO、发则XXXX。追问

可否这样写子程序if(RI){...} if(TI){...}

相似回答