/************定义声明区*****************/
/*使用芯片:STC89C52
晶振:12MHZ
单按键每按一次调整一点,到达最亮后再按一下恢复初始最低亮度
*/
#include "reg52.h"
void delay10ms(void);
sbit led=P1^0;
sbit key=P3^3;
unsigned char zk=1;
unsigned char count;//计数
/***************主函数*************/
void main()
{
led=1;
//P0=0;
EA=1;
/****定时器配置***/
TMOD=0x01;
TL0=(65535-100)%256;
TH0=(65535-100)/256;
ET0=1;
TR0=1;
/***死循环***/
while(1)
{
if(key==0)
{
delay10ms();
if(key==0)
{
zk=zk+10;
if(zk>=100)
{
zk=1;
}
}
while(!key);
}
}
}
void timer() interrupt 1
{
TL0=(65535-100)%256;
TH0=(65535-100)/256;
count++;
if(count>=100) count=0;
if(count<zk)
{
led=0;
}
else
{
led=1;
}
}
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=4;b>0;b--)
for(a=248;a>0;a--);
}