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

📄 display-g.asm

📁 PIC1687X单片机,LCD12232汉显,所有数据存于片内FLAISH中,断电保持,硬件调试通过
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		MOVLW	0x06
		MOVWF	DIS_TABH
		MOVLW	0x30
		MOVWF	DIS_STX     ;place 
		MOVLW	0x02        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY
        CALL    DISP2
        CALL    DELAY1
                
        GOTO    PROG_BEG
PAG2
LINE31
		CLRF    R0
		CLRF    R1
		CLRF    R2
		CLRF    R3
		CLRF    R4
		CLRF    DIS_CNTX
		CLRF    DIS_CNTY
		CLRF    DIS_MODX
		CLRF    DIS_MODY
		MOVLW	0x00
		MOVWF	DIS_TABL
		MOVLW	0x06
		MOVWF	DIS_TABH
		MOVLW	0x00        ;0
		MOVWF	DIS_STX     ;place 
		MOVLW	0x00        ;01
		MOVWF	DIS_STY
		MOVLW	0x2         ;3
		MOVWF	DIS_MOD
		MOVLW	0x02        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY
        CALL    DISP1
        CALL    DELAY1
        CALL    DELAY1
LINE32
        CLRF    R0
		CLRF    R1
		CLRF    R2
		CLRF    R3
		CLRF    R4
		CLRF    DIS_CNTX
		CLRF    DIS_CNTY
		CLRF    DIS_MODX
		CLRF    DIS_MODY
        MOVFW   AD2TEMP
        MOVWF   DATA0
        CALL    TO_BCD
         MOVFW   R10
        ANDLW   0X0F
        MOVWF   R10
        ADDWF   R10,1
        MOVFW   R11
        ADDWF   R11,1
        BTFSC   STATUS,DC
        INCF    R10,1
        MOVFW   R12
        ADDWF   R12,1
        BTFSC   STATUS,DC
        INCF    R11
        MOVFW   R10
        ANDLW   0X0F
        MOVWF   TEMP2
        CALL    DATAZH
		MOVLW	0x00
		MOVWF	DIS_STX     ;place 
		MOVLW	0x00        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY       
        CALL    DISP2
        CALL    DELAY1
        MOVFW   R11
        ANDLW   0X0F
       
        MOVWF   TEMP2
        CALL    DATAZH
		MOVLW	0x0A
		MOVWF	DIS_STX     ;place 
		MOVLW	0x00        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY       
        CALL    DISP2
        CALL    DELAY1
        MOVFW   R12
        ANDLW   0X0F
      
        MOVWF   TEMP2
        CALL    DATAZH
		MOVLW	0x14
		MOVWF	DIS_STX     ;place 
		MOVLW	0x00        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY       
        CALL    DISP2
        CALL    DELAY1
LINE33
        CLRF    R0
		CLRF    R1
		CLRF    R2
		CLRF    R3
		CLRF    R4
		CLRF    DIS_CNTX
		CLRF    DIS_CNTY
		CLRF    DIS_MODX
		CLRF    DIS_MODY
		MOVLW	0x60
		MOVWF	DIS_TABL
		MOVLW	0x05
		MOVWF	DIS_TABH
		MOVLW	0x30
		MOVWF	DIS_STX     ;place 
		MOVLW	0x00        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY
        CALL    DISP2
        CALL    DELAY1
         

LINE41        
       	CLRF    R0
		CLRF    R1
		CLRF    R2
		CLRF    R3
		CLRF    R4
		CLRF    DIS_CNTX
		CLRF    DIS_CNTY
		CLRF    DIS_MODX
		CLRF    DIS_MODY
		MOVLW	0x20
		MOVWF	DIS_TABL
		MOVLW	0x05
		MOVWF	DIS_TABH
		MOVLW	0x00
		MOVWF	DIS_STX     ;place 
		MOVLW	0x02        ;01
		MOVWF	DIS_STY
		MOVLW	0x2         ;3
		MOVWF	DIS_MOD
		MOVLW	0x02        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01--N WORD
		MOVWF	DIS_NUMY
        CALL    DISP1
        CALL    DELAY1
LINE42
        CLRF    R0
		CLRF    R1
		CLRF    R2
		CLRF    R3
		CLRF    R4
		CLRF    DIS_CNTX
		CLRF    DIS_CNTY
		CLRF    DIS_MODX
		CLRF    DIS_MODY
        MOVFW   AD3TEMP
        MOVWF   DATA0
        CALL    TO_BCD
        MOVFW   R10
        ANDLW   0X0F
        MOVWF   R10
        ADDWF   R10,1
        MOVFW   R11
        ADDWF   R11,1
        BTFSC   STATUS,DC
        INCF    R10,1
        MOVFW   R12
        ADDWF   R12,1
        BTFSC   STATUS,DC
        INCF    R11
        MOVFW   R10
        ANDLW   0X0F
        MOVWF   TEMP2
        CALL    DATAZH
		MOVLW	0x00
		MOVWF	DIS_STX     ;place 
		MOVLW	0x02        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY       
        CALL    DISP2
        CALL    DELAY1
        MOVFW   R11
        ANDLW   0X0F
     
        MOVWF   TEMP2
        CALL    DATAZH
		MOVLW	0x0A
		MOVWF	DIS_STX     ;place 
		MOVLW	0x02        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY       
        CALL    DISP2
        CALL    DELAY1
        MOVFW   R12
        ANDLW   0X0F
     
        MOVWF   TEMP2
        CALL    DATAZH
		MOVLW	0x14
		MOVWF	DIS_STX     ;place 
		MOVLW	0x02        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY       
        CALL    DISP2
        CALL    DELAY1
       
LINE43
        CLRF    R0
		CLRF    R1
		CLRF    R2
		CLRF    R3
		CLRF    R4
		CLRF    DIS_CNTX
		CLRF    DIS_CNTY
		CLRF    DIS_MODX
		CLRF    DIS_MODY
		MOVLW	0x60
		MOVWF	DIS_TABL
		MOVLW	0x05
		MOVWF	DIS_TABH
		MOVLW	0x30
		MOVWF	DIS_STX     ;place 
		MOVLW	0x02        ;01
		MOVWF	DIS_STY
		MOVLW	0x3         ;3
		MOVWF	DIS_MOD
		MOVLW	0x01        ;01--area
		MOVWF	DIS_NUMX
		MOVLW	0x01        ;01
		MOVWF	DIS_NUMY
        CALL    DISP2
        CALL    DELAY1
                
        GOTO    PROG_BEG
DISP1

		BCF		STATUS,RP0
		CALL	init
	  	CALL    delay
	  	CALL    delay
		CALL	displayL
        CALL    DELAY1
        RETURN
DISP2	 
		BCF		STATUS,RP0
		CALL	init
	  	CALL    delay
	  	CALL    delay
		CALL	displayR
        CALL    DELAY1
        RETURN

delay
		MOVLW	0x0F
		MOVWF	R0
DELAY_1
		DECFSZ	R0,1
		GOTO 	DELAY_1
		RETURN
init
		;RESET
		MOVLW	0xE2
		MOVWF	cmd_display
		CALL	writeCMDM         ;reset  L
		CALL	writeCMDS         ;reset  R
		;OFF DISPLAY
		;MOVLW	0xAE
		;MOVWF	cmd_display
		;CALL	writeCMDM
		;CALL	writeCMDS
		;ON STATIC DISPLAY
		MOVLW	0xA4
		MOVWF	cmd_display       ;static   disp
		CALL	writeCMDM
		CALL	writeCMDS    
		;SELECT 1/32 DUTY
		MOVLW	0xA9
		MOVWF	cmd_display
		CALL	writeCMDM
		CALL	writeCMDS
		;ADC SELECT RIGHTWAYS OUTPUT
		MOVLW	0xA0
		MOVWF	cmd_display       ;clockwise
		CALL	writeCMDM
		CALL	writeCMDS
		;READ MODIFY WRITE ON
		;MOVLW	0xE0
		;MOVWF	cmd_display
		;CALL	writeCMDM
		;CALL	writeCMDS
		;SET COLUMN ADDRESS
		MOVLW	0x00
		MOVWF	cmd_display
		CALL	writeCMDM
		CALL	writeCMDS
		;SET DISPLAY START LINE
		MOVLW	0xC0
		MOVWF	cmd_display
		CALL	writeCMDM
		CALL	writeCMDS
		;ON DISPLAY
		MOVLW	0xAF
		MOVWF	cmd_display
		CALL	writeCMDM
		CALL	writeCMDS
		RETURN
clrScreen

		MOVLW	0x04
		MOVWF	R0
		MOVLW	0xB8
		MOVWF   R1
clr_page
		MOVFW   R1
		MOVWF	cmd_display    ;page
		CALL	writeCMDM
		CALL	writeCMDS
		MOVLW	0x00
		MOVWF	cmd_display    ;colum

		CALL	writeCMDM
		CALL	writeCMDS
		MOVLW	0x3D
		MOVWF   R2
clr_col
		MOVLW	0x00
		MOVWF	data_display    ; clr L,R
		CALL	writeDataM
		CALL	writeDataS
		DECFSZ	R2,1
		GOTO	clr_col
		INCF	R1,1
		DECFSZ	R0,1            ; delay
		GOTO	clr_page
		MOVLW	0xFF
		MOVFW	data_display    ; black
		RETURN
displayL
		BCF		STATUS,RP1      
		BCF		STATUS,RP0
        MOVFW   DIS_TABL
        BSF     STATUS,RP1
        BCF     STATUS,RP0       ; DIS_TABL >> PMADR
        MOVWF   PMADR
		BCF	    STATUS,RP1
        MOVFW   DIS_TABH
		BSF	    STATUS,RP1
        MOVWF   PMADRH           ;DIS_TABH >> PMADRH
        BCF		STATUS,RP1
        BCF		STATUS,RP0

		BCF		STATUS,RP1
        BCF		STATUS,RP0
        MOVFW	DIS_STY           ;DIS_STY+0XB8=R1
        ADDLW	0xB8
		MOVWF	R1
		MOVFW   DIS_STX
		MOVWF   R4                 ;DIS_STX >> R4
		MOVFW   DIS_NUMX      
		MOVWF   DIS_CNTX           ;DIS_NUMX >> DIS_CNTX  
		MOVFW   DIS_NUMY
		MOVWF   DIS_CNTY           ;DIS_NUMY >> DIS_CNTY
		BCF		STATUS,Z
		MOVLW	0x00               
		SUBWF	DIS_MOD,0          ;DIS_MOD-W=W
		BTFSC	STATUS,Z           ;DIS_MOD=0,TO SET_LDISY1
		GOTO	SET_LDISY1         ;ELSE NEXT
		MOVLW	0x01               
		SUBWF	DIS_MOD,0          ;DIS_MOD=1,TO SET_LDISY2
		BTFSC	STATUS,Z           ;ELSE NEXT
		GOTO	SET_LDISY2        
		MOVLW	0x02
		SUBWF	DIS_MOD,0
		BTFSC	STATUS,Z           ;DIS_MOD=2,TO SET_LDISY3
		GOTO	SET_LDISY3         ;ELSE NEXT
		MOVLW	0x03
		SUBWF	DIS_MOD,0
		BTFSC	STATUS,Z           ;DIS_MOD=3,TO SET_LDISY4
		GOTO	SET_LDISY4         ;ELSE TO DIS_CHL_RET
		GOTO    DIS_CHL_RET
SET_LDISY1
		MOVLW	0x01
		MOVWF	DIS_MODY            
		MOVLW	0x08
		MOVWF	DIS_MODX
		GOTO	LOOP_COLM
SET_LDISY2
		MOVLW	0x01
		MOVWF	DIS_MODY
		MOVLW	0x010
		MOVWF	DIS_MODX
		GOTO	LOOP_COLM
SET_LDISY3
		MOVLW	0x02
		MOVWF	DIS_MODY
		MOVLW	0x010
		MOVWF	DIS_MODX
		GOTO	LOOP_COLM
SET_LDISY4
		MOVLW	0x02
		MOVWF	DIS_MODY
		MOVLW	0x08
		MOVWF	DIS_MODX
		;st display one col
LOOP_COLM
		MOVFW	DIS_MODY
		MOVWF	R2             ;R2=1 OR R2=2
DIS21
		BCF		STATUS,RP1
        BCF		STATUS,RP0
		MOVFW	R1              ; R1=DIS_STY+0XB8
        MOVWF   cmd_display     ; column address set
        CALL    writeCMDM       ;page0 L, R
        CALL    writeCMDS
        MOVFW	R4              ;R4=DIS_STX

        MOVWF   cmd_display
        CALL    writeCMDM
        CALL    writeCMDS       ; L,R
        MOVFW	DIS_MODX
        MOVWF	R3              ; R3=0X08 
        ;st display one word
DIS2
        BSF		STATUS,RP1
        BSF     STATUS,RP0
        BSF     PMCON1,RD
        NOP
        NOP
        NOP
        BCF     STATUS,RP0
        MOVFW   PMDATA           ;FROM FLASH TO data_display
        BCF     STATUS,RP1        
        MOVWF   data_display
        CALL    writeDataM       ;data to lcd 
        BSF     STATUS,RP1
        BCF     STATUS,RP0
        INCF    PMADR,1          ;adr+1 
        BCF		STATUS,RP1
        BCF		STATUS,RP0
        DECFSZ  R3,1
        GOTO    DIS2             ;delay 
        INCF	R1,1
        DECFSZ	R2,1
        GOTO	DIS21
        ;end display one word
        MOVFW	DIS_STY
        ADDLW	0xB8
		MOVWF	R1
        MOVFW	DIS_MODX
        ADDWF	DIS_STX,0
        MOVWF   R4
        DECFSZ	DIS_CNTX,1
        GOTO	LOOP_COLM
        ;end display one col
        MOVFW   DIS_NUMX
        MOVWF   DIS_CNTX
        MOVFW   DIS_STX
        MOVWF   R4
        MOVFW	DIS_STY
        ADDLW	0xB8
		ADDWF   DIS_MODY,0
		MOVWF   R1
        DECFSZ	DIS_NUMY,1
        GOTO	LOOP_COLM
DIS_CHL_RET
        BCF		STATUS,RP1
        BCF		STATUS,RP0
        RETURN

displayR
		BCF		STATUS,RP1
		BCF		STATUS,RP0
        MOVFW   DIS_TABL
        BSF     STATUS,RP1
        BCF     STATUS,RP0
        MOVWF   PMADR
		BCF	    STATUS,RP1
        MOVFW   DIS_TABH
		BSF 	STATUS,RP1
        MOVWF   PMADRH
        BCF		STATUS,RP1
        BCF		STATUS,RP0

		BCF		STATUS,RP1
        BCF		STATUS,RP0
        MOVFW	DIS_STY
        ADDLW	0xB8
		MOVWF	R1
		MOVFW   DIS_STX
		MOVWF   R4
		MOVFW   DIS_NUMX
		MOVWF   DIS_CNTX
		MOVFW   DIS_NUMY
		MOVWF   DIS_CNTY

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -