找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3140|回复: 9
打印 上一主题 下一主题
收起左侧

请教一个单片机定时器中断进行多个倒计时设计

[复制链接]
跳转到指定楼层
楼主
ID:405193 发表于 2018-11-29 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位师傅,您们好,我想用一个单片机中断设置四个时间倒计时,现在我只能用类似延时的方法实现,我到有师傅说可以用用一个定时器中断做时基,有几路倒计时就用几个倒计时单元,分别置初值,在定时器中断程序内对各个计时单元减1,主程序只要不断查询各个计数单元,哪一个归零了,就是哪一路倒计时结束了。不知道怎样写,希望懂的师傅们给点样品代码,非常感谢。
我现在用的延时方法:
void ISR_INT2(void) interrupt 12      
{
           static ulong nn;

       T2L = 0x20;                //设置定时初值
           T2H = 0xD1;                //设置定时初值
                   nn++;                    //自加 临时计数器01
               if(nn==1000)             //如果 临时计数器01达到设定值(1ms转1s)
        {         nn=0;             //清零 临时计数器01
            numrelays++;           //自加 计数器relay
         }

           

}

这样就是秒的中断,把这个秒设置成一个延时函数,就可以调用四个不同的时间了,我想看看师傅们怎样用中断减操作的方法,非常感谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:424598 发表于 2018-11-29 10:22 来自手机 | 只看该作者
这个应该没问题,定义四个变量时间,初始不同值,启用定时器,四个变量同时减
回复

使用道具 举报

板凳
ID:213173 发表于 2018-11-29 10:50 | 只看该作者
回复

使用道具 举报

地板
ID:405193 发表于 2018-11-29 11:10 | 只看该作者
ssk7793 发表于 2018-11-29 10:22
这个应该没问题,定义四个变量时间,初始不同值,启用定时器,四个变量同时减

您好,就是四个减过程我不会写,能给我写一段样例吗?我是刚学单片机2个多月,非常感谢您了。
回复

使用道具 举报

5#
ID:405193 发表于 2018-11-29 11:12 | 只看该作者
ssk7793 发表于 2018-11-29 10:22
这个应该没问题,定义四个变量时间,初始不同值,启用定时器,四个变量同时减

您好,初始值我会,就是中断里减的过程我不会,我只会加,抱歉了,不要见笑了,我刚学不久。
回复

使用道具 举报

6#
ID:405193 发表于 2018-11-29 11:16 | 只看该作者
wulin 发表于 2018-11-29 10:50
查看wulin的回帖:http://www.51hei.com/bbs/dpj-136631-1.html

您好,这个链接里面没有在中断里执行减操作的方法,能给我一个减操作的例子吗?非常感谢。
        if(numrelays==YSA)   //A的延时时间
                  {
                        numrelays--;
                        if(!numrelays)
                                {执行语句}
                }
其它三个一样一样这样写,这样可以吗?
回复

使用道具 举报

7#
ID:424598 发表于 2018-11-29 15:12 来自手机 | 只看该作者
减和加不是一样的么?比如加是i++,那么减就是i--,四个变量由于初始值不一样,所以放在一起减,没问题啊。i1--;i2--;i3--;i4--;
回复

使用道具 举报

8#
ID:405193 发表于 2018-11-29 16:14 | 只看该作者
ssk7793 发表于 2018-11-29 15:12
减和加不是一样的么?比如加是i++,那么减就是i--,四个变量由于初始值不一样,所以放在一起减,没问题啊。 ...

非常感谢您的回复,现在问题是中断同一时间里只能执行一个,其它的三个都不工作,不管是加还是减。我想四个只要检测到信号,就开始延时,用两个中断可以实现2路,就是想用一个中断实现多路不行。
回复

使用道具 举报

9#
ID:405193 发表于 2018-11-29 19:00 | 只看该作者
ssk7793 发表于 2018-11-29 15:12
减和加不是一样的么?比如加是i++,那么减就是i--,四个变量由于初始值不一样,所以放在一起减,没问题啊。 ...

非常感谢师傅,已经修改好了,不过我只会用++,到达时间执行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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