本帖最后由 79498 于 2020-7-17 12:00 编辑
用定时器做的,但是LED灯只是第一次闪烁后常亮30分钟后熄灭,第二次按按键后就是一直亮了,不知道为什么,请一些高手解答下。
测试代码如下 最重要的就是第一次定时可以 第二次就不行了 STC15W100的芯片
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
typedef 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 a,b;
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;
}
}
}
}
|