3、鍵盤/顯示子程序設(shè)計(jì)
extern bit b_keyok;//有按鍵產(chǎn)生標(biāo)記
extern bit b_longdown;//長按下標(biāo)記
extern uchar key_num;//鍵值
extern uchar key_temp;//臨時鍵值
extern uchar key_count;//鍵長按計(jì)數(shù)
extern uchar key_dly;//鍵去抖動延時
extern uchar beep_time;//蜂鳴時間
void key_scan1();////按鍵松開或沒有按下處理
/****************************************************/
oid disp_t1(void) interrupt 3 using 1//顯示中斷程序
uchar temp;
TR1 =0;
P_OE=1;//高阻態(tài),禁止輸出
if((disp_number==(5-bdf.dp))&(bdf.dp!=0))//這一位是否有小數(shù)點(diǎn)
temp=0x08;//小數(shù)點(diǎn)段碼
else
temp=0;
if(disp_number==6)//指示燈顯示不用查表
P0=fun_led;//
if((disp_number==fu_number)&&b_fuhao)
temp=temp|0x40;
if((disp_number==flash_num)&b_flash)//是否有閃爍位
P0=0x0;
P0=tab[weight_led[disp_number]]|temp;//查表取段碼
P_LE=1;
P_LE=0;//573鎖存段碼
P0=digit[disp_number];//送位碼
P_OE=0;//573輸出有效
disp_number++;
if(disp_number==7)//是否顯示最后一位
disp_number=0;
if(beep_time)//是否要鳴叫
if(!TR0)
{buz0=~buz1;TR0 =1;}
beep_time--;
{TR0=0;buz0=1;buz1=1;}//不鳴叫時置高,減小電流
if(key_dly)//按鍵去抖動延時
key_dly--;
if(flash_num《6)
if(flash_time)//閃爍計(jì)時
flash_time--;
{ b_flash=!b_flash;flash_time=20;}//時間到,置閃爍標(biāo)記
TH1 =0xf8;
TL1 =0x18;
TR1 =1 ;
評論