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