STC12C5A60S2单片机 PWM占空比怎么算出来??

#include<reg51.h>
#include<intrins.h>
#define FOSC 11000000L
sfr CCON=0XD8;
sbit CCF0=CCON^0;
sbit CCF1=CCON^1;
sbit CR=CCON^6;
sbit CF=CCON^7;
sfr CMOD=0XD9;
sfr CL=0XE9;
sfr CH=0XF9;
sfr CCAPM0=0XDA;
sfr CCAP0L=0XEA;
sfr CCAP0H=0XFA;
sfr CCAPM1=0XDB;
sfr CCAP1L=0XEB;
sfr CCAP1H=0XFB;
sfr PCAPWM0=0XF2;
sfr PCAPWM1=0XF3;
void main()
{
CCON=0;
CL=0;
CH=0;
CMOD=0X02;

CCAP0H=CCAP0L=0X80; 这里0X80是占空比是50%,要是要50.5%呢,怎么算,有公式么?
CCAPM0=0X42;
CCAP1H=CCAP1L=0X80;
CCAPM1=0X42;
CR=1;
while(1);
}

CCAP计数器CL计满是256,如果 CCAP0H=0X80=128,即计到128时PWM输出管脚翻转,所以占空比是128/256=50%
想让占空比等于50.5 可让CCAP1H=CCAP1L=0X81=129;129/256=50.4%
由于该计数器是8位的,因此占空比的调节精度是1/256,即0.39%或0.4%,50.4%最接近50.5
所以可输入129,公式自己推 很简单的
温馨提示:答案为网友推荐,仅供参考