想做一个通过串口中断改变PWM输出频率,PCA时钟源采用T0溢出率,STC官方PDF资料上有写T0溢出率可以1-256级分频。关于分频我实在不理解,分频怎样实现?STC官方资料有这么一个公式PWM频率=PCA时钟输入源频率/256。PCA时钟源可以从以下8种选择一种:SYSclk,SYSclk/2,SYSclk/4,SYSclk/6,SYSclk/8,SYSclk/12,定时器0溢出,ECI/P3.4输入。
下面是我写的代码
void main()
{
AUXR |=0x80;//采用1T模式
TMOD |=0x02;//采用定时器0 模式2 8位自动重装
TH0 =256-100;//初始值
TR0=1;//开定时器0
CMOD |=0x04;//选用PCA时钟源位T0溢出率
CL=0;
CH=0;
CR=1;//开PCA计数
CCAP1L = 0x80; //Set the initial value same as CCAP1H
CCAP1H = 0x80; //25% Duty Cycle
CCAPM1 = 0x42; //0x42 Setup PCA module 1 in PWM mode
while(1);
}
上面的代码是T0溢出没有分频,我现在想256分频这个程序应该怎么写? |