📄 点阵.asm
字号:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP IN0P
ORG 0030H
MAIN: MOV TMOD,#01H
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB ET0
SETB TR0
SETB EA
SJMP $
IN0P: MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
LCALL KEY
LCALL DISP
RETI
;;;;判键子程序;;;;;;;;;;;;;;;;;;;;;;;;;
;资源分配:20H用于存对应的键码
;;;;;;;;;:21H用于存对应的键号
;使用的寄存器有A、B、R0
KEY: MOV P1,#0F0H
MOV A,P1
MOV B,A
MOV P1,#0FH
MOV A,P1
ADD A,B
CJNE A,#0FFH,LOOP ;不等于#0FFH则有键按下,否则无操作
AJMP KEY_END
LOOP: MOV DPTR,#TAB1
MOV 20H,A
MOV R0,#0FFH
NEXT: INC R0 ;R1用于存放键号
MOV A,R0
MOVC A,@A+DPTR ;查键号对应的键码
CJNE A,20H,NEXT
MOV 21H,R0 ;将确定的键号存于21H单元内
KEY_END:RET
;;;;;;;显示子程序
;;使用的资源为:A、B、R1、R2、R3、21H
DISP: MOV DPTR,#TAB2
MOV R1,#0FFH
MOV R2,#08H
MOV A,21H
MOV B,#08H
MUL AB
MOV R3,A ;保存表头于R3中
NEXT1: MOV A,R3
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI
CLR P3.7
SETB P3.7
INC R1
MOV P1,R1
LCALL DEL
INC R3
DJNZ R2,NEXT1
RET
;;;;;延时子程序0.5MS
DEL: MOV R4,#10
DEL1: MOV R5,#50
DJNZ R5,$
DJNZ R4,DEL1
RET
TAB1: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH
DB 0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H
TAB2: DB 81H,81H,99H,99H,99H,99H,81H,81H
DB 0C3H,0FBH,0FBH,0C3H,0C3H,0DFH,0DFH,0C3H
DB 0C3H,0DFH,0DFH,0C3H,0C3H,0DFH,0DFH,0C3H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -