独立键盘与显示电路程序
ORG 0000H
AJMP KEYIN
ORG 0010H
KEYIN: MOV P1,#0FFH ;P1口写入1,设置P1口为输入状态
MOV A,P1 ;读入8个按键的状态
CJNE A,#0FFH,KEY;有键按下,跳去抖动
LJMP RETURN ;无键按下,返回
KEY: MOV P0,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH ;8 个按键的状态送R3保存 KEY0:MOV C,P1.0 ;有键按下,读P1.0的按键状态
JC KEY1 ;P1.0为高,该键未按下,跳KEY1,判下一个
键
LJMP PKEY0 ;P1.0的键按下,跳PKEY0处理 KEY1:MOV C,P1.1 ;读P1.1的按键状态
JC KEY2 ;P1.1为高,该键未按下,跳KEY2,判下一个
键
LJMP PKEY1 ;P1.1的键按下,跳PKEY1处理 KEY2:MOV C,P1.2 ;读P1.2的按键状态
JC KEY3 ;P1.2为高,该键未按下,跳KEY3,判下一个键
LJMP PKEY2 ;P1.2的键按下,跳PKEY2处理 KEY3:MOV C,P1.3 ;读P1.3的按键状态
JC KEY4 ;P1.3为高,该键未按下,跳KEY4,判下一个键
LJMP PKEY3 ;P1.3的键按下,跳PKEY3处理 KEY4:MOV C,P1.4 ;读P1.4的按键状态
JC KEY5 ;P1.4为高,该键未按下,跳KEY5,判下一个键
LJMP PKEY4 ;P1.4的键按下,跳PKEY4处理 KEY5:MOV C,P1.5 ;读P1.5的按键状态
JC KEY6 ;P1.5为高,该键未按下,跳KEY6,判下一个键
LJMP PKEY5 ;P1.5的键按下,跳PKEY5处理 KEY6:MOV C,P1.6 ;读P1.6的按键状态
JC KEY7 ;P1.6为高,该键未按下,跳KEY7,判下一个键
LJMP PKEY6 ;P1.6的键按下,跳PKEY6处理 KEY7:MOV C,P1.7 ;读P1.7的按键状态
JC RETURN ;P1.7为高,该键未按下,跳RETURN处
LJMP PKEY7 ;P1.7的键按下,跳PKEY7处理 PKEY0:SETB P0.0
MOV A,#0 ; 取出要显示的数送A
LCALL DISPLAY
LJMP KEY0
PKEY1: SETB P0.1
MOV A,#1 ; 取出要显示的数送A LCALL DISPLAY
LJMP KEY0
PKEY2: SETB P0.2 MOV A,#2 ; 取出要显示的数送A LCALL DISPLAY
LJMP KEY0
PKEY3: SETB P0.3 MOV A,#3 ; 取出要显示的数送A LCALL DISPLAY LJMP KEY0
PKEY4: SETB P0.4 MOV A,#4 ; 取出要显示的数送A LCALL DISPLAY
LJMP KEY0
PKEY5: SETB P0.5 MOV A,#5 ; 取出要显示的数送A LCALL DISPLAY
LJMP KEY0
PKEY6: SETB P0.6 MOV A,#6 ; 取出要显示的数送A LCALL DISPLAY
LJMP KEY0
PKEY7: SETB P0.7 MOV A,#7 ; 取出要显示的数送A LCALL DISPLAY
LJMP KEY0
DISPLAY:
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H;共阳极段码
DB 99H, 96H,86H,0F8H;
END