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; } }