📄 2440.asm
字号:
;Latest DMM tester program
;Include 5363 test program
;******************************
E1 EQU P3.0
RW EQU P3.1
RS EQU P3.2
E2 EQU P3.3
;******************************
ORG 0000H
AJMP begin
BEGIN:
ACALL DELAY1
MOV SP,#60H
MOV TCON,#00H
MOV P1,#0FFH
MOV P3,#0FFH
ACALL DELAY
MOV 10H,#80H ;LINE1 START ADDRESS
MOV 11H,#0C0H ;LINE2 START ADDRESS
MOV 12H,#90H ;LINE3 START ADDRESS
MOV 13H,#0D0H ;LINE4 START ADDRESS
;*********************************
;********************
; 4x40 MODULE
;********************
;*********************************
MODULETYPE7:
MOV 0AH,#02 ;LINE NUMBER
MOV 0BH,#40 ;CHARACTER NUMBER PER LINE
MOV 0CH,#08 ;SHIFT TIMES
;---------------------------
ACALL INITIAL
MOV DPTR,#TP7DATA
MOV A,#8EH
ACALL WELCOME
;---------------------------
ACALL FULLDIS
;---------------------------
ACALL WTIHJ
;---------------------------
ACALL SHIFTR
MOV 34H,#9CH
MOV 35H,#0DCH
ACALL SHIFTL
;---------------------------
MOV 0FH,#03H
ACALL WCGROM
;---------------------------
MOV 0AH,#90H
ACALL TSTEND
AJMP MODULETYPE7
;***************************************
INITIAL:
MOV A,#3FH
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
MOV A,#3FH
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
MOV A,#38H
ACALL WCOM1
ACALL WCOM2
MOV A,#0CH
ACALL WCOM1
ACALL WCOM2
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
RET
;*********************************
WELCOME:
MOV R0,A
ACALL WCOM1
ACALL DELAY
MOV A,R0
ACALL WCOM1
ACALL DELAY
MOV R3,#11
WCOMWT: CLR A
MOVC A,@A+DPTR
ACALL WDATA1
INC DPTR
DJNZ R3,WCOMWT
ACALL DELAY1
JNB P3.7,$
ACALL DELAY
ACALL DELAY
RET
;**********************************
FULLDIS:
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
MOV R2,0AH ;GET THE LINE NUMBER
MOV R0,#10H ;GET THE START ADDRESS
WFULL1: MOV A,@R0
ACALL WCOM1
ACALL WCOM2
MOV R3,0BH
MOV A,@R0
ACALL WCOM1
ACALL WCOM2
WFULL2: MOV A,#0FFH
ACALL WDATA1
ACALL WDATA2
DJNZ R3,WFULL2
INC R0 ;GET NEXT LINE ADDRESS
DJNZ R2,WFULL1
ACALL DELAY1
JNB P3.7,$
ACALL DELAY
ACALL DELAY
RET
;*********************************
WTIHJ:
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
MOV DPTR,#DATAIHJ
MOV R1,#03
WIHJ0: MOV R2,0AH ;GET THE LINE NUMBER
MOV R0,#10H ;GET THE START ADDRESS
WIHJ1: MOV A,@R0
ACALL WCOM1
ACALL WCOM2
MOV R3,0BH ;GET THE CHARACTER NUMBER
WIHJ2: CLR A
MOVC A,@A+DPTR
ACALL WDATA1
ACALL WDATA2
DJNZ R3,WIHJ2
INC R0 ;GET NEXT LINE START ADDRESS
DJNZ R2,WIHJ1
ACALL DELAY1
JNB P3.7,$
ACALL DELAY
ACALL DELAY
INC DPTR
DJNZ R1,WIHJ0
RET
;*********************************
SHIFTR:
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
MOV R2,0AH ;GET THE LINE NUMBER
MOV R0,#10H ;GET THE START ADDRESS
SFRLN: MOV A,@R0
ACALL WCOM1
ACALL WCOM2
MOV DPTR,#SHFRDATA
MOV R3,#13 ;STATIC CHARACTER NUMBER
SRWDATA:CLR A
MOVC A,@A+DPTR
ACALL WDATA1
ACALL WDATA2
INC DPTR
DJNZ R3,SRWDATA
INC R0 ;GET NEXT LINE ADDRESS
DJNZ R2,SFRLN
MOV A,#00001111b ;SET THE CURSOR TYPE
; ACALL WCOM1
ACALL WCOM2
MOV R4,0CH
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
SFRTMS1:
MOV A,#00011100B
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
ACALL DELAY
ACALL DELAY
JNB P3.7,$
ACALL DELAY
DJNZ R4,SFRTMS1
ACALL DELAY1
RET
;**********************************
SHIFTL:
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
MOV A,#00001100B ;SET THE CURSOR TYPE
ACALL WCOM1
ACALL WCOM2
MOV R2,0AH
MOV R0,#34H
SFLLN: MOV A,@R0
ACALL WCOM1
ACALL WCOM2
MOV A,@R0
ACALL WCOM1
ACALL WCOM2
MOV DPTR,#SHFLDATA
MOV R3,#12
SLWDATA:CLR A
MOVC A,@A+DPTR
ACALL WDATA1
ACALL WDATA2
INC DPTR
DJNZ R3,SLWDATA
INC R0
DJNZ R2,SFLLN
DEC R0 ;GET THE CURSOR ADDRESS
MOV A,@R0
DEC A
ACALL WCOM2
MOV A,#00001111b ;SET THE CURSOR TYPE
ACALL WCOM2
MOV R3,0CH ;GET THE SHIFT TIMES
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
SFLTMS:
MOV A,#00011000B
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
ACALL DELAY
ACALL DELAY
JNB P3.7,$
ACALL DELAY
DJNZ R3,SFLTMS
ACALL DELAY1
MOV A,#00001100B
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
MOV A,#00001100B
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
RET
;******************************
WCGROM:
ACALL DELAY
MOV A,#01000000B ;SET CGROM ADDRESS
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
MOV R1,#20H ;CGROM START ADDRESS
WDDROM0:MOV R2,0AH
MOV R0,#10H
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
WDDROM1:MOV A,@R0
ACALL WCOM1
ACALL WCOM2
MOV R3,0BH
MOV A,R1
WDDROM2:ACALL WDATA1
ACALL WDATA2
INC A
CJNE A,#00H,GON
AJMP DDEND
GON:DJNZ R3,WDDROM2
MOV A,R1
ADD A,0BH
MOV R1,A
INC R0
DJNZ R2,WDDROM1
ACALL DELAY1
JNB P3.7,$
ACALL DELAY
ACALL DELAY
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
AJMP WDDROM0
DDEND:ACALL DELAY1
JNB P3.7,$
ACALL DELAY
ACALL DELAY
RET
;*****************************
TSTEND:
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
MOV A,#00001100B
ACALL WCOM1
ACALL WCOM2
MOV A,#01H
ACALL WCOM1
ACALL WCOM2
ACALL DELAY
MOV A,0AH
ACALL WCOM1
MOV R3,#8
MOV DPTR,#ENDATA
WEND1: CLR A
MOVC A,@A+DPTR
ACALL WDATA1
INC DPTR
DJNZ R3,WEND1
ACALL DELAY1
JNB P3.7,$
ACALL DELAY
ACALL DELAY
RET
;********************************
WCOM1:
PUSH DPH
PUSH DPL
PUSH ACC
ACALL BUSY_CHECK1
POP ACC
CLR RS
NOP
NOP
CLR RW
NOP
NOP
SETB E1
NOP
NOP
NOP
MOV P1,A
NOP
NOP
NOP
CLR E1
NOP
NOP
SETB RW
NOP
NOP
SETB RS
POP DPL
POP DPH
RET
WDATA1:
PUSH DPH
PUSH DPL
PUSH ACC
ACALL BUSY_CHECK1
POP ACC
SETB RS
NOP
NOP
CLR RW
NOP
NOP
SETB E1
NOP
NOP
NOP
MOV P1,A
NOP
NOP
NOP
CLR E1
NOP
NOP
NOP
SETB RW
NOP
NOP
CLR RS
POP DPL
POP DPH
RET
;****************************************
BUSY_CHECK1:
NOP
CLR RS
NOP
NOP
NOP
SETB RW
NOP
NOP
NOP
SETB E1
NOP
NOP
NOP
NOP
NOP
MOV A,P1
NOP
NOP
NOP
NOP
NOP
CLR E1
NOP
NOP
NOP
NOP
CLR RW
ANL A,#80H
CJNE A,#00H,BUSY_CHECK1
RET
;****************************
WCOM2:
PUSH DPH
PUSH DPL
PUSH ACC
ACALL BUSY_CHECK2
POP ACC
CLR RS
NOP
NOP
CLR RW
NOP
NOP
SETB E2
NOP
NOP
NOP
MOV P1,A
NOP
NOP
NOP
CLR E2
NOP
NOP
SETB RW
NOP
NOP
SETB RS
POP DPL
POP DPH
RET
WDATA2:
PUSH DPH
PUSH DPL
PUSH ACC
ACALL BUSY_CHECK2
POP ACC
SETB RS
NOP
NOP
CLR RW
NOP
NOP
SETB E2
NOP
NOP
NOP
MOV P1,A
NOP
NOP
NOP
CLR E2
NOP
NOP
NOP
SETB RW
NOP
NOP
CLR RS
POP DPL
POP DPH
RET
;****************************************
BUSY_CHECK2:
NOP
CLR RS
NOP
NOP
NOP
SETB RW
NOP
NOP
NOP
SETB E2
NOP
NOP
NOP
NOP
NOP
MOV A,P1
NOP
NOP
NOP
NOP
NOP
CLR E2
NOP
NOP
NOP
NOP
CLR RW
ANL A,#80H
CJNE A,#00H,BUSY_CHECK2
RET
;****************************
DELAY:
SETB RS0
MOV R6,#200
DE1: MOV R7,#250
DE2: DJNZ R7,DE2
DJNZ R6,DE1
CLR RS0
RET
DELAY1:
SETB RS0
MOV R5,#11
DEL0: MOV R6,#200
DEL1: MOV R7,#250
DEL2: DJNZ R7,DEL2
DJNZ R6,DEL1
DJNZ R5,DEL0
CLR RS0
RET
;********************************
TP7DATA: DB '4X40 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 + -