_奶咖君_ 发表于 2024-11-28 17:13:43

...你一直在中函数的循环里面初始化定时器,,,想要干嘛?

wszjw2 发表于 2024-11-28 17:13:46

王昱顺 发表于 2024-11-28 17:10
1.如果想定时比较长的,可以使用单片机的RTC功能。
2.一般是用来做PPM(脉宽控制,舵机常见控制信号)的 ...

好的好的,我把定时器问题学明白了就去整RTC

wszjw2 发表于 2024-11-28 17:14:25

_奶咖君_ 发表于 2024-11-28 17:13
...你一直在中函数的循环里面初始化定时器,,,想要干嘛?

把初始化放外面也没用,也是亮起来就灭不下去了

wlhet 发表于 2024-11-28 17:14:25

这能行?

wszjw2 发表于 2024-11-28 17:15:47

wlhet 发表于 2024-11-28 17:14
这能行?

放外面也没用所以放里面试试{:4_167:}

_奶咖君_ 发表于 2024-11-28 17:16:44

而且你是肉眼看小灯么?你能看到ms 或者 us 级别的小灯亮灭么0.0

wszjw2 发表于 2024-11-28 17:22:04

_奶咖君_ 发表于 2024-11-28 17:16
而且你是肉眼看小灯么?你能看到ms 或者 us 级别的小灯亮灭么0.0

{:4_177:}懂了

soma 发表于 2024-11-28 18:32:00

wszjw2 发表于 2024-11-28 17:11
刚刚发现ISP的程序还是不行灯一直亮着

time1_init()放while前面, P20=~P20;时间太快根本反应不过来啊,表现是led长亮。

wszjw2 发表于 2024-11-29 15:56:12

本帖最后由 wszjw2 于 2024-11-29 16:06 编辑

soma 发表于 2024-11-28 18:32
time1_init()放while前面, P20=~P20;时间太快根本反应不过来啊,表现是led长亮。 ...
嗯嗯!这个问题解决了,但是关于应用方面有点问题。现在是有四个模式,其中只有一个模式需要用到T2定时器,其他模式下需要关断计时,我目前的程序是这么写的,定时器方面没啥问题,就是不知道该怎么设置才能在切换模式时就把定时器给一起关了while(1)
      {                        
                if(mode==0)//P27常暗
                {
                P25=0;P24=1;P23=1;P22=1;
                P27=1;
                }
                else if(mode==1)//P27常亮
                {
                        P27=0;
                        P25=1;P24=0;P23=1;P22=1;
                }
                else if(mode==2)//P27每2分钟亮15秒
                {
                        P25=1;P24=1;P23=0;P22=1;
                        
                        AUXR |=0x10;
                }
                else if(mode==3)//P35按下时P27亮15秒
                {
                        P25=1;P24=1;P23=1;P22=0;      
                        
                        if(P35==0)
                        {
                              P27=0;
                              TR0=1;
                        
                        }

void exti0() interrupt 0 //
{      
      P27=1;
      mode++;
      P26=~P26;
      if(mode>4)mode=0;
}

void time0() interrupt 1//15秒后打开T2和P27,关停T0
{
      static u16 i,MS;//定义静态变量i
      i++;
      TL0=0xE0;
      TH0=0xB1;
      if(i==100)
      {
                P21=~P21;
                MS++;
                i=0;
      }
      if(MS>15)
      {
                P27=1;
                MS=0;
                AUXR |= 0x10;
                TR0=0;
               
      }
}

void time2() interrupt 12 //定时器2中断函数,2分钟后打开T0,同时关停T2
{
      sec++;
      P20=~P20;
      if(sec>15)
      {
                P27=0;
                sec=0;
                TR0 = 1;
                AUXR ^= 0x10;
      }
}

wszjw2 发表于 2024-11-29 15:57:46

_奶咖君_ 发表于 2024-11-28 17:05
1.定时15分钟这个 可以这么做。通过计数变量的方式你可以定义到天荒地老
2.你说的这个功能我没有测试过, ...

能否帮忙看看最新的代码{:4_197:}一点点应用方面的问题
页: 1 [2] 3
查看完整版本: 【已解决】为何ISP中定时器计算器给的程序没有用