详细注解的PWMc程序初学者适用

来源:本站
导读:目前正在解读《详细注解的PWMc程序初学者适用》的相关信息,《详细注解的PWMc程序初学者适用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《详细注解的PWMc程序初学者适用》的详细说明。
简介:程序功能说明程序在P3.7和P3.5都输出3.9k的PWM信号其脉冲宽度从6.25% 慢慢递增到93.75%然后在从93.75%递减到6.25%程序完全由本人自己写的,非网摘。这也是本人自己写的第一个比较完善的程序,现分享给大家,希望给有心学习的初学者!~

#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 计数器打开

}

void zhankongbi()

{

pulse_width=pulse_width_MIN;

while(1)

{

st();

if(state==0)

{

pulse_width+=step;

}

if(state==1)

{

pulse_width-=step;

}

CCAP0H=pulse_width; // 模块0站空比的比较值

CCAP1H=pulse_width; // 模块1站空比的比较值

delay1ms(1000);

}

}

void delay1ms(unsigned int TIME)

{

for(i=0;i

for(j=0;j<400;j++)

{;}

}

void st()

{

if(pulse_width==pulse_width_MIN)

state=0;

if(pulse_width==pulse_width_MAX)

state=1;

}

程序功能说明程序在P3.7和P3.5都输出3.9k的PWM信号其脉冲宽度从6.25% 慢慢递增到93.75%然后在从93.75%递减到6.25%程序完全由本人自己写的,非网摘。这也是本人自己写的第一个比较完善的程序,现分享给大家,希望给有心学习的初学者!~

提醒:《详细注解的PWMc程序初学者适用》最后刷新时间 2024-03-14 01:11:04,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《详细注解的PWMc程序初学者适用》该内容的真实性请自行鉴别。