求51单片机实现PWM的程序
答案:3 悬赏:0 手机版
解决时间 2021-02-24 11:04
- 提问者网友:记得曾经
- 2021-02-24 04:13
求51单片机实现PWM的程序
最佳答案
- 五星知识达人网友:千夜
- 2021-02-24 04:44
#include
int X ; // PWM的周期 单位:us微秒
int duty; //占空比变量
void main()
{
X=2000; //周期100uS 即PWM的频率=10KHZ
duty=50; //占空比 50%
TMOD=0x11;
EA=1;
ET0=1;
ET1=1;
TH0=(65535-duty)/256; //定时器0 改变占空比
TL0=(65535-duty)%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;
++duty;
if(duty>=X-1) duty=1;
}
void timer1_isr() interrupt 3 //定时器1 ;改变PWM频率 即周期
{
P1=0xFF;
TH1=(65535-X)/256; //改变周期
TL1=(65535-X)%256;
TH0=(65535-duty)/256; //改变占空比
TL0=(65535-duty)%256;
TR0=1;
//TR1=1;
}
int X ; // PWM的周期 单位:us微秒
int duty; //占空比变量
void main()
{
X=2000; //周期100uS 即PWM的频率=10KHZ
duty=50; //占空比 50%
TMOD=0x11;
EA=1;
ET0=1;
ET1=1;
TH0=(65535-duty)/256; //定时器0 改变占空比
TL0=(65535-duty)%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;
++duty;
if(duty>=X-1) duty=1;
}
void timer1_isr() interrupt 3 //定时器1 ;改变PWM频率 即周期
{
P1=0xFF;
TH1=(65535-X)/256; //改变周期
TL1=(65535-X)%256;
TH0=(65535-duty)/256; //改变占空比
TL0=(65535-duty)%256;
TR0=1;
//TR1=1;
}
全部回答
- 1楼网友:三千妖杀
- 2021-02-24 07:05
还搞不定吗?
- 2楼网友:痴妹与他
- 2021-02-24 06:07
改用AVR单片机吧,是自带的功能,速度是51的10倍以上
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯