最近想写个用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();
- }
-
- }
|