缘由关于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;
}