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