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