📄 8x15d测架(touch).asm
字号:
;=============================================================
;OCMJ8X15D触摸屏中断程序
;当触摸事件发生时模块产生中断经INT脚输出信号触发MCU的外部中断0
;=============================================================
RS EQU P3.0 ;L:存取缓存器,H:存取DDRAM
WRB EQU P3.1 ;L有效
RDB EQU P3.6 ;L有效
CS1 EQU P3.3 ;L有效
CS2 EQU P3.4 ;H有效(可直接上拉)
BUSY EQU P3.5
INT EQU P3.2 ;接MCU的INT0
RST EQU P3.7 ;L有效(可悬空)
EA_BIT EQU 20H.0
REGNAME EQU 30H
REGDATA EQU 31H
REGDATA1 EQU 32H
LCM_X EQU 33H
LCM_Y EQU 34H
COUNT1 EQU 35H
COUNT2 EQU 36H
COUNT3 EQU 37H
LCM_DATA1 EQU 38H
LCM_DATA2 EQU 39H
TOUCH_XH EQU 40H ;触摸屏地址X高2位
TOUCH_XL EQU 41H ;触摸屏地址X低8位
TOUCH_XH1 EQU 42H ;触摸屏地址X高8位
TOUCH_XL1 EQU 43H ;触摸屏地址X低2位
TOUCH_YH EQU 44H ;触摸屏地址Y高2位
TOUCH_YL EQU 45H ;触摸屏地址Y低8位
TOUCH_YH1 EQU 46H ;触摸屏地址Y高8位
TOUCH_YL1 EQU 47H ;触摸屏地址Y低2位
HEX_H EQU 48H
HEX_L EQU 49H
;****************************************************
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP INT_0
ORG 0100H
MAIN: NOP
MOV SP,#5FH
LCALL DELAY2 ;延时240MS等待上电复位
MOV P3,#0FFH
LCALL LCM_INIT
LCALL LCM_CLR
;****************************************************
LGS1: ;MOV REGNAME,#10H
; MOV REGDATA,#2BH
; LCALL REG_WRITE
MOV REGNAME,#00H
MOV REGDATA,#0CDH
LCALL REG_WRITE
MOV DPTR,#TAB1
LCALL CHRT_DISP
LCALL DELAY3
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS2: MOV REGNAME,#00H
MOV REGDATA,#0C5H
LCALL REG_WRITE
MOV LCM_DATA1,#0CCH
MOV LCM_DATA2,#0CCH
LCALL LAT_DISP
LCALL DELAY3
MOV LCM_DATA1,#33H
MOV LCM_DATA2,#33H
LCALL LAT_DISP
LCALL DELAY3
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS3: MOV REGNAME,#10H
MOV REGDATA,#3BH
LCALL REG_WRITE
MOV REGNAME,#00H
MOV REGDATA,#0CDH
LCALL REG_WRITE
MOV DPTR,#TAB2
LCALL CHRT_DISP
LCALL DELAY3
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS4: MOV REGNAME,#00H
MOV REGDATA,#0C5H
LCALL REG_WRITE
MOV LCM_DATA1,#0CCH
MOV LCM_DATA2,#33H
LCALL LAT_DISP
LCALL DELAY3
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS5: MOV DPTR,#TAB3
LCALL PHO_DISP
LCALL DELAY3
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS6: LCALL LCM_CLR
MOV REGNAME,#10H
MOV REGDATA,#2BH
LCALL REG_WRITE
MOV REGNAME,#00H
MOV REGDATA,#0CDH
LCALL REG_WRITE
MOV LCM_X,#00H
MOV LCM_Y,#00H
MOV DPTR,#TAB41
MOV COUNT1,#134
LCALL CHRT_DP
MOV REGNAME,#0A0H
LCALL REG_READ
ORL REGDATA1,#04H ;致能触摸中断
MOV REGDATA,REGDATA1
LCALL REG_WRITE
SETB IT0
SETB EA
SETB EX0
LCALL DELAY3
CLR EA
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LJMP LGS1
;****************************************************
INT_0: PUSH ACC
MOV REGNAME,#0A0H
LCALL REG_READ
JNB ACC.6,INT_0_END
MOV REGNAME,#0A0H
LCALL REG_READ
ANL REGDATA1,#0FBH ;禁能触摸中断
MOV REGDATA,REGDATA1
LCALL REG_WRITE
LCALL GET_TOUCH
INT_0_END: MOV REGNAME,#0A0H
LCALL REG_READ
ORL REGDATA1,#04H ;致能触摸中断
MOV REGDATA,REGDATA1
LCALL REG_WRITE
POP ACC
RETI
;****************************************************
GET_TOUCH: MOV REGNAME,#0C0H
MOV REGDATA,#0C0H ;TOUCH ON
LCALL REG_WRITE
LCALL DELAY1
LCALL TOUCH_TEST
JNB ACC.6,GET_TOUCH2
SETB EA_BIT
MOV REGNAME,#0C1H
GET_TOUCH1: LCALL REG_READ
JNB ACC.7,GET_TOUCH1
LCALL TOUCH_Y
LCALL TOUCH_X
MOV REGNAME,#10H
LCALL REG_READ
ORL REGDATA1,#10H
MOV REGDATA,REGDATA1
LCALL REG_WRITE
MOV LCM_X,#0AH
MOV LCM_Y,#20H
MOV DPTR,#TAB43
MOV COUNT1,#10
LCALL CHRT_DP
MOV LCM_X,#0EH
MOV LCM_Y,#30H
MOV HEX_H,TOUCH_XH
MOV HEX_L,TOUCH_XL
LCALL TOUCH_DISP
MOV LCM_X,#0EH
MOV LCM_Y,#40H
MOV HEX_H,TOUCH_YH
MOV HEX_L,TOUCH_YL
LCALL TOUCH_DISP
MOV REGNAME,#10H
LCALL REG_READ
ANL REGDATA1,#0EFH
MOV REGDATA,REGDATA1
LCALL REG_WRITE
LCALL DELAY2
GET_TOUCH2: MOV REGNAME,#0C0H
MOV REGDATA,#00H ;TOUCH OFF
LCALL REG_WRITE
MOV LCM_X,#0AH
MOV LCM_Y,#20H
MOV DPTR,#TAB42
MOV COUNT1,#10
LCALL CHRT_DP
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TOUCH_Y: MOV REGNAME,#0C0H
LCALL REG_READ
ANL REGDATA1,#0FCH
ORL REGDATA1,#0CH
MOV REGDATA,REGDATA1
LCALL REG_WRITE
LCALL DELAY1
MOV REGNAME,#0C9H ;TPYR
LCALL REG_READ
MOV TOUCH_YH1,REGDATA1
MOV REGNAME,#0CAH ;TPZR
LCALL REG_READ
RR A
RR A
ANL A,#03H
MOV TOUCH_YL1,A
MOV A,TOUCH_YH1
RL A
RL A
MOV TOUCH_YH,A
ANL TOUCH_YH,#03H
ANL A,#0FCH
ORL A,TOUCH_YL1
MOV TOUCH_YL,A
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TOUCH_X: MOV REGNAME,#0C0H
LCALL REG_READ
ANL REGDATA1,#0F3H
ORL REGDATA1,#03H
MOV REGDATA,REGDATA1
LCALL REG_WRITE
LCALL DELAY1
MOV REGNAME,#0C8H ;TPXR
LCALL REG_READ
MOV TOUCH_XH1,REGDATA1
MOV REGNAME,#0CAH ;TPZR
LCALL REG_READ
RL A
RL A
ANL A,#03H
MOV TOUCH_XL1,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -