最近想写个用PWM 做全彩呼吸灯,实现三路随机数字(比如R10,G180,B200)特定色彩呼吸程序,根据范例程序调试 输出三路PWM是可以的,但是呼吸程序怎么加进去呢,特定颜色三路想要同时到达(比如1S),需要怎么计算呢??下面代码是可以单路呼吸到最大值void main()
{
Init_PWM();
while(1)
{
modify_duty();
}
}
void Init_PWM() //
{
CMOD = 0X02; //
CCAPM0 = 0X42; //
PCA_PWM0 = 0X00; //
CCAP0L = 0x00; //
CCAP0H = 0X00; //
PCA_PWM1 = 0x00;
CCAP1L=0x00;
CCAP1H=0x00;
CCAPM1=0x42;
PCA_PWM2 = 0x00;
CCAP2L=0x00;
CCAP2H=0x00;
CCAPM2=0x42;
CL=0; //
CR =1; //
}
void modify_duty()
{
int i;
for(i=255;i>=1;i--)
{
CCAP0H = i;
CCAP1H = 0XFF;
CCAP2H = 0XFF;
delay();
}
for(i=0;i<255;i++)
{
CCAP0H = i;
CCAP1H = 0XFF;
CCAP2H = 0XFF;
delay();
}
for(i=255;i>=1;i--)
{
CCAP1H = i;
CCAP0H = 0XFF;
CCAP2H = 0XFF;
delay();
}
for(i=0;i<255;i++)
{
CCAP1H = i;
CCAP0H = 0XFF;
CCAP2H = 0XFF;
delay();
}
for(i=255;i>=1;i--)
{
CCAP2H = i;
CCAP0H = 0XFF;
CCAP1H = 0XFF;
delay();
}
for(i=0;i<255;i++)
{
CCAP2H = i;
CCAP0H = 0XFF;
CCAP1H = 0XFF;
delay();
}
}
|