#includesfr CCON =0xD8; //PCA control register sfr CMOD =0xD9; sfr CL =0xe9; sfr CH =0xF9; sfr CCAP0L=0xea; sfr CCAP1L=0xeb; sfr CCAP0H=0xfa; sfr CCAP1H=0xfb; sfr CCAPM0=0xda; sfr CCAPM1=0xdb; sbit CR=0xde; //位寻址 void main(void) { CMOD=0x02; //使用系统时钟,时钟输入源频率fosc/2。PWM频率=fosc/2/256 /************************************ 7 6 5 4 3 2 1 0 CIDL - - - cps2 CPS1 CPS0 ECF CIDL: =0时,空闲模式下PCA计数器继续工作;=1时,空闲模式下PCA计数器停止工作。 CPS2,CPS1,CPS0:PCA计数脉冲选择。010,定时器0的溢出,可以实现可调频率的PWM输出。 ECF: =1时,使能寄存器CCON CF位的中断;=0时,禁止该功能。 ***************************************/ CL=0x00; CH=0x00; CCAP0L=0xc0; //当CL小于CCAP0L时,输出为低;大于时,输出为高。 CCAP0H=0x7f; //当CL由ff变为00溢出时,CCAP0H装载到CCAP0L中,实现无干扰的更新PWM。 CCAP1L=0xc0; //当CL小于CCAP1L时,输出为低;大于时,输出为高。 CCAP1H=0xc0; //当CL由ff变为00溢出时,CCAP1H装载到CCAP1L中,实现无干扰的更新PWM。 CCAPM0=0X42; //使能PWM模式,PWM0=1,ECOM0=1 CCAPM1=0X42; //使能PWM模式,PWM1=1,ECOM1=1 CR=1; //启动PCA计数器 while(1) { CCAP0H=RF4432_TxRxBuf[4]; //此处改变占空比 CCAP1H=RF4432_TxRxBuf[5]; CCAP2H=RF4432_TxRxBuf[6]/2.5; }; }
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』