📄 tiaoshi1.asm
字号:
KeyValue EQU 30H
DisplayCode EQU 31H
ROW EQU 32H
Column EQU 33H
ScanCount EQU 34H
ScanCode EQU 35H
DisplayBuffer EQU 36H
ORG 0
SJMP Start
Start:
MOV SP,#5FH ;初始化程序
MOV KeyValue,#10H ;设定初始不显示
MOV ScanCode,#0EFH ;设定扫描顺序
PUSH ScanCode
MOV ScanCount,#5
MOV P3,#00H
MOV R2,#00H
MOV R3,#1
MOV R6,#1
;MOV A,#3AH
;PUSH A
MOV R1,#4 ;缓存区清零
MOV R0,#DisplayBuffer
RegistLoop:
MOV @R0,#00H
INC R0
DJNZ R1,RegistLoop
Main:
pop ScanCode
;AJMP ScanAndDisplay
ScanAndDisplay: ;键盘扫描程序
MOV A,ScanCode
RR A
ORL A,#0F0H
MOV ScanCode,A
MOV P3,#00H
;MOV R2,A
MOV P1,A
MOV A,P1
MOV R5,A
XRL A,ScanCode
JZ NotKey
;MOV A,R2
;RR A
;MOV ScanCode,A
AJMP HaveKey
NotKey: ;若侦测到未有按键按下则继续扫描键盘
;AJMP Delay2
;PUSH ScanCode
DJNZ ScanCount,ScanAndDisplay
MOV ScanCount,#5
;MOV A,#3AH
; PUSH A
MOV ScanCode,#0EFH
;PUSH ScanCode
AJMP ScanAndDisplay
DECI:
;pop A
;DEC A
;PUSH A
MOV R0,#35H
MOV R4,#04H
;PUSH ScanCode
MOV ScanCode,#0FFH
CLR C
LIU: INC R0
MOV P3,@R0
MOV A,ScanCode
RLC A
MOV ScanCode,A
MOV P1,A
;MOV A,R2
;RR A
;MOV ScanCode,A
AJMP Delay1
PEN: DJNZ R4,LIU
POP DisplayCode
PUSH DisplayCode
MOV A,DisplayCode
XRL A,#77H
;JZ Main
JZ DECI
;AJMP DECI
FIJ: DJNZ R3,DECI
MOV R3,#1
DJNZ R6,FIJ
MOV R6,#1
;POP DisplayCode
;PUSH DisplayCode
;XRL DisplayCode,#77H
;JZ DECI
AJMP Main
HaveKey:
AJMP FindKeyValue
LOOP: MOV A,KeyValue
AJMP Decode
SHOW:
PUSH DisplayCode
MOV A,DisplayCode
XRL A,#77H
JZ DECI
POP DisplayCode
MOV DisplayBuffer,DisplayBuffer+1
MOV DisplayBuffer+1,DisplayBuffer+2
MOV DisplayBuffer+2,DisplayBuffer+3
MOV DisplayBuffer+3,DisplayCode
PUSH ScanCode
INC R2
CJNE R2,#3,DECI
;MOV R1,DisplayBuffer+3
;MOV A,@R1
MOV A,DisplayCode
ADD A,#80H
MOV DisplayBuffer+3,A
AJMP DECI
FindKeyValue:
MOV A,R5
FindRow:
SWAP A
ANL A,#0FH
MOV Row,#0
NextRow:
RRC A
JNC FindColumn
INC Row
JMP NextRow
FindColumn:
MOV A,R5
ANL A,#0FH
MOV Column,#0
NextColumn:
RRC A
JNC CalculateKeyValue
INC Column
JMP NextColumn
CalculateKeyValue:
MOV A,Column
MOV B,#4
MUL AB
ADD A,Row
MOV KeyValue,A
AJMP LOOP
Decode:
MOV DPTR,#DisplayCodeTable
MOVC A,@A+DPTR
MOV DisplayCode,A
AJMP SHOW
DisplayCodeTable:
DB 3FH ; 显示数字“0”
DB 06H ; 显示数字“1”
DB 5BH ; 显示数字“2”
DB 4FH ; 显示数字“3”
DB 66H ; 显示数字“4”
DB 6DH ; 显示数字“5”
DB 7DH ; 显示数字“6”
DB 07H ; 显示数字“7”
DB 7FH ; 显示数字“8”
DB 6FH ; 显示数字“9”
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -