首先,你要通过软件设置好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()循环的对象了。那就错了!
实际上是这样:
while(TI==0);
意思是只要TI==0就等待,应该是一个发送完成中断标志;
先把数据放如发送寄存器,寄存器空(数据发送完毕以后)标志TI自动置为1;
这个时候自动退出等待,继续执行下面的程序。