📄 5088.asm
字号:
;////////////////////////////////////////
;5088编码程序:按键1~9分别显示1~9九个数字,
;p3口为编码的输出口
;p2口作为段码和数码管位选输出,高四位为位选码,低四位为BCD码,p1口为键盘输入
;////////////////////////////////////
ORG 0000H
TEMP EQU 76H
KEYBOARD EQU P1
CODE EQU P3
OUTPUT EQU P2
AJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H
CLR P3.4
MOV 75H,#10
MOV 76H,#10
MOV 77H,#10
MOV 78H,#10
MOV 79H,#10
MOV 7AH,#10
MOV 7BH,#10
MOV 7CH,#10
MOV 7DH,#10
MOV 7EH,#10
MOV 7FH,#10
RETURN:LCALL KEYIN
CJNE A,#0FFH,JUDGE
LCALL DISPLAY
SJMP RETURN
JUDGE:MOV 75H,A
MOV CODE,A
SETB P3.4
MOV R5,#255
DE: MOV R6,#255
DE1: DJNZ R6,DE1
DJNZ R5,DE
CLR P3.4
LCALL LEFT
LCALL DISPLAY
SJMP RETURN
;///////////////////////////////////////////////////
;键盘子程序
;////////////////////////////////////////////////////
KEYIN:MOV KEYBOARD,#0FH;反转读键
MOV A,KEYBOARD
ANL A,#0FH
MOV B,A
MOV P1,#0F0H
MOV A,KEYBOARD
ANL A,#0F0H
ORL A,B
CJNE A,#0FFH,KEYIN1
RET ;未按键
KEYIN1:;LCALL D
LCALL SCAN
CJNE A,#0FFH,KEYINN
RET ;未按键
KEYINN:MOV B,A;暂存特征吗
MOV DPTR,#KEYCOD;指向码表
MOV R3,#0FFH;顺序码初始化
KEYIN2:INC R3
MOV A,R3
MOVC A,@A+DPTR
CJNE A,B,KEYIN3
MOV A,R3
REL: LCALL SCAN
CJNE A,#0FFH,REL
MOV A,R3
RET
KEYIN3:CJNE A,#0FFH,KEYIN2
RET ;已查完,未找到,以未按键处理
KEYCOD:DB 77H,7BH,7DH,7EH
DB 0B7H,0BBH,0BDH,0BEH
DB 0D7H,0DBH,0DDH,0DEH
DB 0E7H,0EBH,0EDH,0EEH
RET
SCAN: MOV KEYBOARD,#0FH;反转读键
MOV A,KEYBOARD
ANL A,#0FH
MOV B,A
MOV KEYBOARD,#0F0H
MOV A,KEYBOARD
ANL A,#0F0H
ORL A,B
RET
;/////////////////////////////////////////////////////////////////
; 显示子程序
;//////////////////////////////////////////////////////////////////
DISPLAY:MOV R0,#76H
MOV R3,#00H
LD0: MOV A,@R0
ANL A,#0FH
MOV B,A
MOV A,R3
ANL A,#0FH
SWAP A
ORL A,B
MOV OUTPUT,A
;LCALL D
INC R0
CJNE R3,#09H,ADDONE
RET
ADDONE: INC R3
AJMP LD0
RET
;///////////////////////////////////////////
;延时3ms
;///////////////////////////////////////////
D:MOV R5,#3;
D1:MOV R6,#100
D2: DJNZ R6,D2
DJNZ R5,D1
RET
;//////////////////////////////////////////
; 左移
;//////////////////////////////////////////
LEFT:MOV TEMP,TEMP+1
MOV TEMP+1,TEMP+2
MOV TEMP+2,TEMP+3
MOV TEMP+3,TEMP+4
MOV TEMP+4,TEMP+5
MOV TEMP+5,TEMP+6
MOV TEMP+6,TEMP+7
MOV TEMP+7,75H
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -