首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

底下函数,只要被调用就会导致单片机死机,请大家帮忙分析

2014-01-12 
下面函数,只要被调用就会导致单片机死机,请大家帮忙分析都是简单的运算。char Time_down_cmd 0 //启动倒

下面函数,只要被调用就会导致单片机死机,请大家帮忙分析
都是简单的运算。
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



请大家指点,不胜感激。

[解决办法]
将               //  dispbuf2[2] = '\0';
改为                 dispbuf2[2] = '\0';
试试看。
[解决办法]
你的putstr是怎么写的?可不可以贴出来看看?
[解决办法]
char dispbuf1[6],dispbuf2[6] ;
试试

热点排行