下面函数,只要被调用就会导致单片机死机,请大家帮忙分析
dsoyy 2013-12-25 03:41:30 都是简单的运算。
char Time_down_cmd = 0; //启动倒计时命令,1启动,0 关闭
long disp_time ;
void Disp_TimeDown(void)
{
char dispbuf1[3],dispbuf2[3] ;
int dat1=0,dat2;
int flag = 0;
int i ;
if(AutoRunType == AUTO_MODE_RUN)
{
PutStr(2,0, "运行--");
disp_time = DownTime_run;
}
else if(AutoRunType == AUTO_MODE_STOP)
{
PutStr(2,0, "停止--");
disp_time = DownTime_stop;
}
if((disp_time>=0) && (disp_time<6000) )//最大支持99分59秒
{
if(disp_time >= 60)
{
dat1 = disp_time/60;
dat2 = disp_time%60;
}
else if((disp_time >= 0))
{
dat1 = 0;
dat2 = disp_time;
}
if((dat1 >=0) && (dat2 >= 0))
{
if(dat1 < 10)
{
my_itoa(dat1,dispbuf1+1);
dispbuf1[0] = '0';
flag = 1;
}
else if(dat1 < 60)
{
my_itoa(dat1,dispbuf1);
flag = 1;
}
if(flag)
{
dispbuf1[2] = '\0';
PutStr(2,3,dispbuf1);
}
flag = 0;
if(dat2 < 10)
{
my_itoa(dat2,dispbuf2+1);
// dispbuf2[0] = '0';
flag = 1;
}
else if(dat2 < 60)
{
flag = 1;
my_itoa(dat2,dispbuf2);
}
if(flag)
{
// dispbuf2[2] = '\0';
PutStr(2,5,dispbuf2);
}
PutStr(2,4, "分");
PutStr(2,6, "秒");
PutStr(2,7, " ");
PutStr(3,0, " ");
}
}
}
简要说明:将当前的时间 XX分:XX秒 在LCD12864 上显示。
其中中到了两个子函数 PutStr()在LCD显示字符串,和my_itoa()等同于标准C的itoa()函数。在本工程中多次使用,证明是稳定可靠地。
只要调用上面的函数,CPU一两个小时左右就会死机。
编译环境MPLAB V8.66,HI-TECH
硬件8位单片机PIC16F1938
请大家指点,不胜感激。