详细注解的PWM c程序初学者适用
#include "stc2052.h"
unsigned int pulse_width_MAX = 0xF0; // ;PWM脉宽最大值, 占空比 = 93.75%
unsigned int pulse_width_MIN = 0x10; // ;PWM脉宽最小值, 占空比 = 6.25%
unsigned int step =0x38;
unsigned int pulse_width;
unsigned int i,j;
unsigned char state;
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; //清0计数器
CH=0X00;
//下面设置模块0为 8 位PWM输出模式, PWM 无需中断支持。脉冲在P3.7(第11脚)输出
CCAPM0=0x42; //PCA(计数器阵列)模块0的工作模式 :8位PWM工作模式
PCA_PWM0=0x00; //赋值为0,pwm才能有高电平输出
//下面设置模块1为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.5(第9脚)输出
CCAPM1=0x42; //PCA(计数器阵列)模块1的工作模式 :8位PWM工作模式
PCA_PWM1=0x00; //赋值为0,pwm才能有高电平输出
EPCA=1; // 开 PCA 中断
EA =1; // 开总中断
CR=1; //将PCA 计数器打开
}
pwm相关文章:pwm原理
评论