单片机中:while(TI==0)怎么能实现等待功能?困惑了好久了。

2025-03-04 16:40:51
推荐回答(2个)
回答1:

首先,你要通过软件设置好TI=0;
开始执行程序后,TI==0 这个条件为真,也就是while(1); 一直执行这条while(TI==0)程序,也就是所谓的等待,直到你要发送的数据发送完毕,CUP产生一个中断,内部寄存器用于标识发送中断的TI位自动置1,此时,TI的置为1,也就是TI==0 这个条件不再成立,while(TI==0)这条语句就相当于while(0);于是程序跳出while()循环往下执行。
另外需要注意的是,只有while(TI==0);才行, 后面的分号不能省略,没有分号编译时,默认while(TI==0)这条语句后面的那条程序对坐while()循环的对象了。那就错了!

回答2:

实际上是这样:

while(TI==0);
意思是只要TI==0就等待,应该是一个发送完成中断标志;

先把数据放如发送寄存器,寄存器空(数据发送完毕以后)标志TI自动置为1;
这个时候自动退出等待,继续执行下面的程序。