关于单片机串口中断的几个问题,求解答

1:这只是一部分程序,单片机串口中断程序里,TI不是要置0后才能继续发送么,为什么我不置0,仿真出来照样可以运行。
2:MOV SBUF,A是在置0前还是后啊,或是无所谓。

1.TI是串口数据发送完毕的标志,同时在硬件上有引起进中断的功能。你程序里开了串口中断,在中断服务程序中又不清TI,会导致单片机反复不停地进入中断服务程序,实际导致数据根本无法正确发送。虽然你仿真可以运行,但执行的结果是不正确的。
2.MOV SBUF,A最好放在清 TI之后,因为不知你能再清TI和MOV SBUF,A插入多少指令。如果清TI和MOV SBUF,A之间执行的指令不多,那么就无所谓。但是最好养成良好的编程习惯,这样程序不容易出错。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-10
当定时器工作模式在模式2的时候 是自动重装的,所以定时器不用管他

TI只是提醒你,数据已经发完了,只要你往SBUF里面放数据,就会发出数据

这个程序有很多问题,建议你不要写这么长,否则你都不知道问题出在哪里!
第2个回答  2013-09-10
每次通过MOV SBUF,A发送一个字节到串口缓冲区后,如果延时足够时间(CALL DELAY),串口已经把那个字节数据发送出去,就可以直接再用MOV SBUF,A发送下一个字节,不用理睬TI标志。
相似回答