碰到一個看起來很簡單的51單片機串行通信的問題,但折騰了兩天了,怎么也調試不過去
1.目的:
使用郭天祥的開發版,實現串口送入0x01情況下,led燈閃爍的效果
2.代碼如下:
void Usart() interrupt 4
{
unsigned char receiveData;
receiveData=SBUF;//出去接收到的數據
RI = 0;//清除接收中斷標志位
//ledFlash();//放在外面單片機能夠指揮外部小燈閃爍
if(receiveData==0x01)
{
ledFlash();
}
SBUF=receiveData;//將接收到的數據放入到發送寄存器
while(!TI); //等待發送數據完成
TI=0; //清除發送完成標志位
}
3.問題:
1)將實現led閃爍的函數 ledFlash()放在if語句之外直接執行,可以實現當字節到達時,直接閃爍的效果
2)但是,當將ledFlash()移到if 語句中,不知為什么,下載到單片機就無法實現小燈閃爍效果了,但是后面發送到stc-isp的緩沖區的程序仍然正常。如下圖
4.嘗試:
使用keil串口仿真調試,則當發送0x01時,能夠進入 if 語句,正常執行ledFlash(),如圖
請教大家,這個到底是怎么回事的,問題該如何解決啊
|