[51单片机] 单片机一个定时器多个定时点,为何1小时以上的没响应

[复制链接]
 楼主| 1973chen 发表于 2024-4-30 16:31 | 显示全部楼层 |阅读模式
最近做一个充电器单片机软件,涉及到用一个定时器设定多个定时器,而且要求其中一个响应后,关闭其他定时器,程序如下,上电跑了以后感觉没工作,请教下哪儿出问题了。
单片机定时器设定1ms溢出一次,中断如下:
oid TIMER1_Rpt(void) interrupt TIMER1_VECTOR
{

static unsigned char i;
        i++;
        if(i>=5)
        {
                i=0;
    breath_light();
        }

        if(DELAY300MS_ON)
        {
                if(++Count.delay_time2 >= SOrder_300ms)
                {
                        Count.delay_time2   = 0;
                        DELAY300MS_ON      = 0;
                  LED_blink();
                }
        }
       
        if(DELAY500MS_ON)
        {
                if(++Count.delay_time0 >= SOrder_500ms)
                {
                        Count.delay_time0   = 0;
                        DELAY500MS_ON      = 0;
                        Vol_relief(  );
                }
        }
       
        if(DELAY1S_ON)
        {
                if(++Count.delay_time1 >= SOrder_1s)
                {
                        Count.delay_time1   = 0;
                        DELAY1S_ON      = 0;
                       
                }
        }
  if(FLAG_1HOURHALF ==1)       
        {
                 if(++Count.Order_1min0 >= SOrder_1min)
                         {
                                 Count.Order_1min0 = 0;
                                 if(++Count.Order_1hour5 >= SOrder_1hour5)
                                 {
                                         Count.Order_1hour5 = 0;
                                         FLAG_1HOURHALF = 0;
                                 }                 
                         }
       
        }       
       
        if(FLAG_2HOUR == 1)       
        {
           if(++Count.Order_1min0 >= 20000)       //SOrder_1min)
                         {
                                 Count.Order_1min0 = 0;
                                 if(++Count.Order_2hour >= SOrder_2hour)
                                 {
                                         Count.Order_2hour = 0;
                                         FLAG_2HOUR = 0;
                                 }                 
                         }
        }
       
        if(FLAG_7HOURHALF ==1)       
        {               
                 if(++Count.Order_1min0 >= SOrder_1min)
                         {
                                 Count.Order_1min0 = 0;
                                if(++Count.Order_7hour5 >= SOrder_7hour5)
                                 {
                                         Count.Order_7hour5 = 0;
                                         FLAG_7HOURHALF = 0;
                                 }                 
                         }
        }

主函数部分调用程序如下:

switch(Scharge)
        {
                case Idle:
                ........
                break;
               
                case pre_Charging:               
                  /*设定*/
                   FLAG_2HOUR = 1;
                        .....                               
                 /* if(2hour arrive)  */
                 if(FLAG_2HOUR == 0)
                 {
                        RED_LIGHT   = 1;
                        Scharge = Close_charge;
                }               
                break;
                               
                case Charging:
                /*7.5hour  set  */
                    FLAG_7HOURHALF = 1;               
                          .....
                /*7.5hour arrived*/
                    if(FLAG_7HOURHALF == 0)
                    {       
                         .....
                     }                                         
                break;
LcwSwust 发表于 2024-4-30 16:39 | 显示全部楼层
这怎么能靠感觉,直接监测相关变量的值啊,比如用串口把Count.Order_1min0 的值发出来.
xzy568 发表于 2024-5-2 08:47 | 显示全部楼层
LcwSwust 发表于 2024-4-30 16:39
这怎么能靠感觉,直接监测相关变量的值啊,比如用串口把Count.Order_1min0 的值发出来. ...

人家是学生,又不是工程师,你要好好辅导
xionghaoyun 发表于 2024-5-6 08:15 | 显示全部楼层
数组越界?
qintian0303 发表于 2024-5-7 09:21 | 显示全部楼层
建议在线调试看一下各个变量的具体变化,光看程序看不出来的
ayb_ice 发表于 2024-5-8 10:05 | 显示全部楼层
是不是数据溢出了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 返回顶部 返回列表