标题:
一段单片机pwm调光里面的程序看不明白了
[打印本页]
作者:
wifen
时间:
2021-9-28 15:40
标题:
一段单片机pwm调光里面的程序看不明白了
void InterruptTimer1() interrupt 3
{static bit dir = 0;
static unsigned char index = 0;
unsigned char code table[13] = { //占空比调整表5, 18, 30, 41, 51, 60, 68, 75, 81, 86, 90, 93, 95}
TH1 = T1RH; //重新加载 T1 重载值TL1 = T1RL;
AdjustDutyCycle(table[index]); //调整 PWM 的占空比if (dir == 0) //逐步增大占空比{
index++;
if (index >= 12)
{
dir = 1;
}
}
else //逐步减小占空比{
index--;
if (index == 0)
{
dir = 0;
}
}
这个动态调整dc占空比的话,里面那个dir第一次进来的时候=0 ,第二次为1, dir又为0 ,这个占空比不就永远只在两个数之间循坏了?
作者:
yzwzfyz
时间:
2021-9-28 16:11
if (dir == 0) 被你整到上一行去了!
作者:
wifen
时间:
2021-9-28 16:48
yzwzfyz 发表于 2021-9-28 16:11
if (dir == 0) 被你整到上一行去了!
.......哈
作者:
lkc8210
时间:
2021-9-28 16:50
排版问题
void InterruptTimer1() interrupt 3
{ static bit dir = 0;
static unsigned char index = 0;
unsigned char code table[13] = { //占空比调整表
5, 18, 30, 41, 51, 60, 68, 75, 81, 86, 90, 93, 95
}
TH1 = T1RH; //重新加载 T1 重载值
TL1 = T1RL;
AdjustDutyCycle(table[index]); //调整 PWM 的占空比
if (dir == 0) //逐步增大占空比
{
index++;
if (index >= 12)
{
dir = 1;
}
}
else //逐步减小占空比
{
index--;
if (index == 0)
{
dir = 0;
}
}
}
复制代码
T=0:
dir=0;
index=0;
AdjustDutyCycle(5);
T=1:
dir=0;
index=1;
AdjustDutyCycle(18);
。。。
T=11:
dir=0;
index=11;
AdjustDutyCycle(93);
T=12:
dir=0;
index=12;
AdjustDutyCycle(95);
T=13:
dir=1;
index=11;
AdjustDutyCycle(93);
T=14:
dir=1;
index=10;
AdjustDutyCycle(90);
。。。
作者:
QAZW
时间:
2021-9-28 17:28
dir是flag吧,table[index]才对应占空比
作者:
zhanghoub
时间:
2021-9-30 15:50
我决定dir是PMW端口.
作者:
rayin
时间:
2021-10-6 08:13
这段代码应该是实现呼吸灯效果,亮度达到最大时dir反转为亮度逐渐减小,到了亮度最低值时,dir再反转为亮度逐渐增加,如此循环。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1