|
本人最近在学习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;
}
}
}
}
}
工程文件见附件,求高手指导一下
|
|