本帖最后由 robinsonlin 于 2020-7-24 15:18 编辑
#define K1 P37
#define LED P36
unsigned long SysTick;
unsigned char KFlag;
void Delay10ms() //@22.1184MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 1;
j = 216;
k = 35;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Timer0Init(void) //1毫秒@22.1184MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x9A; //设置定时初值
TH0 = 0xA9; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void main()
{
K1 = 1;
LED = 0;
KFlag = 1; Timer0Init() ;
EA = 1;
while(1)
{
if(K1==0 && KFlag==1)
{
Delay10ms();
if(K1==0 && KFlag==1)
{
T1 = SysTick;
KFlag = 0;
//LFlag = 1;
LED = 1;
}
}
if(K1==0 && LED==1)
{
Delay10ms();
if(K1==0 && LED==1)
{
LFlag = 0;
LED = 0;
}
}
if((SysTick-T1)>=120000 && LED==1)
{
LED = 0;
LFlag = 0;
}
}
}
void tm0_isr() interrupt 1 //中断入口
{
SysTick++;
}
|