【51单片机固定按键占空比】2022-11-12

缘由关于51单片机pwm输出问题-嵌入式-CSDN问答

cpp 复制代码
#include "REG52.h"
sbit k1=P3^0;
sbit k2=P3^2;
sbit k3=P3^3;
unsigned char Js=0;//中断计时
void ZhongDuanSheZhi()
{
	TH0+=0X4c;/*定时器赋初值,定时50ms触发中断,自动补偿方式*/
	TL0+=0X00; 
	TMOD=0X01;
	TR0=1; 
	ET0=1; //开启定时器
	EA=1; //全局中断开关
}
void FanBo(unsigned char *c/*调节占空比*/)
{
	P1=(Js>*c?0:255);//den=100*50=5秒可观察不同占空比亮熄比例,看亮度效果需调节定时器时间。
}
void main()
{
	unsigned char xd=0,den=100,b=47;
	ZhongDuanSheZhi();
	while(1)
	{
		FanBo(&b);
		if(Js>100)Js=0;
		if(!k1&&!++xd){b=20;while(!k1);}
		if(!k2&&!++xd){b=50;while(!k2);}
		if(!k2&&!++xd){b=90;while(!k2);}
	}
}
void ZhongDuan() interrupt 1
{
	++Js;
	TH0+=0X4c;
	TL0+=0X00;        
}