AT89C51RC2单片机输出一个频率为30KHz,占空比为70的PWM程序
时间: 2023-05-27 10:07:34 浏览: 97
PWM.zip_C51 PWM 频率_pwm频率可调_单片机产生pwm_可调pwm_频率占空比
5星 · 资源好评率100%
以下是AT89C51RC2单片机输出频率为30KHz,占空比为70%的PWM程序:
#include <reg51.h>
sbit PWM = P2^1; // PWM输出口
void main()
{
TMOD |= 0x01; // 设置Timer0为模式1,16位定时器
TH0 = 0x3C; // 设置Timer0的高8位为60
TL0 = 0xB0; // 设置Timer0的低8位为176
ET0 = 1; // 允许Timer0中断
EA = 1; // 全局中断使能
TR0 = 1; // 启动Timer0
while(1)
{
// 占空比为70%,即高电平持续时间为7/10个周期,低电平持续时间为3/10个周期
PWM = 1; // 设置PWM输出口为高电平
delay(7); // 延时7个Timer0周期
PWM = 0; // 设置PWM输出口为低电平
delay(3); // 延时3个Timer0周期
}
}
void timer0() interrupt 1 // Timer0中断服务程序
{
TH0 = 0x3C; // 重新设置Timer0的高8位为60
TL0 = 0xB0; // 重新设置Timer0的低8位为176
}
void delay(unsigned int t) // 延时函数
{
unsigned int i;
for(i=0; i<t; i++)
{
while(!TF0); // 等待Timer0溢出
TF0 = 0; // 清除Timer0溢出标志
}
}
阅读全文