51_PWM

使用定时器0,工作方式2,生成频率为1000HZ、占空比为80%的PWM波形,LED的电路使用前面章节的低电平点亮电路。 周期=1ms 0.8ms 0.2ms = 200us 找到他们的最大公约数。
/**********************51单片机学习例程************************
* 平台:Keil U4 + STC89C52
* 名称:P1口控制流水灯闪烁
* 编写:Tony
* 日期:2022-1-24
* QQ : 674749794
* 晶体:12MHZ
* 变更记录:无
******************************************************************/
#include <reg52.h>
unsigned char PWM_CNT; //定义该变量为计数用变量
sbit led= P1^0;
void Timer0_Init();
/********************************************
定时器0初始化函数,8位定时器,0.2ms溢出一次,开启中断
********************************************/
void Timer0_Init(){
TMOD=0x02; //模式设置,0b0000 0010,定时器0,工作模式2,8位定时器 (M1=1,M0=0)
ET0=1; //开启定时器0中断
TH0=0x38; //0.2ms溢出
TL0=0x38; //
TR0=1; //使能定时器0
PWM_CNT=0;
}
void main(){
led=1;
Timer0_Init();
EA=1; //开总中断
while(1);
}
void Timer0_In() interrupt 1
{
PWM_CNT++; //计数加1
if(PWM_CNT==4)
led=0;//pwm 1KHz ,占空比80%
if(PWM_CNT==5)
{ led=1;
PWM_CNT=0;
}
}
浙公网安备 33010602011771号