void lflash()
{
if (enflash && (blink &0x3f))
{
if (ledtime-- == 0)
{
if (!ledtask)
ledtime = leddark;
else
ledtime = ledshow;
ledtask = ~ledtask; //顯示狀態(tài)翻轉(zhuǎn)
}
}
else
ledtask = 0;
}
/*******************************************************************************
*函數(shù)原型: void display(uchar pos);
*功能:將pos對(duì)應(yīng)的顯示緩沖區(qū)的內(nèi)容顯示在第pos位數(shù)碼管上
*參數(shù):
*說明:
*******************************************************************************/
void display(uchar pos)
{
uchar sflag;
shut_dis(); //關(guān)顯示
sflag = (blink >> (6-pos)) &0x01; //取出pos對(duì)應(yīng)的數(shù)碼管的閃爍控制位
if (pos == 0)
send_shift(led_buf[0]); //指示燈顯示時(shí)直接將顯示內(nèi)容送顯示端口
else if (!sflag || (sflag &!ledtask)) //不閃爍或正處于閃爍的亮階段
if ((led_buf[pos] &0x80) == 0) //不顯示小數(shù)點(diǎn),查表得到段碼送顯示端口
send_shift(led_stroke[led_buf[pos] &0x7f] |decimal); //顯示小數(shù)點(diǎn),把查表得到段碼與小數(shù)點(diǎn)的段碼與的結(jié)果送顯示端口
else
send_shift(led_stroke[led_buf[pos] &0x7f]);
else
send_shift(0xff); //pos位數(shù)碼管不顯示
LEDS_PORTO &= led_cs[pos]; //送出位選碼
}
/*******************************************************************************
*函數(shù)原型: void scankey(keyret *kpd);
*功能:鍵盤掃描,返回上檔鍵個(gè)數(shù),上檔鍵值,功能鍵個(gè)數(shù),功能鍵值
*參數(shù):
*說明:
*******************************************************************************/
void scankey(keyret *kpd)
{
uchar i,j;
shut_dis(); //關(guān)顯示
KEY_DDR = OUT; //定義數(shù)據(jù)端口為輸出
KEY_PORTO |= KeyValue; //輸出數(shù)據(jù)(輸出檢測(cè)碼)
KEY_DDR = IN; //定義數(shù)據(jù)端口為輸入
i = (KEY_PORTI &KeyValue); //取出鍵盤位
if (i != KeyValue)
//檢測(cè)是否有鍵按下





