📄 12-8input.asm
字号:
;*******************************************
;r5列扫描初值
;r6扫描列号
;r3键值
;r0系统显示参数首地址
;r2坐标计算时的键值保护寄存器
;r7显示参数字节个数
;20H页码保存单元
;r1用户参数首地址
;********************************************
D_I EQU P2.0 ;Data or Instrument Select,H:写数据,L:写指令
R_W EQU P2.1 ;Write or Read,H:read,L:write
E EQU P2.7 ;读写使能
CS1 EQU P2.2 ;CS1=H,选择左半屏
CS2 EQU P2.3
;CS2=H,选择右半屏
RESET EQU P2.4 ;Lcm reset,低有效
DISP_X EQU 30H
DISP_Y EQU 31H
DISP_Z EQU 32H
LONG EQU 33H
WIDE EQU 34H
DATA1_WR EQU 35H
DATA2_WR EQU 36H
COUNTER1 EQU 37H
COUNTER2 EQU 38H
COUNTER3 EQU 39H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP KEYVAL
ORG 0030H
MAIN: MOV SP,#3AH
SETB EA
SETB EX0
SETB IT0
mov r0,#50h
lcall clears
mov r4,#40h ;用户参数输入时的DISP_Y坐标保存单元
;lcall start
MOV 20H,#00H ;页码保存单元
MOV P1,#0F0H
SJMP $
KEYVAL: MOV r5,#0F7H ;送扫描初值
MOV r6,#00H ;扫描列号
LK: MOV A,r5
MOV P1,A ;扫描值送入p1口
MOV A,P1 ;读出p1口数据判断键值
JB ACC.7,LONE ;第一行 P1.7
MOV A,#01H
AJMP LKP
LONE: JB ACC.6,LTWO ;第二行 P1.6
MOV A,#05H
AJMP LKP
LTWO: JB ACC.5,LTHR ;第三行 P1.5
MOV A,#09H
AJMP LKP
LTHR: JB ACC.4,NEXT ;第四行 P1.4
MOV A,#0dH
LKP: ADD A,r6
MOV r3,A ;键值存入R3中
LCALL KEYDW
RETI
NEXT: INC r6
MOV A,r5
JNB ACC.0,KND
RR A
MOV r5,A
AJMP LK
KND: MOV P1,#0F0H
RETI
;键处理子程序
KEYDW: MOV A,R3
CLR C
RLC A
MOV DPTR,#TAB
JMP @A+DPTR
TAB: db 00h,01h
AJMP NUM1
AJMP NUM2
AJMP NUM3
AJMP NUM4
AJMP NUM5
AJMP NUM6
AJMP NUM7
AJMP NUM8
AJMP NUM9
AJMP NUM0
AJMP FUNC1
AJMP FUNC2
AJMP FUNC3
AJMP FUNC4
AJMP FUNC5
AJMP FUNC6
num1: jb f0,ninput ;f0=1,进入参数输入界面
MOV P1,#0F0H
ret
ninput: ;lcall clears
;lcall userpara
mov a,r3
mov @r0,a
inc r0
lcall inpara
ret ;输入参数显示,input parameter display
num2: MOV P1,#0F0H
ret
NUM3: MOV P1,#0F0H
RET
NUM4: MOV P1,#0F0H
RET
NUM5: MOV P1,#0F0H
RET
NUM6: MOV P1,#0F0H
RET
NUM7: MOV P1,#0F0H
RET
NUM8: MOV P1,#0F0H
RET
NUM9: MOV P1,#0F0H
RET
NUM0: MOV P1,#0F0H
RET
func1: setb f0
lcall clears
lcall userpara
MOV P1,#0F0H
RET
func2:
func3:
func4:
func5:
func6:
;**********************清屏***********************
clears: MOV DISP_Z,#0C0H
SETB CS1
CLR CS2
MOV DISP_X,#0B8H
MOV DISP_Y,#40H
MOV LONG,#40H
MOV WIDE,#02H
MOV DPTR,#clear
LCALL para_DISP
MOV DISP_X,#0BAH
MOV DPTR,#clear
LCALL para_DISP
MOV DISP_X,#0BCH
MOV DPTR,#clear
LCALL para_DISP
MOV DISP_X,#0BEH
MOV DPTR,#clear
LCALL para_DISP
CLR CS1
SETB CS2
MOV DISP_X,#0B8H
MOV DISP_Y,#40H
MOV LONG,#40H
MOV WIDE,#02H
MOV DPTR,#clear
LCALL para_DISP
MOV DISP_X,#0BAH
MOV DPTR,#clear
LCALL para_DISP
MOV DISP_X,#0BCH
MOV DPTR,#clear
LCALL para_DISP
MOV DISP_X,#0BEH
MOV DPTR,#clear
LCALL para_DISP
ret
ipd: clr cs1
setb cs2
;mov r7,#06h
;mov r0,#50h
loopif: mov a,@r0
numif0: cjne a,#0,numif1
mov dptr,#numtab0
lcall para_disp
;*************************
lcall parazbif
;***********************
;inc r0
;djnz r7,loopif
ret
numif1: cjne a,#1,numif2
mov dptr,#numtab1
lcall para_disp
;*********************
lcall parazbif
;*********************
;inc r0
;djnz r7,loopif
ret
numif2: cjne a,#2,numif3
mov dptr,#numtab2
lcall para_disp
;*******************
lcall parazbif
;********************
;inc r0
;djnz r7,loopif
ret
numif3: cjne a,#3,numif4
mov dptr,#numtab3
lcall para_disp
;********************
lcall parazbif
;********************
;inc r0
;djnz r7,loopif
ret
numif4: cjne a,#4,numif5
mov dptr,#numtab4
lcall para_disp
;********************
lcall parazbif
;********************
;inc r0
;djnz r7,loopif1
ret
loopif1: ljmp loopif
numif5: cjne a,#5,numif6
mov dptr,#numtab5
lcall para_disp
;**********************
lcall parazbif
;******************
;inc r0
;djnz r7,loopif2
ret
loopif2: ljmp loopif
numif6: cjne a,#6,numif7
mov dptr,#numtab6
lcall para_disp
;*******************
lcall parazbif
;*****************
;inc r0
;djnz r7,loopif3
ret
loopif3: ljmp loopif
numif7: cjne a,#7,numif8
mov dptr,#numtab7
lcall para_disp
;**********************
lcall parazbif
;************************
;inc r0
;djnz r7,loopif4
ret
loopif4: ljmp loopif
numif8: cjne a,#8,numif9
mov dptr,#numtab8
lcall para_disp
;***********************
lcall parazbif
;**********************
;inc r0
;djnz r7,loopif5
ret
loopif5: ljmp loopif
numif9: cjne a,#9,loopif1
mov dptr,#numtab9
lcall para_disp
;*******************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -