|
初始LED亮度50%,每按1次鍵增加1%,超過(guò)90%返回1%,如此循環(huán)。
- #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; //設(shè)置T0自動(dòng)重裝模式
- TL0 = 0x9C; //設(shè)置定時(shí)初值
- TH0 = 0x9C; //設(shè)置定時(shí)重載值
- TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí)
- EA = 1; //開(kāi)總中斷
- ET0 = 1; //開(kāi)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;//低電平亮
- }
復(fù)制代碼 |
|