|
本人最近在學習51單片機,主要功能是實現串口通信協議,并附帶數碼管顯示等功能。現在遇到一個問題,我現在希望每隔500ms發送一串16字節的數據,這個500ms我使用定時器0來實現,在10ms定時器中Send_Wait_1++。主函數中,上電先發送一串數據,數據發送過程中,Send_Wait_1一直清零,當定時器0啟動時,每次當Send_Wait_1>=50時,啟動發送函數Uart2_SendString(),但是我用keil5軟件仿真時,發現Send_Wait_1一直在增加,但是到了50后,并沒有觸發if語句從而發動Uart2_SendString(),程序燒到板子上后,用示波器測了一下,發送端只有上電后第一次發動的Uart2_SendString(),之后一直沒有數據發送,糾結了好幾天一直沒有想明白為什么。
主函數
void main(void)
{
Timer0Init();
Uart2_Init();
Send_Wait_1=0;
Uart2_SendString();
if(Send_Wait_1>=50)
{
Send_Wait_1=0;
Uart2_SendString();
}
DisP4(1234);
Digi();
Key4();
}
定時器0,100us
void tm0() interrupt 1 using 1
{
US100++;
if(US100>= 10)
{US100=0; Serve1MS(); // 1MS¼Æê±
MS1++;
if(MS1>=10)
{MS1=0; Serve10MS(); // 10MS¼Æê±
MS10++;
if(MS10>=10)
{ MS10=0; Serve100MS(); // 100MS¼Æê±
MS100++;
if(MS100>=10)
{
MS100=0; Serve1S(); // 1S¼Æê±
S1++;
if(S1>250) S1=0;
}
}
}
}
}
工程文件見附件,求高手指導一下
|
-
-
V1.03.zip
2015-11-7 14:41 上傳
點擊文件名下載附件
92.77 KB, 下載次數: 3
keil5工程
|