刚学定时器,需要写一个程序,就是按下S2(代码里面的key1)之后让led灯全亮,定时器定时5s之后让led灯全部熄灭。我这样子写发现并不能熄灭,有没有人给说一下问题并且给个思路?- #include <reg52.h>
- #include <intrins.h>
- sbit key1=P3^0;
- void delay(unsigned char z)//zms延时
- {
- unsigned char i, j;
- while(z>0)
- {
- _nop_();
- i = 2;
- j = 199;
- do
- {
- while (--j);
- } while (--i);
- z--;
- }
- }
- void timer0Init() //50ms
- {
- TR0=1;
- TMOD=0X01;
- TH0=(65535-46082)/256;
- TL0=(65535-46082)%256;
- }
- void main()
- {
- unsigned char msec;
- timer0Init();
- while(1)
- {
- if(key1==0)
- {
- delay(20); //消抖
- if(key1==0)
- P1=0x00;
- if(TF0==1)
- {
- TF0=0;
- msec++;
- TH0=(65535-46082)/256;
- TL0=(65535-46082)%256;
- if(msec==100)
- P1=0XFF;
- }
- while(!key1) ;//松手检测
- }
- }
- }
复制代码
|