#include "stc2052.h" unsigned int pulse_width = 0x80; //用与占空比赋值 unsigned int i,j; void PCAinit(); //PCA模块初始化 void delay1ms(unsigned int TIME); //1ms延时程序(大概是1ms) void zhankongbi(); //调节占空比 void st(); //用来表示pulse_width的状态函数
void main(void) { EA=0; PCAinit(); //初始化PCA定时器 zhankongbi(); }
void PCAinit() { CMOD=0x80; //PCA 在空闲模式下停止 PCA 计数器工作 //PCA 时钟模式为fosc/12 //禁止 PCA 计数器溢出中断 CCON=0x00; //禁止 PCA 计数器工作, 清除中断标志、计数器溢出标志 CL=0x00; //计数器初值 频率3.9k CH=0x00; // //下面设置模块0为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.7(第11脚)输出 CCAPM0=0x42; //PCA(计数器阵列)模块0的工作模式 :8位PWM工作模式 PCA_PWM0=0x00; //赋值为0,pwm才能有高电平输出
EPCA=1; // 开 PCA 中断 EA =1; // 开总中断 CR=1; //将PCA 计数器打开 } void zhankongbi() { CCAP0H=pulse_width; // 模块0站空比的比较值 while(1){ delay1ms(2); CR = ~CR; if(CR==0) PCA_PWM0=0x03; else PCA_PWM0=0x00; } } void delay1ms(unsigned int TIME) { for(i=0;i<TIME;i++) for(j=0;j<400;j++) {;} }
|