|
|
本帖最后由 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; //定時(shí)器時(shí)鐘1T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0x9A; //設(shè)置定時(shí)初值
TH0 = 0xA9; //設(shè)置定時(shí)初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
}
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++;
}
|
|