求51单片机实现PWM的程序
发布网友
发布时间:2022-04-30 01:38
我来回答
共3个回答
热心网友
时间:2022-04-30 03:01
#include <stc51.h>
int X ; // PWM的周期 单位:us微秒
int ty; //占空比变量
void main()
{
X=2000; //周期100uS 即PWM的频率=10KHZ
ty=50;//占空比 50%
TMOD=0X11;
EA=1;
ET0=1;
ET1=1;
TH0=(65535-ty)/256;//定时器0 改变占空比
TL0=(65535-ty)%256;
TH1=(65535-X)/256 ; //定时器1 改变频率
TL1=(65535-X)%256;
TR0=1;
TR1=1;
while(1) ;
}
void timer0_isr() interrupt 1 //定时器0;改变占空比
{
TR0=0;
P1=0X00;
++ty;
if(ty>=X-1) ty=1;
}
void timer1_isr() interrupt 3 //定时器1 ;改变PWM频率 即周期
{
P1=0XFF;
TH1=(65535-X)/256; //改变周期
TL1=(65535-X)%256;
TH0=(65535-ty)/256;//改变占空比
TL0=(65535-ty)%256;
TR0=1;
//TR1=1;
}
热心网友
时间:2022-04-30 04:19
改用AVR单片机吧,是自带的功能,速度是51的10倍以上
热心网友
时间:2022-04-30 05:54
还搞不定吗?