⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2440.asm

📁 2440 LCD模块测试程序
💻 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 + -