怎样让52单片机不同引脚同时输出相同周期不同占空比的PWM信号
答案:1 悬赏:30 手机版
解决时间 2021-03-19 20:02
- 提问者网友:轻浮
- 2021-03-19 14:53
怎样让52单片机不同引脚同时输出相同周期不同占空比的PWM信号
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-19 16:22
#include
#define uchar unsigned char
#define uint unsigned int
uint pwm,tper,times=0;
uchar tab[4]={20,40,60,80};
sbit pulse=P1^0;
bit flag;
void t0isr() interrupt 1
{
flag=~flag;
pulse=~pulse;
if(flag)
{
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
}
if(!flag)
{
TH0=(65536-(tper-pwm))/256;
TL0=(65536-(tper-pwm))%256;
}
}
void t1isr() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
times++;
pwm=tper*tab[(times/200)%4]/100;
}
main()
{
TMOD=0x11;
tper=1000;
pwm=tper*tab[0]/100;
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
ET0=1;
ET1=1;
EA=1;
while(1);
}
#define uchar unsigned char
#define uint unsigned int
uint pwm,tper,times=0;
uchar tab[4]={20,40,60,80};
sbit pulse=P1^0;
bit flag;
void t0isr() interrupt 1
{
flag=~flag;
pulse=~pulse;
if(flag)
{
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
}
if(!flag)
{
TH0=(65536-(tper-pwm))/256;
TL0=(65536-(tper-pwm))%256;
}
}
void t1isr() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
times++;
pwm=tper*tab[(times/200)%4]/100;
}
main()
{
TMOD=0x11;
tper=1000;
pwm=tper*tab[0]/100;
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
ET0=1;
ET1=1;
EA=1;
while(1);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯