|
在串口的通訊的時候,看到一個語句:
如下:
while(!TI);
當時不明,后來才看明白,現(xiàn)記錄如下:
首先,TI是串口發(fā)送完成標志,發(fā)送完成TI置為1
while(!TI);的意思是等待串口發(fā)送完成
當串口發(fā)送未完成時:
TI值為0,(!TI)值為1,;號前面無語句,故一直在此循環(huán)
當串口發(fā)送完成時:
TI值為1,(!TI)值為0,while(!TI)不滿足循環(huán),退出,繼續(xù)執(zhí)行下一條
因為TI在串口發(fā)送后,硬件自動置1,
我們需要重新發(fā)送數(shù)據(jù)的話,就需要在置1后,軟件清零,然偶繼續(xù)發(fā)送我們需要發(fā)送的數(shù)據(jù)!
eg:
while(!TI=1); //等待串口發(fā)送完成TI=0; //軟件清零,發(fā)送下一個數(shù)據(jù)
while(!RI=1); //等待串口接收完成
RI=0; //軟件清零。接收下一個數(shù)據(jù)
值得注意的一點是:
while后面的括號里面的程式,(!TI=1)=(!TI),同樣,(!RI=1)=(!RI)
|
|