51单片机pwm示例程序
时间: 2023-10-28 09:35:28 浏览: 101
以下是51单片机PWM示例程序:
#include<reg52.h>
sbit PWM=P1^0; // 定义PWM输出引脚
void main()
{
TMOD=0x01; // 定时器0工作在模式1:16位定时器
TH0=0xFC; // 65536-50000,定时器0初值,50ms
TL0=0x18;
TR0=1; // 启动定时器0
ET0=1; // 允许定时器0中断
EA=1; // 全局中断允许
while(1)
{
// 在主循环中修改PWM占空比
for(int i=0;i<100;i++)
{
PWM=1; // PWM输出高电平
delay_us(i); // 延时,控制PWM占空比
PWM=0; // PWM输出低电平
delay_us(100-i); // 延时,控制PWM占空比
}
}
}
void Timer0_ISR() interrupt 1 // 定时器0中断服务函数
{
TH0=0xFC; // 65536-50000,定时器0初值,50ms
TL0=0x18;
PWM=!PWM; // 反转PWM输出引脚电平
}
void delay_us(unsigned int us) // 微秒级延时函数
{
while(us--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
阅读全文