|
本人最近在學習51單片機,主要功能是實現(xiàn)串口通信協(xié)議,并附帶數(shù)碼管顯示等功能,F(xiàn)在遇到一個問題,我現(xiàn)在希望每隔500ms發(fā)送一串16字節(jié)的數(shù)據(jù),這個500ms我使用定時器0來實現(xiàn),在10ms定時器中Send_Wait_1++。主函數(shù)中,上電先發(fā)送一串數(shù)據(jù),數(shù)據(jù)發(fā)送過程中,Send_Wait_1一直清零,當定時器0啟動時,每次當Send_Wait_1>=50時,啟動發(fā)送函數(shù)Uart2_SendString(),但是我用keil5軟件仿真時,發(fā)現(xiàn)Send_Wait_1一直在增加,但是到了50后,并沒有觸發(fā)if語句從而發(fā)動Uart2_SendString(),程序燒到板子上后,用示波器測了一下,發(fā)送端只有上電后第一次發(fā)動的Uart2_SendString(),之后一直沒有數(shù)據(jù)發(fā)送,糾結(jié)了好幾天一直沒有想明白為什么。
主函數(shù)
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, 下載次數(shù): 3
keil5工程
|