如果打开了串口,那么是可以触发串口中断的。
当发送完成时TI = 1,即触发串口发送中断。
当然需要你初始化好相应的波特率什么的才能进行正常的通信。
至于你将SBUF放在if内外的差别,应该是你别的地方引起的。理论上如果
if条件为真,那么就会执行if语句的内容的。
另外如果你串行中断你还需要处理接收数据的结果时候,应该这样写
void zhong() interrupt 4
{
if(RI)
{ RI = 0;
...}
if(TI)
{ TI = 0;
...}
}
是这样子的。
SBUF=1表示你往发送缓冲器里写了一个数,单片机会自己把它发出去,当然也会触发串口发送中断(这里的前提是你打开并允许了发送中断有效),如果你不想让发送时产生中断或即使产生了中断也要不影响程序运行的话,那你有两种办法
1、在初始化时屏蔽发送中断。这样的话这句话就不会产生中断。
2、在中断函数里对中断源进行判断,如果是发送中断的话,执行一跳空指令即可。