ef9bfd512f14ac62
获得 0 次赞
帮助过0人
用定时器做的,但是LED灯只是第一次闪烁后常亮30分钟后熄灭,第二次按按键后就是一直亮了,不知道为什么,请一些高手解答下。测试代码如下 最重要的就是第一次定时可以 第二次就不行了 STC15W100的芯片#include "reg52.h"#include "intrins.h"#define uchar unsigned char#define uint unsigned inttypedef unsigned int u1;typedef unsigned char u2; //unsigned char d;unsigned char n=0;uchar min=1; sec=59; //uchar flag;//sbit led2=P3^0; //sbit led1=P3^1; //sbit cd=P3^2; //sbit uv=P3^3; //sbit k1=P3^4; bit flash;//bit key;sfr IE2=0xAF;sfr AUXR=0x8E;sfr T2H=0xD6;sfr T2L=0xD7;void shijian(); ///@@**************************************************************************/void delay_1s() {int ab; for(a=1000;a>0;a--) for(b=150;b>0;b--);}/@@**************************************************************************/ void keypros() {if(k1==0) { delay_1s(); if(k1==0) { flash=~flash; key=1; } } while(!k1);}/@@**************************************************************************/void ledflash(){ if(flash==1&&key==1) { for(d=0;d<10;d++) { led1=0; delay_1s(); led1=1; delay_1s(); } key=0; led1=0; uv=1; } if(flash==0) { led1=1; uv=0; }}/@@**************************************************************************/void Int1Init() //{ IT0=1; EX0=1; EA=1;}/@@**************************************************************************/void Timer2Init() //{ IE2|=0x04; T2H=(65536-50000)/256; T2L=(65536-50000)%256; EA=1; // AUXR|=0x10; // }/@@**************************************************************************/void main() { led1=1; uv=0; led2=1; flash=0; Timer2Init(); while(1) { keypros(); ledflash(); Int1Init(); } }/@@**************************************************************************/void Int0() interrupt 0 //{ if(cd==0) { uv=0; // led2=~led2; // } else { led2=1; }}/@@**************************************************************************/void Timer2() interrupt 12{ T2H=(65536-50000)/256; T2L=(65536-50000)%256; flag++; if(min==0&&sec==0){ uv=0;}if(flag>=20) { flag=0; sec--; if(sec<=0) { sec=59; min--; if(min<=0) { min=0; sec=0; AUXR|=0x00; } } } }