请教: MCU:STC12C5A60S2 sfr AUXR1 = 0xA2; //切换 PCA /PWM 口寄存器 sfr CCON = 0xD8; // sfr CMOD = 0xD9; // sfr CCAPM0 = 0xDA; // sfr CCAPM1 = 0xDB; // sfr CL = 0xE9; // sfr CH = 0xF9; // sfr CCAP0L = 0xEA; // sfr CCAP0H = 0xFA; // sfr CCAP1L = 0xEB; // sfr CCAP1H = 0xFB; // sfr PCA_PWM0 = 0xF2; // sfr PCA_PWM1 = 0xF3; //
void main() { P1M0 = 0x00; //P1口用传统51准双向口模式 P1M1 = 0x00; CMOD = 0x10; //空闲模式下,PCA 计数器停止工作 //PCA 时钟源为系统时钟 Fosc/12 CCON = 0x00; //初始化 CCON CH = 0x00; //PCA计数器初始值高8位 CL = 0x00; //PCA计数器初始值低8位 CCAPM0 = 0x42; //8 位 PWM,无中断,使能 CEXn 脚作脉宽调节输出 CCON |= 0x40; //CR = 1 启动 PCA 计数器 CCAP0H = 0x00; CCAP0L = 0x00; //当出现捕获或比较时,它们用来保存16 位的计数值。 // 当PCA 模块用在PWM 模式中时,它们用来控制输出的 //占空比。CCAP0H.CCAP0L分别为高低8位,组合使用 while(1) { ; } }
1: 如果我希望占空比为 20% 那么 CCAP0H,CCAP0L 的值要设置为多少?
2: 资料上一个例子: CCAP0L = 0x00; //Set the initial value same as CCAP0H CCAP0H = 0xc0; //25% Duty Cycle 这个 25% 是怎么算出来的?
3: 我只要设置了 CCAP0H,CCAP0L,并且启动 CR(PCA 计数器启动) 那么就可以自动输出 PWM 了,是不?
4: 如果我想调整占空比,那么只要重新设置 CCAP0H,CCAP0L, 是吗?
谢谢! |