标题: 51单片机定时器问题,能不能在定时器里面加间隔时间? [打印本页]

作者: mojieyu    时间: 2022-11-5 04:20
标题: 51单片机定时器问题,能不能在定时器里面加间隔时间?
刚开始学单片机定时器,现在是led点亮50MS,熄灭50MS循环,能不能写成led点亮3秒,熄灭1秒,循环呢?感谢~~~
void T0Init0() interrupt 1
{
        static uchar i;
        TH0 = (65535-5000)/256;        
        TL0 = (65535-5000)%256;
        i++;
        if(i==200)
        {
        led=~led;

          i=0;/
        }
}

作者: DoneDone    时间: 2022-11-5 07:59
可以在中断中修改
作者: 非凡科技    时间: 2022-11-5 08:03
总时间4秒小于等于3点亮否则熄灭,到达4秒时间归零
作者: yzwzfyz    时间: 2022-11-5 08:13
行啊,再加一个变量N,每次中断N+1,当N=某个数时,反转LED灯,并将N复0,这样就将中断时间扩大了N倍。很简单的事,为何想不到呢?
作者: angmall    时间: 2022-11-5 08:23
用一个定时器即可,将定时器设置成标准节拍,如1MS。需要多少定时时间,在定时器中断服务程序中计数就可以了。

http://www.51hei.com/bbs/forum.p ... 494&pid=1099428

作者: yueguang3048    时间: 2022-11-5 08:43
去定时器终端里面加计数
作者: Hephaestus    时间: 2022-11-5 21:05
i马上就满了,暂时不能改,TH0、TL0的初值可以改到满足你的要求。
作者: mojieyu    时间: 2022-11-6 01:59
angmall 发表于 2022-11-5 08:23
用一个定时器即可,将定时器设置成标准节拍,如1MS。需要多少定时时间,在定时器中断服务程序中计数就可以 ...

感谢 大佬
作者: zhxiufan    时间: 2022-11-6 08:48
void T0Init0() interrupt 1
{
        static uchar i;
        TH0 = (65535-50000)/256;        
        TL0 = (65535-50000)%256;
        i++;
        if(i<=60)
        {
                led=0;
        }
        else if(i>=60 && i<80)
        {
                led=1;
        }
        else i=0;
}

作者: wulin    时间: 2022-11-6 10:12
void T0Init0() interrupt 1
{
        static uchar i,j;
        TH0 = (65536-50000)/256;
        TL0 = (65536-50000)%256;
        i++;
        if(i==20)
        {
                i=0;
                j++;
                if(j==4)
                        j=0;
        }
        if(j==0)led=1;
        else led=0;
}
作者: mojieyu    时间: 2022-11-11 02:50
zhxiufan 发表于 2022-11-6 08:48
void T0Init0() interrupt 1
{
        static uchar i;

学习了 感谢 大佬 ~~
作者: mojieyu    时间: 2022-11-11 02:51
wulin 发表于 2022-11-6 10:12
void T0Init0() interrupt 1
{
        static uchar i,j;

学习了 感谢 大佬 ~~
作者: 君工创    时间: 2022-11-11 11:44
可以改成多种节拍输出。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1