📄 touch_key.asm
字号:
COM DATA 29H
XH DATA 30H
XL DATA 31H
YH DATA 32H
YL DATA 33H
NUMBRH DATA 38H
NUMBRL DATA 39H
TIMER0 DATA 3AH ;延时时间的初值
TIMER1 DATA 3BH ;调用延时子程序的次数
COLOR DATA 3CH
KEYNO DATA 3DH
KEYVALUE DATA 3EH
X2H DATA 40H
X2L DATA 41H
Y2H DATA 42H
Y2L DATA 43H
PAGNO DATA 44H
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP LCOM
ORG 0030H
MAIN: MOV SP,#60H
SETB EA
LCALL INIT_SIO
LCALL NEW_BUDE
;-------------------------------
SETB EA
MOV SCON,#50H
MOV TMOD,#20H
MOV TH1,#0FFH
MOV TL1,#0FFH
MOV PCON,#80H
SETB ES
SETB TR1
;-------------------------------
LCALL SCREEN_CLR
LCALL DELAY20
MOV NUMBRH,#00H
MOV NUMBRL,#00H
LCALL BMP
LCALL DELAY20
LCALL TOUCH
LCALL DELAY20
MOV DPTR,#TAB0
LCALL TX
LCALL DELAY100
MOV PAGNO,#00H
LCALL PAG
LCALL DELAY100
KEY: JNB 24H.0,$
CLR 24H.0
MOV A,53H
CJNE A,#31H,KEY
MOV NUMBRH,#00H
MOV NUMBRL,#01H
LCALL BMP
LCALL DELAY20
MOV PAGNO,#01H
LCALL PAG
LCALL DELAY100
KEY1: JNB 24H.0,$
CLR 24H.0
MOV A,53H
CJNE A,#34H,KEY1
MOV NUMBRH,#00H
MOV NUMBRL,#02H
LCALL BMP
LCALL DELAY100
MOV PAGNO,#02H
LCALL PAG
LCALL DELAY100
KEY2: JNB 24H.0,$
CLR 24H.0
MOV A,53H
CJNE A,#36H,K11
MOV NUMBRH,#00H
MOV NUMBRL,#03H
LCALL BMP
LCALL DELAY20
SJMP $
K11: CJNE A,#37H,K22
MOV NUMBRH,#00H
MOV NUMBRL,#04H
LCALL BMP
LCALL DELAY20
K22: CJNE A,#38H,K33
SJMP $
K33: CJNE A,#39H,K44
MOV NUMBRH,#00H
MOV NUMBRL,#05H
LCALL BMP
LCALL DELAY20
K44: CJNE A,#3AH,K55
MOV NUMBRH,#00H
MOV NUMBRL,#06H
LCALL BMP
LCALL DELAY20
K55: CJNE A,#3BH,K66
MOV NUMBRH,#00H
MOV NUMBRL,#07H
LCALL BMP
LCALL DELAY20
K66: CJNE A,#3CH,K77
MOV NUMBRH,#00H
MOV NUMBRL,#08H
LCALL BMP
LCALL DELAY20
K77: CJNE A,#3DH,K88
LCALL SCREEN_CLR
LCALL DELAY20
K88: CJNE A,#3EH,K99
MOV NUMBRH,#00H
MOV NUMBRL,#09H
LCALL BMP
LCALL DELAY20
K99: CJNE A,#3FH,KAA
MOV NUMBRH,#00H
MOV NUMBRL,#10H
LCALL BMP
LCALL DELAY20
KAA: CJNE A,#40H,KBB
MOV NUMBRH,#00H
MOV NUMBRL,#11H
LCALL BMP
LCALL DELAY20
KBB: CJNE A,#41H,KCC
SJMP $
KCC: LJMP KEY2
AJMP $
;*****************************************************
;* 串口初始化,波特率9600 *
;*****************************************************
INIT_SIO:
MOV SCON,#50H
MOV TMOD,#20H
MOV TH1,#0FAH
MOV TL1,#0FAH
MOV PCON,#80H
SETB TR1
RET
;*****************************************************
;* 修改波特率(F0 5A 15 00 E1 00 A5 F0) 57600 *
;*****************************************************
NEW_BUDE:
MOV COM,#15H
LCALL COMMD_HEAD
MOV A,#00H
LCALL SEND_BYTE
MOV A,#0E1H
LCALL SEND_BYTE
MOV A,#00H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*******************************************************
TX: MOV R7,#16
TX1: MOV A,#00H
MOVC A,@A+DPTR
LCALL SEND_BYTE
INC DPTR
DJNZ R7,TX1
RET
;*****************************************************
;* 清屏(F0 5A 82 00 A5 F0) *
;*****************************************************
SCREEN_CLR:
MOV COM,#82H
LCALL COMMD_HEAD
MOV A,#00H ;00代表蓝色,01代表白色
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 触摸值(F0 5A 3B 01 A5 F0) *
;*****************************************************
TOUCH:
MOV COM,#3BH
LCALL COMMD_HEAD
MOV A,#01H ;00代表坐标,01代表键值
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 显示图像(F0 5A 91 00 00 00 00 00 00 A5 F0) *
;*****************************************************
BMP:MOV COM,#91H
LCALL COMMD_HEAD
MOV A,NUMBRH
LCALL SEND_BYTE
MOV A,NUMBRL
LCALL SEND_BYTE
MOV XH,#00H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#00H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#00H
MOV A,YL
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 画点(F0 5A 92 01 10 01 00 01 10 A5 F0) *
;*****************************************************
DOT:MOV COM,#92H
LCALL COMMD_HEAD
MOV XH,#01H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#10H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#00H
MOV A,YL
LCALL SEND_BYTE
MOV COLOR,#01H
MOV A,COLOR
LCALL SEND_BYTE
MOV A,#10H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 画线(F0 5A 93 01 00 01 20 02 00 01 20 01 A5 F0) *
;*****************************************************
LINE:MOV COM,#93H
LCALL COMMD_HEAD
MOV XH,#01H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#20H
MOV A,YL
LCALL SEND_BYTE
MOV XH,#02H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#20H
MOV A,YL
LCALL SEND_BYTE
MOV COLOR,#01H
MOV A,COLOR
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 画圆(F0 5A 94 01 60 01 20 01 00 01 A5 F0) *
;*****************************************************
CIRCLE:MOV COM,#94H
LCALL COMMD_HEAD
MOV XH,#01H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#60H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#20H
MOV A,YL
LCALL SEND_BYTE
MOV A,#01H
LCALL SEND_BYTE
MOV A,#00H
LCALL SEND_BYTE
MOV A,#01H
LCALL SEND_BYTE
LCALL COMMD_END
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -