打印
[51单片机]

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

[复制链接]
882|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
数组越界?

使用特权

评论回复
5
qintian0303| | 2024-5-7 09:21 | 只看该作者
建议在线调试看一下各个变量的具体变化,光看程序看不出来的

使用特权

评论回复
6
ayb_ice| | 2024-5-8 10:05 | 只看该作者
是不是数据溢出了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝