微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于定时中断的问题

关于定时中断的问题

时间:10-02 整理:3721RD 点击:
请教各位一个定时中断如何设置多个延时?

多用几个i++,k++。m++。

使用定时器T0和T1可以实现2个定时

如果两个定时不够用,该怎么做呢?

用一个全局变量,第一次进中断,先关中断,来个if全局变量判断,在if{}里面设置项要的时间,最后在开。
理论上是可以的

定时器中断的时候,设置多个参数不就可以了吗?
比如   每次中断  x y z 都+1
x 100的时候,一个操作,然后清零
y 125的时候,一个操作,然后清零
z 300的时候,一个操作,然后清零
这样不就3个了?

这样子的话,y=125的时候如何保证,x=100的时候不动作?

现在的情况不就是100 125 150的时候动作吗?
而且由于用的是3个变量,根本不会相互影响,因为每个中断函数里,进行什么操作,每个参数是否归0,还是变成多少,都可以在中断函数里进行区分。
只需要在中断函数里对每个变量进行判断,根据判断结果进行操作就行了。
比如,现在有个要求,LED1每100个中断变化一次,LED2每125个,LED3每150个,初始化时x y z都为0,每个中断函数里都+1,每次进中断,判断x?=100,y?=125,z?=150,如果是,相应的LED=~LED,然后相应的参数归0,不就可以了?

void timer0(void)interrupt 1 using 1
{
        count0++;
        if(count0==20)
        {
                count0=0;
                n++;
                if(n==2)
                {
                        p16=1;                       
              }
                else if(n==4)
                {
                        n=0;p16=0;TR0=0;
              }
       }
        else
        {TH0=0x4c;TL0=0x00;}
}
我用这种方法可以对一个按键两段定时,如果再加一个按键的话就不知道如何弄了

你这种方法是可以的,呵呵,非常感谢!

baozhongh,厉害,赞一下

现在还有个问题,比如按键1对应X,按键2对应Y,按键3对应Z,到按下按键1,X快到100的时候比如90,按下按键2,这样子的话,按键2的延时就只有35就没有125了。

我晕,你不是要x y z独立吗,y只管自己,每到125就清0,别的怎么样跟它没有关系的
基本方法就是这样,具体问题要具体处理啊,不过,中断函数里都可以判断区分的,逻辑关系想明白了,把各个情况都考虑一下,看看程序的逻辑关系符合不符合就行啦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top