51单片机输出PWM的程序
时间: 2024-05-19 18:13:15 浏览: 81
以下是51单片机输出PWM的程序:
#include <reg51.h>
sbit LED = P1^0; //LED引脚
void main()
{
TMOD = 0x01; //定时器0工作在模式1下
TH0 = 0xFC; //定时器初值
TL0 = 0x67;
ET0 = 1; //开启定时器0中断
EA = 1; //开启总中断
TR0 = 1; //启动定时器0
while (1)
{
//无限循环
}
}
void timer0() interrupt 1 //定时器0中断服务程序
{
static unsigned char count = 0; //计数器
if (count < 50) //占空比为50%
{
LED = 1;
}
else
{
LED = 0;
}
count++; //计数器加1
if (count == 100) //计数器重置
{
count = 0;
}
TH0 = 0xFC; //重新设置定时器初值
TL0 = 0x67;
}
在该程序中,定时器0被设置为工作在模式1下,即定时器计数器从0开始计数,直到达到设定的初值后重新从0开始计数,并产生中断。在中断服务程序中,通过计数器控制LED引脚的电平,从而实现PWM输出。计数器的值从0到49时,LED引脚为高电平,占空比为50%;计数器的值从50到99时,LED引脚为低电平,占空比为50%。程序中的定时器初值可以根据需要调整,以改变PWM输出的频率。
阅读全文