渐亮渐暗5秒
- #include <reg51.H>
- sbit k1 =P3^0;
- sbit LED=P1^0;
- unsigned char i,num;
- bit flag=0;
- void keyscan() //按键扫描
- {
- static unsigned char count=0;
- static bit sign=0;
- if(!k1)
- {
- count++;
- if(count>=100 && sign==0)
- {
- sign=1;
- flag=~flag;
- }
- }
- else
- {
- count=0;
- sign=0;
- }
- }
- void Timer0Init() //500微秒@12.000MHz
- {
- TMOD= 0x01; //设置定时器模式
- TL0 = 0x0C; //设置定时初值
- TH0 = 0xFE; //设置定时初值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- EA = 1;
- ET0 = 1;
- }
- void main(void)
- {
- Timer0Init();
- while(1)
- {
- keyscan();
- }
- }
- void Timer0Interrupt(void) interrupt 1
- {
- TL0 = 0x0C; //设置定时初值
- TH0 = 0xFE; //设置定时初值
- if(i>=num)
- LED=1;
- else LED=0;
- i++;
- if(i==100)
- {
- i=0;
- if(flag)
- {
- if(num<100)
- num++;
- }
- else
- {
- if(num>0)
- num--;
- }
- }
- }
复制代码 |