#include<reg52.h> //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
#define DELAYTIME (200)
typedef enum{false=0, true = 1} bool;
/********************************************************************
I/O定义
*********************************************************************/
sbit DOUT=P1^3;
sbit YOUT=P1^4;
sbit LED1=P3^7;
unsigned short Timecount;
bool LedOffflag;
bool KeyFlag;
/********************************************************************
延时函数
*********************************************************************/
void delay()//延时程序
{
uchar m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
主函数
*********************************************************************/
void Timer0_init()
{
EA = 1;
ET0 = 1;
TR0 = 1;
TMOD = 0x01; //定时器0 计数模式 定时器1模式1
TH0 = 0x0C;
TL0 = 0xB0;
}
bool GetKey(void)
{
if((DOUT==1&&YOUT==1))
return true;
else return false;
}
void main()
{
Timer0_init(); //开启定时器0产生1s的中断
while(1) //无限循环
{
KeyFlag = GetKey();
if(KeyFlag)
{
LED1 = 1;
Timecount = 0;
LedOffflag = false;
}
else if(LedOffflag)
{
LED1 = 0;
}
}
}
void timeint(void) interrupt 1
{
TH0 = 0x00;
TL0 = 0xB0;
Timecount++;
if(Timecount >= DELAYTIME)
{
Timecount = DELAYTIME;
LedOffflag = true;
}
}
这是重新写的程序,需要延时多长时间,就修改宏DELAYTIME的值。 |