[MCU] output_time在大于delay_time后有溢出

[复制链接]
 楼主| spark周 发表于 2020-9-1 19:51 | 显示全部楼层 |阅读模式
用单片机定时器做可调1-10S延时程序;小弟现在定时器定10ms;如
void   T2_temp_10ms(void) interrupt 5   using  2
{   
    TF2=0;
    output_time++;             //output_time是int型
}
外面输出程序写的是
if(output_time>=delay_time)                                                                                                           //delay_time 是采的可调变阻器1-1000的值做1- 10s
     {                               //delay_time是一个在1-1000之内的固定值 如400;
       ACTION  =  1;
     }
else
   {
      ACTION   =  0;
   }
但是现在的问题是output_time在大于delay_time后有溢出。
午夜粪车 发表于 2020-9-1 19:57 | 显示全部楼层

在《output_time==delay_time》的时候ACTION保持在 1;
而不是每1-10S循环ACTION=1;
 楼主| spark周 发表于 2020-9-1 20:02 | 显示全部楼层
不知道用定时器能不能做
lizye 发表于 2020-9-1 20:05 | 显示全部楼层

可以换一个写法,
比如在定时时间到时给output_time清零,让它重新计时。
  ACTION   =  0; 这条语句放在另外的地方,让它和output_time没有关系。
zhaoxqi 发表于 2020-9-1 20:09 | 显示全部楼层

可以在 中断服务程序中:
  {
    TF2=0;
    if(output_time<65534)
       output_time++;             //output_time是int型
  }
但 此时output_time必须在 外部主程序中, 有条件地清0(关键LZ的目的是什么,要搞清楚)
 楼主| spark周 发表于 2020-9-1 20:13 | 显示全部楼层
哦,我考虑下
午夜粪车 发表于 2020-9-1 20:19 | 显示全部楼层
没给output_time清0当然会溢出
huangchui 发表于 2020-9-1 20:24 | 显示全部楼层
做嵌套循环的。
 楼主| spark周 发表于 2020-9-1 20:27 | 显示全部楼层
哦,我再改改
lizye 发表于 2020-9-1 20:30 | 显示全部楼层
是不是外面的程序执行时间过长?
liliang9554 发表于 2020-9-1 20:35 | 显示全部楼层
如果中断时间过短,则不能产生这样的信号
jiajs 发表于 2020-9-1 20:38 | 显示全部楼层
变量的匹配好了吗
午夜粪车 发表于 2020-9-1 20:42 | 显示全部楼层
有溢出一般都是变量没有控制好,或者米有清楚
zhanghqi 发表于 2020-9-1 20:52 | 显示全部楼层
是10ms定时溢出还是?不然的话定时够了就先清零的吧
zhuhuis 发表于 2020-9-1 20:58 | 显示全部楼层
这个time的计时的要及时清零的
wenfen 发表于 2020-9-1 21:01 | 显示全部楼层
在定时时间到时给output_time清零,让它重新计时
chenjunt 发表于 2020-9-1 21:05 | 显示全部楼层
output_time是不是需要清0
liuzaiy 发表于 2020-9-1 21:13 | 显示全部楼层
溢出是什么意思呢?
morrisk 发表于 2020-9-1 21:16 | 显示全部楼层
这个是程序不一致的。
yufe 发表于 2020-9-1 21:19 | 显示全部楼层
建议在定时器里面定义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

821

主题

10121

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

821

主题

10121

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部