AT89C51RC2单片机输出两路PWM,用于控制DC-AC半桥逆变电路程序
时间: 2023-05-27 15:07:33 浏览: 85
#include<AT89C51RC2.h>
#include<stdio.h>
sbit pwm1=P2^2; //PWM1输出引脚
sbit pwm2=P2^3; //PWM2输出引脚
void delay(unsigned int t) //延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<125;j++);
}
}
void main()
{
unsigned int i;
TMOD=0x01; //设置定时器0为16位定时器
TH0=0x3C; //计时器初值,1ms
TL0=0xAF;
ET0=1; //使能定时器0中断
EA=1; //全局中断使能
TR0=1; //启动定时器0
while(1)
{
for(i=0;i<100;i++) //PWM1占空比从0到100
{
pwm1=1; //输出高电平
delay(i);
pwm1=0; //输出低电平
delay(100-i);
}
for(i=0;i<100;i++) //PWM1占空比从100到0
{
pwm1=1; //输出高电平
delay(100-i);
pwm1=0; //输出低电平
delay(i);
}
for(i=0;i<100;i++) //PWM2占空比从0到100
{
pwm2=1; //输出高电平
delay(i);
pwm2=0; //输出低电平
delay(100-i);
}
for(i=0;i<100;i++) //PWM2占空比从100到0
{
pwm2=1; //输出高电平
delay(100-i);
pwm2=0; //输出低电平
delay(i);
}
}
}
void timer0_isr() interrupt 1 //定时器0中断服务函数
{
TH0=0x3C; //重新赋初值,1ms
TL0=0xAF;
}
阅读全文