C51串口发送数据要用中断吗?

void interrupt_uart() interrupt 4
{
if(TI)
{
TI = 0;
REN = 1;
}
if(RI)
{
RI = 0;
num = SBUF;
num++;
SBUF = num;
REN = 0;
}
}
SBUF=num是发送数据,为什么不写在TI里面呢?

发送可以不要, 除非要发送的数据很长, 影响到别的地方的程序代码的运行效果, 如果只是发送小量的几十个字节以内的, 完全不需要中断
但接收除特殊应用外, 一般都需要中断
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-20
TI是发送完毕产生的标志位,用来向CPU提起中断用的。SBUF才是发送缓冲寄存器(当然也是接受缓冲寄存器)
第2个回答  2012-12-20
你这段是测试程序吧,有些测试程序会把接收到的数据立即回送,你的程序就是这个功能。
第3个回答  2012-12-20
它写在RI里面是引起TI的,也就是有它才会有发送中断。否则你怎么进入TI里面?