📄 键盘.asm
字号:
ORG 0000H
SJMP START
ORG 0030H
START: MOV SCON,#00H ;初始化串行口方式0
MOV DPTR,#TABLE ;查表
MOV P1,#0FFH ;读取键值
MOV A,P1
CPL A
ANL A,#0FH
JZ START
LCALL D10MS
MOV A,P1
CPL A
ANL A,#0FFH
JZ START
MOV B,A
MOV A,P1
CPL A
ANL A,#0FFH
KEY: JNZ KEY ;判断是那个键按下,并执行相应操作
LCALL D10MS
MOV A,B
JB ACC.0,K1
JB ACC.1,K2
JB ACC.2,K3
JB ACC.3,K4
DEFAULT:RET
K1: LCALL JIA
RET
K2: LCALL JIAN
RET
K3: LCALL CHENG
RET
K4: LCALL CHU
RET
MOV R2,#04H ;操作数R2,R3
MOV R3,#02H
JIA: MOV A,R2 ;加
MOV B,R3
MOV R4,#16
ADD A,B
LCALL SHOW
JIAN: MOV A,R2 ;减
MOV B,R3
MOV R4,#17
SUBB A,B
LCALL SHOW
CHENG: MOV A,R2 ;乘
MOV B,R3
MOV R4,#18
MUL AB
LCALL SHOW
CHU: MOV A,R2 ;除
MOV B,R3
MOV R4,#19
DIV AB
LCALL SHOW
QINGLING:MOV R0,#04H ;清零
LOOP: MOV A,#21
LCALL DISPLAY
DJNZ R0,LOOP
LCALL D1S
RESULT: MOV A,R5 ;结果
LCALL DISPLAY
LJMP START ;主程序循环
SJMP $
;子程序
D10MS: MOV R7,#10H ;10MS延时程序
DS11: MOV R6,#0FFH
DS22: DJNZ R6,DS22
DJNZ R7,DS11
RET
SHOW: MOV R5,A ;结果存入R5
MOV A,#20 ;等号
LCALL DISPLAY
MOV A,R3 ;第二位数
LCALL DISPLAY
MOV A,R4 ;符号
LCALL DISPLAY
MOV A,R2 ;第一位数
LCALL DISPLAY
LCALL D1S
RET
DISPLAY:MOVC A,@A+DPTR ;显示
MOV SBUF,A
DELAY: JNB TI,DELAY
CLR TI
RET
D1S: MOV R7,#0FFH ;1S延时程序
DS1: MOV R6,#0FFH
DS2: MOV R5,#0FFH
DS3: DJNZ R5,DS3
DJNZ R6,DS2
DJNZ R7,DS1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB 77H,7CH,39H,5EH,79H,71H
DB 46H,40H,76H,64H,48H,00H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -