📄 2387.asm
字号:
;******************************
RS EQU P3.2
RW EQU P3.1
E EQU P3.0
PORT0 EQU P1
;******************************
ORG 0000H
AJMP begin
BEGIN:
ACALL DELAY
ACALL DELAY
MOV SP,#60H
MOV TCON,#00H
MOV P1,#0FFH
MOV P3,#0FFH
MOV 30H,#80H ;4x16
MOV 31H,#0C0H
MOV 32H,#90H
MOV 33H,#0D0H
MOV 34H,#80H ;4x20 & 2x40
MOV 35H,#0C0H
MOV 36H,#94H
MOV 37H,#0D4H
MOV 38H,#84H ;4X16 SHIFT LEFT
MOV 39H,#0C4H ;START ADDRESS
MOV 3AH,#94H
MOV 3BH,#0D4H
MOV 3CH,#88H ;4X20 SHIFT LEFT
MOV 3DH,#0C8H ;START ADDRESS
MOV 3EH,#9CH
MOV 3FH,#0DCH
MOV 40H,#8CH ;2X24 SHIFT LEFT
MOV 41H,#0CCH ;START ADDRESS
MOV 42H,#9CH ;2X40 SHIFT LEFT
MOV 43H,#0DCH ;START ADDRESS
MOV DPTR,#JUMPADD
MOV A,P3
ANL A,#11110000B
SWAP A
MOV R0,A
ADD A,R0
ADD A,R0
JMP @A+DPTR
JUMPADD:LJMP MODULETYPE0
LJMP MODULETYPE1
LJMP MODULETYPE2
LJMP MODULETYPE3
LJMP MODULETYPE4
LJMP MODULETYPE5
LJMP MODULETYPE6
LJMP MODULETYPE7
;*******************************
;***********************
; 1x16 MODULE
;***********************
MODULETYPE0:
ACALL INITIAL
MOV DPTR,#TP0DATA
MOV A,#82H
ACALL WELLCOM
;------------------------
MOV 08H,#01H
MOV 09H,#16
MOV 0AH,#30H
ACALL FULLDIS
;------------------------
MOV 08H,#01H
MOV 09H,#16
MOV 0AH,#30H
ACALL WTIHJ
;------------------------
MOV 08H,#01H
MOV 09H,#03H
MOV 0AH,#30H
ACALL SHIFTR
MOV 09H,#04H
MOV 0AH,#38H
ACALL SHIFTL
;------------------------
MOV 08H,#06H
MOV 09H,#01H
MOV 0AH,#30H
MOV 0BH,#16
ACALL WCGROM
;------------------------
MOV 0AH,#84H
ACALL TSTEND
AJMP MODULETYPE0
;*******************************
;**********************
; 2x16 MODULE
;**********************
;*******************************
MODULETYPE1:
ACALL INITIAL
MOV DPTR,#TP1DATA
MOV A,#82H
ACALL WELLCOM
;------------------------
MOV 08H,#03H
MOV 09H,#16
MOV 0AH,#30H
ACALL FULLDIS
;-------------------------
MOV 08H,#02H
MOV 09H,#16
MOV 0AH,#30H
ACALL WTIHJ
;-------------------------
MOV 08H,#02H
MOV 09H,#03H
MOV 0AH,#30H
ACALL SHIFTR
MOV 09H,#04H
MOV 0AH,#38H
ACALL SHIFTL
;-------------------------
MOV 08H,#07H
MOV 09H,#02H
MOV 0AH,#30H
MOV 0BH,#16
ACALL WCGROM
;-------------------------
MOV 0AH,#84H
ACALL TSTEND
AJMP MODULETYPE1
;*******************************
;**********************
; 4x16 MODULE
;**********************
;*******************************
MODULETYPE2:
ACALL INITIAL
MOV DPTR,#TP2DATA
MOV A,#82H
ACALL WELLCOM
;-------------------------
MOV 08H,#04H
MOV 09H,#16
MOV 0AH,#30H
ACALL FULLDIS
;-------------------------
MOV 08H,#04H
MOV 09H,#16
MOV 0AH,#30H
ACALL WTIHJ
;-------------------------
MOV 08H,#04H
MOV 09H,#03H
MOV 0AH,#30H
ACALL SHIFTR
MOV 09H,#04H
MOV 0AH,#38H
ACALL SHIFTL
;-------------------------
MOV 08H,#04H
MOV 09H,#04H
MOV 0AH,#30H
MOV 0BH,#16
ACALL WCGROM
;-------------------------
MOV 0AH,#84H
ACALL TSTEND
AJMP MODULETYPE2
;*********************************
;********************
; 1x20 MODULE
;********************
;*********************************
MODULETYPE3:
ACALL INITIAL
MOV DPTR,#TP3DATA
MOV A,#84H
ACALL WELLCOM
;--------------------------
MOV 08H,#01H
MOV 09H,#20
MOV 0AH,#30H
ACALL FULLDIS
;--------------------------
MOV 08H,#01H
MOV 09H,#20
MOV 0AH,#30H
ACALL WTIHJ
;--------------------------
MOV 08H,#01H
MOV 09H,#05H
MOV 0AH,#34H
ACALL SHIFTR
MOV 0AH,#3CH
ACALL SHIFTL
;--------------------------
MOV 08H,#0BH
MOV 09H,#01H
MOV 0AH,#34H
MOV 0BH,#20
ACALL WCGROM
;--------------------------
MOV 0AH,#86H
ACALL TSTEND
AJMP MODULETYPE3
;*********************************
;********************
; 2x20 MODULE
;********************
;*********************************
MODULETYPE4:
ACALL INITIAL
MOV DPTR,#TP4DATA
MOV A,#84H
ACALL WELLCOM
;--------------------------
MOV 08H,#02H
MOV 09H,#20
MOV 0AH,#30H
ACALL FULLDIS
;--------------------------
MOV 08H,#02H
MOV 09H,#20
MOV 0AH,#30H
ACALL WTIHJ
;--------------------------
MOV 08H,#02H
MOV 09H,#05H
MOV 0AH,#34H
ACALL SHIFTR
MOV 0AH,#3CH
ACALL SHIFTL
;--------------------------
MOV 08H,#05H
MOV 09H,#02H
MOV 0AH,#34H
MOV 0BH,#20
ACALL WCGROM
;--------------------------
MOV 0AH,#86H
ACALL TSTEND
AJMP MODULETYPE4
;*********************************
;********************
; 4x20 MODULE
;********************
;*********************************
MODULETYPE5:
ACALL INITIAL
MOV DPTR,#TP5DATA
MOV A,#84H
ACALL WELLCOM
;----------------------------
MOV 08H,#04H
MOV 09H,#20
MOV 0AH,#34H
ACALL FULLDIS
;----------------------------
MOV 08H,#04H
MOV 09H,#20
MOV 0AH,#34H
ACALL WTIHJ
;----------------------------
MOV 08H,#04H
MOV 09H,#05H
MOV 0AH,#34H
ACALL SHIFTR
MOV 0AH,#3CH
ACALL SHIFTL
;----------------------------
MOV 08H,#03H
MOV 09H,#04H
MOV 0AH,#34H
MOV 0BH,#20
ACALL WCGROM
;----------------------------
MOV 0AH,#86H
ACALL TSTEND
AJMP MODULETYPE5
;*********************************
;********************
; 2x24 MODULE
;********************
;*********************************
MODULETYPE6:
ACALL INITIAL
MOV DPTR,#TP6DATA
MOV A,#86H
ACALL WELLCOM
;---------------------------
MOV 08H,#02H
MOV 09H,#24
MOV 0AH,#30H
ACALL FULLDIS
;---------------------------
MOV 08H,#02H
MOV 09H,#24
MOV 0AH,#30H
ACALL WTIHJ
;---------------------------
MOV 08H,#02H
MOV 09H,#07H
MOV 0AH,#30H
ACALL SHIFTR
MOV 0AH,#40H
ACALL SHIFTL
;---------------------------
MOV 08H,#04H
MOV 09H,#02H
MOV 0AH,#30H
MOV 0BH,#24
ACALL WCGROM
;---------------------------
MOV 0AH,#88H
ACALL TSTEND
AJMP MODULETYPE6
;*********************************
;********************
; 2x40 MODULE
;********************
;*********************************
MODULETYPE7:
ACALL INITIAL
MOV DPTR,#TP7DATA
MOV A,#8EH
ACALL WELLCOM
;---------------------------
MOV 08H,#02H
MOV 09H,#40
MOV 0AH,#30H
ACALL FULLDIS
;---------------------------
MOV 08H,#02H
MOV 09H,#40
MOV 0AH,#30H
ACALL WTIHJ
;---------------------------
MOV 08H,#02H
MOV 09H,#08H
MOV 0AH,#30H
ACALL SHIFTR
MOV 0AH,#42H
ACALL SHIFTL
;---------------------------
MOV 08H,#02H
MOV 09H,#02H
MOV 0AH,#30H
MOV 0BH,#40
ACALL WCGROM
;---------------------------
MOV 0AH,#90H
ACALL TSTEND
AJMP MODULETYPE7
;*********************************
INITIAL:
MOV A,#3FH
ACALL WCOM
ACALL DELAY
MOV A,#3FH
ACALL WCOM
ACALL DELAY
MOV A,#38H
ACALL WCOM
mov a,#80h
acall wcom
MOV A,#0CH
ACALL WCOM
MOV A,#01H
ACALL WCOM
RET
;*********************************
WELLCOM:
MOV R0,A
ACALL WCOM
ACALL DELAY
ACALL DELAY
MOV A,R0
ACALL WCOM
ACALL DELAY
ACALL DELAY
MOV R3,#11
WCOMWT: CLR A
MOVC A,@A+DPTR
ACALL WDATA
INC DPTR
DJNZ R3,WCOMWT
MOV R5,#80H
ACALL DELAY1
JNB P3.3,$
MOV R5,#20H
LCALL DELAY1
RET
;**********************************
FULLDIS:
MOV A,#01H
ACALL WCOM
MOV A,08H
MOV R2,A
MOV R0,0AH
WFULL1: MOV A,@R0
ACALL WCOM
MOV R3,09H
WFULL2: MOV A,#0FFH
ACALL WDATA
DJNZ R3,WFULL2
INC R0
DJNZ R2,WFULL1
MOV R5,#80H
ACALL DELAY1
JNB P3.3,$
ACALL DELAY
RET
;*********************************
WTIHJ:
MOV A,#01H
ACALL WCOM
MOV DPTR,#DATAIHJ
MOV R1,#03
WIHJ0: MOV A,08H
MOV R2,A
MOV R0,0AH
WIHJ1: MOV A,@R0
ACALL WCOM
MOV R3,09H
WIHJ2: CLR A
MOVC A,@A+DPTR
ACALL WDATA
DJNZ R3,WIHJ2
INC R0
DJNZ R2,WIHJ1
MOV R5,#80H
ACALL DELAY1
JNB P3.3,$
ACALL DELAY
INC DPTR
DJNZ R1,WIHJ0
RET
;*********************************
SHIFTR:
MOV A,#01H
ACALL WCOM
MOV A,08H
MOV R1,A
MOV R0,0AH
SFRLN: MOV A,@R0
ACALL WCOM
MOV DPTR,#SHFRDATA
MOV R2,#13
SRWDATA:CLR A
MOVC A,@A+DPTR
ACALL WDATA
INC DPTR
DJNZ R2,SRWDATA
INC R0
DJNZ R1,SFRLN
MOV A,#00001111b
ACALL WCOM
MOV R3,09H
SFRTMS1:
MOV R5,#30H
ACALL DELAY1
MOV A,#00011100B
ACALL WCOM
JNB P3.3,$
DJNZ R3,SFRTMS1
MOV R5,#0B0H
ACALL DELAY1
RET
;**********************************
SHIFTL:
MOV A,#01H
ACALL WCOM
MOV A,#00001100B
ACALL WCOM
MOV A,08H
MOV R1,A
MOV R0,0AH
SFLLN: MOV A,@R0
ACALL WCOM
ACALL DELAY
MOV A,@R0
ACALL WCOM
ACALL DELAY
MOV DPTR,#SHFLDATA
MOV R2,#12
SLWDATA:CLR A
MOVC A,@A+DPTR
ACALL WDATA
INC DPTR
DJNZ R2,SLWDATA
INC R0
DJNZ R1,SFLLN
DEC R0
MOV A,@R0
DEC A
ACALL WCOM
ACALL DELAY
MOV A,#00001111b
ACALL WCOM
MOV R3,09H
SFLTMS:
MOV R5,#30H
ACALL DELAY1
MOV A,#00011000B
ACALL WCOM
JNB P3.3,$
DJNZ R3,SFLTMS
MOV R5,#0B0H
ACALL DELAY1
MOV A,#00001100B
ACALL WCOM
ACALL DELAY
MOV A,#00001100B
ACALL WCOM
ACALL DELAY
RET
;******************************
WCGROM:
MOV A,#01H
ACALL WCOM
ACALL DELAY
MOV A,#01000000B
ACALL WCOM
ACALL DELAY
MOV R1,#32
MOV R2,08H
WDDROM0:MOV R3,09H
MOV R0,0AH
WDDROM1:MOV A,@R0
ACALL WCOM
MOV R4,0BH
MOV A,R1
WDDROM2:ACALL WDATA
INC A
DJNZ R4,WDDROM2
MOV A,R1
ADD A,0BH
MOV R1,A
INC R0
DJNZ R3,WDDROM1
MOV R5,#70H
ACALL DELAY1
JNB P3.3,$
MOV R5,#10H
ACALL DELAY1
DJNZ R2,WDDROM0
RET
;*****************************
TSTEND:
MOV A,#01H
ACALL WCOM
MOV A,#00001100B
ACALL WCOM
MOV A,#01H
ACALL WCOM
ACALL DELAY
MOV A,0AH
ACALL WCOM
MOV R3,#8
MOV DPTR,#ENDATA
WEND: CLR A
MOVC A,@A+DPTR
ACALL WDATA
INC DPTR
DJNZ R3,WEND
MOV R5,#0E0H
ACALL DELAY1
JNB P3.3,$
MOV R5,#0FH
ACALL DELAY1
RET
;********************************
WCOM:
PUSH DPH
PUSH DPL
PUSH ACC
ACALL BUSY_CHECK
POP ACC
CLR RS
NOP
NOP
NOP
CLR RW
NOP
NOP
NOP
SETB E
NOP
NOP
NOP
NOP
MOV PORT0,A
NOP
NOP
NOP
NOP
CLR E
NOP
NOP
NOP
SETB RW
NOP
NOP
NOP
SETB RS
POP DPL
POP DPH
RET
WDATA:
PUSH DPH
PUSH DPL
PUSH ACC
ACALL BUSY_CHECK
POP ACC
SETB RS
NOP
NOP
NOP
CLR RW
NOP
NOP
NOP
SETB E
NOP
NOP
NOP
NOP
MOV PORT0,A
NOP
NOP
NOP
NOP
CLR E
NOP
NOP
NOP
SETB RW
NOP
NOP
NOP
CLR RS
POP DPL
POP DPH
RET
;****************************************
BUSY_CHECK:
CLR RS
NOP
NOP
NOP
SETB RW
NOP
NOP
NOP
SETB E
NOP
NOP
NOP
NOP
MOV A,PORT0
NOP
NOP
NOP
NOP
CLR E
NOP
NOP
NOP
CLR RW
ANL A,#80H
CJNE A,#00H,BUSY_CHECK
RET
;****************************
DELAY:
MOV R6,#32
DE1: MOV R7,#250
DE2: DJNZ R7,DE2
DJNZ R6,DE1
RET
DELAY1:
MOV R6,#20
DEL1: MOV R7,#250
DEL2: DJNZ R7,DEL2
DJNZ R6,DEL1
DJNZ R5,DELAY1
RET
;********************************
TP0DATA: DB '1x16 MODULE'
TP1DATA: DB '2x16 MODULE'
TP2DATA: DB '4x16 MODULE'
TP3DATA: DB '1x20 MODULE'
TP4DATA: DB '2x20 MODULE'
TP5DATA: DB '4x20 MODULE'
TP6DATA: DB '2X24 MODULE'
TP7DATA: DB '2X40 MODULE'
DATAIHJ: DB '#HI'
SHFRDATA:DB 'SHIFT RIGHT->'
SHFLDATA:DB '<-SHIFT LEFT'
ENDATA: DB 'TEST END !'
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -