初始LED亮度50%,每按1次键增加1%,超过90%返回1%,如此循环。
- #include <reg51.H>
- sbit key=P3^4;
- sbit LED=P1^4;
- unsigned char count=50,num=0;
- void delay(unsigned int k)
- {
- unsigned int i,j;
- for(i=k;i>0;i--)
- for(j=110;j>0;j--);
- }
- void keyscan() //按键扫描
- {
- if(!key)
- {
- delay(10);//消抖
- if(!key)
- {
- count++;
- if(count>90)
- count=1;
- while(!key);//松手
- }
- }
- }
- void Timer0Init() //100微秒@12.000MHz
- {
- TMOD= 0x02; //设置T0自动重装模式
- TL0 = 0x9C; //设置定时初值
- TH0 = 0x9C; //设置定时重载值
- TR0 = 1; //定时器0开始计时
- EA = 1; //开总中断
- ET0 = 1; //开T0中断
- }
- void main(void)
- {
- Timer0Init();
- while(1)
- {
- keyscan();
- }
- }
- void Timer0Interrupt(void) interrupt 1
- {
- num++;
- if(num>100)
- num=0;
- if(num>=count)
- LED=1;
- else LED=0;//低电平亮
- }
复制代码 |