|
碰到一個看起來很簡單的51單片機(jī)串行通信的問題,但折騰了兩天了,怎么也調(diào)試不過去
1.目的:
使用郭天祥的開發(fā)版,實現(xiàn)串口送入0x01情況下,led燈閃爍的效果
2.代碼如下:
void Usart() interrupt 4
{
unsigned char receiveData;
receiveData=SBUF;//出去接收到的數(shù)據(jù)
RI = 0;//清除接收中斷標(biāo)志位
//ledFlash();//放在外面單片機(jī)能夠指揮外部小燈閃爍
if(receiveData==0x01)
{
ledFlash();
}
SBUF=receiveData;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位
}
3.問題:
1)將實現(xiàn)led閃爍的函數(shù) ledFlash()放在if語句之外直接執(zhí)行,可以實現(xiàn)當(dāng)字節(jié)到達(dá)時,直接閃爍的效果
2)但是,當(dāng)將ledFlash()移到if 語句中,不知為什么,下載到單片機(jī)就無法實現(xiàn)小燈閃爍效果了,但是后面發(fā)送到stc-isp的緩沖區(qū)的程序仍然正常。如下圖
1.png (244.09 KB, 下載次數(shù): 16)
下載附件
2022-12-5 10:54 上傳
4.嘗試:
使用keil串口仿真調(diào)試,則當(dāng)發(fā)送0x01時,能夠進(jìn)入 if 語句,正常執(zhí)行l(wèi)edFlash(),如圖
2.png (273.81 KB, 下載次數(shù): 17)
下載附件
2022-12-5 10:55 上傳
請教大家,這個到底是怎么回事的,問題該如何解決啊
|
|