求AT89C52输出的pwm方波程序
1个回答
展开全部
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
sbit PWM = P2^0; //PWM输出端口
uint count=0, preset=0; //定时器计数和预设值
void timer_init(){
TMOD = 0x01;
TH0 = 0xFF;
TL0 = 0x9C;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer0_irpt()interrupt 1
{
TH0 = 0xFF;
TL0 = 0x9C;
count++;
if(count+1 <= preset){
PWM = 1;
}else{
PWM = 0;
}
if(count == 200){
count = 0;
}
}
void main(){
timer_init();
while(1){
;
}
}
用这个程序,只要preset的值取0到200即可完成占空比0~100%的PWM波。读懂程序了以后就可以修改频率和分辨率了,这个是我控制舵机的,能够正常工作
#define uchar unsigned char
#define uint unsigned int
sbit PWM = P2^0; //PWM输出端口
uint count=0, preset=0; //定时器计数和预设值
void timer_init(){
TMOD = 0x01;
TH0 = 0xFF;
TL0 = 0x9C;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer0_irpt()interrupt 1
{
TH0 = 0xFF;
TL0 = 0x9C;
count++;
if(count+1 <= preset){
PWM = 1;
}else{
PWM = 0;
}
if(count == 200){
count = 0;
}
}
void main(){
timer_init();
while(1){
;
}
}
用这个程序,只要preset的值取0到200即可完成占空比0~100%的PWM波。读懂程序了以后就可以修改频率和分辨率了,这个是我控制舵机的,能够正常工作
leipole
2024-10-21 广告
2024-10-21 广告
上海雷普电气有限公司(以下简称雷普电气)是一家集研发、生产、销售、服务为一体的科技型企业。一直以来,公司秉承“以科技改变生活,为社会创造美好”的理念,旗下“低压电源为主导” 的电联接件及接口模块系列、继电耦合系列、风扇及过滤器系列、机床控制...
点击进入详情页
本回答由leipole提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询