#include<reg52.h>
sfr 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;
};
}