📄 x1228.asm
字号:
$NOMOD51
NAME X1228
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
T2 BIT 090H.0
EA BIT 0A8H.7
IE DATA 0A8H
EXF2 BIT 0C8H.6
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
OV BIT 0D0H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
RCLK BIT 0C8H.5
TCLK BIT 0C8H.4
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
TF2 BIT 0C8H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
PT2 BIT 0B8H.5
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
EXEN2 BIT 0C8H.3
REN BIT 098H.4
T2CON DATA 0C8H
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
;------------ --------- --------------------------------
;硬件定义区
;------------ --------- --------------------------------
XSCL EQU P1.0
XSDA EQU P1.1
LCDP0 EQU 80f0H
LCDP1 EQU 84f0H
LCDP2 EQU 88f0H
LCDP3 EQU 8Cf0H
ZKHA EQU 8003H
PRN EQU 8000H
;------------ --------- --------------------------------
BUF EQU 7000H
;------------ --------- --------------------------------
XCONT EQU 7210H
XRTC EQU 7230H
;------------ --------- --------------------------------
;字节定义区
;------------ --------- --------------------------------
FCOLORH EQU 30H ;当前前景色
FCOLORL EQU 31H
BCOLORH EQU 32H ;当前背景色
BCOLORL EQU 33H
CUXH EQU 34H ;当前字符显示点位置
CUXL EQU 35H
CUY EQU 36H
DSPXH EQU 37H ;当前显示起始点位置
DSPXL EQU 38H
DSPY EQU 39H
DSPPAGE EQU 3AH ;当前显示页
HHIGHT EQU 3BH ;显示行高
HWIDE EQU 3CH ;显示字符宽
HZLEFT EQU 3DH ;汉字符左空
HZTOP EQU 3EH ;汉字符上空
CCOLORH EQU 3FH ;光标颜色
CCOLORL EQU 40H
;CPOSXH EQU 41H ;光标位置
;CPOSXL EQU 42H
;CPOSY EQU 43H
DSPMODE EQU 44H ;当前显示模式寄存器值
EWIDE EQU 45H ;英文字符宽
ELEFT EQU 46H ;英文左空
?PR?_x1228?X1228 SEGMENT CODE
PUBLIC _x1228
RSEG ?PR?_x1228?X1228
_X1228:
;------------ --------- --------------------------------
; CLR TR0
MOV A,R7
CLR C
RLC A
CLR C
RLC A
MOV DPTR,#XJMP
JMP @A+DPTR
XJMP: LJMP XREAD
DB 0
LJMP XWRITE
DB 0
LJMP XRCONT
DB 0
LJMP XWCONT
DB 0
LJMP XRRTC
DB 0
LJMP XWRTC
;------------ --------- --------------------------------
XSTART: SETB XSCL
SETB XSDA
CLR XSDA
CLR XSCL
RET
;------------ --------- --------------------------------
XEND: CLR XSDA
CLR XSCL
NOP
SETB XSCL
SETB XSDA
RET
;------------ --------- --------------------------------
XSEND: MOV R7,#8
XSEND1: RLC A
MOV XSDA,C
SETB XSCL
CLR XSCL
DJNZ R7,XSEND1
SETB XSDA
SETB XSCL
JB XSDA,$
MOV C,XSDA
CLR XSCL
RET
;------------ --------- --------------------------------
XRCV: MOV R7,#8
XRCV1: SETB XSCL
MOV C,XSDA
RLC A
CLR XSCL
DJNZ R7,XRCV1
RET
;------------ --------- --------------------------------
XACK: CLR XSDA
SETB XSCL
CLR XSCL
SETB XSDA
RET
;------------ --------- --------------------------------
XWEN: LCALL XSTART
MOV A,#11011110B
LCALL XSEND
MOV A,#0
LCALL XSEND
MOV A,#3FH
LCALL XSEND
MOV A,#2
LCALL XSEND
LCALL XSTART
MOV A,#11011110B
LCALL XSEND
MOV A,#0
LCALL XSEND
MOV A,#3FH
LCALL XSEND
MOV A,#6
LCALL XSEND
LCALL XEND
RET
;------------ --------- --------------------------------
XREAD: MOV DPTR,#BUF
MOV A,#10101110B
LCALL XSTART
LCALL XSEND
MOV A,DPH
ANL A,#1
LCALL XSEND
MOV A,DPL
LCALL XSEND
LCALL XSTART
MOV A,#10101111B
LCALL XSEND
MOV R5,#8
XREAD2: MOV R6,#64
XREAD1: LCALL XRCV
LCALL XACK
MOVX @DPTR,A
INC DPTR
DJNZ R6,XREAD1
DJNZ R5,XREAD2
LCALL XRCV
LCALL XEND
; SETB TR0
RET
;------------ --------- --------------------------------
XWRITE: MOV DPTR,#BUF
LCALL XWEN
MOV R5,#8
XWRITE2: LCALL XSTART
MOV A,#10101110B
LCALL XSEND
MOV A,DPH
ANL A,#01H
LCALL XSEND
MOV A,DPL
LCALL XSEND
MOV R6,#64
XWRITE1: MOVX A,@DPTR
LCALL XSEND
INC DPTR
DJNZ R6,XWRITE1
LCALL XEND
LCALL XDELAY
DJNZ R5,XWRITE2
; SETB TR0
RET
;------------ --------- --------------------------------
XDELAY: MOV R4,#120
XWRITE3: MOV R3,#100
DJNZ R3,$
DJNZ R4,XWRITE3
RET
;------------ --------- --------------------------------
XRCONT: MOV DPTR,#XCONT
MOV A,#11011110B
LCALL XSTART
LCALL XSEND
MOV A,#0
LCALL XSEND
MOV A,#10H
LCALL XSEND
LCALL XSTART
MOV A,#11011111B
LCALL XSEND
MOV R0,#3
XRCONT1: LCALL XRCV
MOVX @DPTR,A
LCALL XACK
INC DPTR
DJNZ R0,XRCONT1
LCALL XRCV
MOVX @DPTR,A
LCALL XEND
; SETB TR0
RET
;------------ --------- --------------------------------
XWCONT: LCALL XWEN
MOV DPTR,#XCONT
LCALL XSTART
MOV A,#11011110B
LCALL XSEND
MOV A,#0
LCALL XSEND
MOV A,#10H
LCALL XSEND
MOV R0,#4
XWCONT1: MOVX A,@DPTR
LCALL XSEND
INC DPTR
DJNZ R0,XWCONT1
LCALL XEND
LCALL XDELAY
; SETB TR0
RET
;------------ --------- --------------------------------
XRRTC: MOV DPTR,#XRTC
MOV A,#11011110B
LCALL XSTART
LCALL XSEND
MOV A,#0
LCALL XSEND
MOV A,#30H
LCALL XSEND
LCALL XSTART
MOV A,#11011111B
LCALL XSEND
MOV R0,#7
XRRTC1: LCALL XRCV
MOVX @DPTR,A
LCALL XACK
INC DPTR
DJNZ R0,XRRTC1
LCALL XRCV
MOVX @DPTR,A
LCALL XEND
; SETB TR0
RET
;------------ --------- --------------------------------
XWRTC: LCALL XWEN
MOV DPTR,#XCONT
LCALL XSTART
MOV A,#11011110B
LCALL XSEND
MOV A,#0
LCALL XSEND
MOV A,#30H
LCALL XSEND
MOV R0,#8
XWRTC1: MOVX A,@DPTR
LCALL XSEND
INC DPTR
DJNZ R0,XWRTC1
LCALL XEND
LCALL XDELAY
; SETB TR0
RET
;------------ --------- --------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -