|
//給你一個思路,例程片段參考一下
unsigned char a; //鍵值變量0~6,0為初始態(tài),不控制閃爍
unsigned char count; //數(shù)碼管輪流顯示計數(shù)變量
unsigned int Cnt_ms; //1ms中斷計數(shù)變量
/******定時器0初始化程序******/
void Timer0Init(void) //1毫秒@12.000MHz
{
TMOD = 0x01; //設(shè)置定時器模式
TL0 = 0x18; //設(shè)置定時初值
TH0 = 0xFC; //設(shè)置定時初值
TR0 = 1; //定時器0開始計時
EA=1; //開總中斷
ET0=1; //開定時器0中斷
}
/******定時器0中斷服務(wù)程序******/
void timer0() interrupt 1
{
TL0 = 0x18; //設(shè)置定重載值
TH0 = 0xFC; //設(shè)置定重載值
Cnt_ms++; //1ms變量自+1
count++; //輪流顯示計數(shù)
if(Cnt_ms>=1000) //1秒
Cnt_ms=0;
if(count>=5) //顯示程序,1ms顯示一位
{
count=0;
switch(count)
{
case 0:
//顯示段語句
if((a==1)&(count<500))//滿足兩個條件執(zhí)行以下語句。
{
//關(guān)閉位語句
}
else
{
//顯示位語句
}
break;
case 1:
//顯示段語句
if((a==2)&(count<500))//滿足兩個條件執(zhí)行以下語句,a=鍵值
{
//關(guān)閉位語句
}
else
{
//顯示位語句
}
break;
case 2:
//顯示段語句
if((a==3)&(count<500))//滿足兩個條件執(zhí)行以下語句,a=鍵值
{
//關(guān)閉位語句
}
else
{
//顯示位語句
}
break;
case 3:
//顯示段語句
if((a==4)&(count<500))//滿足兩個條件執(zhí)行以下語句,a=鍵值
{
//關(guān)閉位語句
}
else
{
//顯示位語句
}
break;
case 4:
//顯示段語句
if((a==5)&(count<500))//滿足兩個條件執(zhí)行以下語句,a=鍵值
{
//關(guān)閉位語句
}
else
{
//顯示位語句
}
break;
case 5:
//顯示段語句
if((a==6)&(count<500))//滿足兩個條件執(zhí)行以下語句,a=鍵值
{
//關(guān)閉位語句
}
else
{
//顯示位語句
}
break;
}
}
} |
|