_奶咖君_
发表于 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:}一点点应用方面的问题