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

📄 display-g.asm

📁 PIC1687X单片机,LCD12232汉显,所有数据存于片内FLAISH中,断电保持,硬件调试通过
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		BCF		STATUS,Z
		MOVLW	0x00
		SUBWF	DIS_MOD,0
		BTFSC	STATUS,Z
		GOTO	SET_RDISY1
		MOVLW	0x01
		SUBWF	DIS_MOD,0
		BTFSC	STATUS,Z
		GOTO	SET_RDISY2
		MOVLW	0x02
		SUBWF	DIS_MOD,0
		BTFSC	STATUS,Z
		GOTO	SET_RDISY3
		MOVLW	0x03
		SUBWF	DIS_MOD,0
		BTFSC	STATUS,Z
		GOTO	SET_RDISY4
		GOTO    DIS_CHR_RET
SET_RDISY1
		MOVLW	0x01
		MOVWF	DIS_MODY
		MOVLW	0x08
		MOVWF	DIS_MODX
		GOTO	LOOP_COLS
SET_RDISY2
		MOVLW	0x01
		MOVWF	DIS_MODY
		MOVLW	0x010
		MOVWF	DIS_MODX
		GOTO	LOOP_COLS
SET_RDISY3
		MOVLW	0x02
		MOVWF	DIS_MODY
		MOVLW	0x010
		MOVWF	DIS_MODX
		GOTO	LOOP_COLS
SET_RDISY4
		MOVLW	0x02
		MOVWF	DIS_MODY
		MOVLW	0x08
		MOVWF	DIS_MODX
		;st display one col
LOOP_COLS
		MOVFW	DIS_MODY
		MOVWF	R2
DIS21_R
		BCF		STATUS,RP1
        BCF		STATUS,RP0
		MOVFW	R1
        MOVWF   cmd_display
 ;       CALL    writeCMDM
        CALL    writeCMDS
        MOVFW	R4
        MOVWF   cmd_display
 ;       CALL    writeCMDM
        CALL    writeCMDS
        MOVFW	DIS_MODX
        MOVWF	R3
        ;st display one word
DIS2_R
        BSF		STATUS,RP1
        BSF     STATUS,RP0
        BSF     PMCON1,RD
        NOP
        NOP
        NOP
        BCF     STATUS,RP0
        MOVFW   PMDATA
        BCF     STATUS,RP1
        MOVWF   data_display
        CALL    writeDataS
        BSF     STATUS,RP1
        BCF     STATUS,RP0
        INCF    PMADR,1
        BCF		STATUS,RP1
        BCF		STATUS,RP0
        DECFSZ  R3,1
        GOTO    DIS2_R
        INCF	R1,1
        DECFSZ	R2,1
        GOTO	DIS21_R
        ;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_COLS
        ;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_COLS
DIS_CHR_RET
        BCF		STATUS,RP1
        BCF		STATUS,RP0
        RETURN

writeCMDM
		BSF		STATUS,RP0
		MOVLW	0xFF
		MOVWF	TRISB
		BCF		STATUS,RP0
cwait_ry_m
		MOVLW	0xFF
		MOVWF	PORTB
		BCF		PORTC,LCD_DI     ;disp  com
		BSF		PORTC,LCD_RW     ;rd 
		BSF		PORTC,LCD_EN1    ;L eff 
		NOP
		NOP
		MOVFW	PORTB
		MOVWF	TEMP1
		BTFSC	TEMP1,7          ;busy,wait;ready,next
		GOTO	cwait_ry_m
		BSF		STATUS,RP0
		MOVLW	0x00
		MOVWF	TRISB
		BCF		STATUS,RP0
		BCF		PORTC,LCD_RW      ;wt
		MOVFW	cmd_display    
		MOVWF	PORTB
		BSF		PORTC,LCD_EN1     ;L eff
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		BCF		PORTC,LCD_EN1      ;L  ineff
		NOP
		NOP
		NOP
		RETURN
writeCMDS
		BSF		STATUS,RP0
		MOVLW	0xFF
		MOVWF	TRISB               ;B  in
		BCF		STATUS,RP0
cwait_ry_s
		MOVLW	0xFF
		MOVWF	PORTB
		BCF		PORTC,LCD_DI         ; disp com
		BSF		PORTC,LCD_RW         ; wt
		BSF		PORTC,LCD_EN2        ; R eff 
		NOP
		NOP
		MOVFW	PORTB
		MOVWF	TEMP1
		BTFSC	TEMP1,7
		GOTO	cwait_ry_s           ; busy,wait
		BSF		STATUS,RP0           ; else,next
		MOVLW	0x00 
		MOVWF	TRISB                ; B out
		BCF		STATUS,RP0
		BCF		PORTC,LCD_RW         ; rd
		MOVFW	cmd_display
		MOVWF	PORTB
		BSF		PORTC,LCD_EN2        ;R eff
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		BCF		PORTC,LCD_EN2         ; R ineff
		NOP
		NOP
		NOP
		RETURN
writeDataM
		BSF		STATUS,RP0
		MOVLW	0xFF
		MOVWF	TRISB                 ; B in
		BCF		STATUS,RP0
dwait_ry_m
		MOVLW	0xFF
		MOVWF	PORTB
		BCF		PORTC,LCD_DI          ; disp com
		BSF		PORTC,LCD_RW          ; rd
		BSF		PORTC,LCD_EN1         ; L 
		NOP
		NOP
		MOVFW	PORTB  
		MOVWF	TEMP1
		BTFSC	TEMP1,7
		GOTO	dwait_ry_m            ; busy,wait 
		BSF		STATUS,RP0            ; ready,next 
		MOVLW	0x00
		MOVWF	TRISB                 ; B out
		BCF		STATUS,RP0
		BSF		PORTC,LCD_DI          ; disp data 
		BCF		PORTC,LCD_RW          ; wt
		MOVFW	data_display          ; 
		MOVWF	PORTB                 ; data>portb
		BSF		PORTC,LCD_EN1         ; L
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		BCF		PORTC,LCD_EN1          ; L off
		NOP
		NOP
		NOP
		RETURN
writeDataS
		BSF		STATUS,RP0
		MOVLW	0xFF
		MOVWF	TRISB
		BCF		STATUS,RP0             ; B in 
dwait_ry_s
		MOVLW	0xFF
		MOVWF	PORTB
		BCF		PORTC,LCD_DI           ; disp com
		BSF		PORTC,LCD_RW           ; rd
		BSF		PORTC,LCD_EN2          ; R
		NOP
		NOP
		MOVFW	PORTB
		MOVWF	TEMP1
		BTFSC	TEMP1,7                ;busy,wait 
		GOTO	dwait_ry_s          
		BSF		STATUS,RP0             ;ready,next
		MOVLW	0x00
		MOVWF	TRISB                  ; B out
		BCF		STATUS,RP0
		BSF		PORTC,LCD_DI           ; disp data 
		BCF		PORTC,LCD_RW           ; wt
		MOVFW	data_display           ; 0x00 
		MOVWF	PORTB                  ; clear
		BSF		PORTC,LCD_EN2          ; R 
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		BCF		PORTC,LCD_EN2           ; R off
		NOP
		NOP
		NOP
		RETURN
DELAY1
    	MOVLW	0xFF
        MOVLW   JS1
    	MOVWF	JS2        
DELAY_0
        MOVLW   0XFF
        MOVWF   JS3
DELAY_2
    	DECFSZ	JS3
    	GOTO 	DELAY_2
        DECFSZ  JS1
        GOTO    DELAY_0
DELAY_3
        DECFSZ  JS2
        GOTO    DELAY_3      ;0
    	return
TO_BCD
        CLRF    TEMP0
        CLRF    TEMP
        MOVFW   DATA0
        MOVWF   TEMPB
        MOVWF   TEMP
BCDH
        MOVLW   0X64
        BCF    STATUS,C
        SUBWF   TEMPB,1
        BTFSS   STATUS,C
        GOTO    BCDH1
        INCF    TEMP0,1
        MOVFW   TEMPB
        MOVWF   TEMP
        GOTO    BCDH
BCDH1
        MOVFW   TEMP
        MOVWF   TEMPB
        MOVFW   TEMP0
        MOVWF   R10        ;handred
        CLRF    TEMP0
BCDD
        MOVLW   0X0A
        BCF    STATUS,C
        SUBWF   TEMPB,1
        BTFSS   STATUS,C
        GOTO    BCDD1
        INCF    TEMP0,1
        MOVFW   TEMPB
        MOVWF   TEMP
        GOTO    BCDD
BCDD1
        MOVFW   TEMP
        MOVWF   TEMPB
        MOVFW   TEMP0
        MOVWF   R11         ;decade
        MOVFW   TEMPB
        MOVWF   R12        ;entries
        NOP
        return
DATAZH
        MOVFW   TEMP2
        SUBLW   0X09
        BTFSC   STATUS,Z
        GOTO    ZC9
        MOVFW   TEMP2
        SUBLW   0X08
        BTFSC   STATUS,Z
        GOTO    ZC8
        MOVFW   TEMP2
        SUBLW   0X07
        BTFSC   STATUS,Z
        GOTO    ZC7
        MOVFW   TEMP2
        SUBLW   0X06
        BTFSC   STATUS,Z
        GOTO    ZC6
        MOVFW   TEMP2
        SUBLW   0X05
        BTFSC   STATUS,Z
        GOTO    ZC5
        MOVFW   TEMP2
        SUBLW   0X04
        BTFSC   STATUS,Z
        GOTO    ZC4
        MOVFW   TEMP2
        SUBLW   0X03
        BTFSC   STATUS,Z
        GOTO    ZC3        
        MOVFW   TEMP2
        SUBLW   0X02
        BTFSC   STATUS,Z
        GOTO    ZC2
        MOVFW   TEMP2
        SUBLW   0X01
        BTFSC   STATUS,Z
        GOTO    ZC1
        MOVFW   TEMP2
        SUBLW   0X00
        BTFSC   STATUS,Z
        GOTO    ZC0
     

ZC9    ; BTFSC   STATUS,Z
       ; GOTO    ZC8
        MOVLW   0X90
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC8
        MOVLW   0X80
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC7
        MOVLW   0X70
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC6
        MOVLW   0X60
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC5     
        MOVLW   0X50
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC4
        MOVLW   0X40
        MOVWF   DIS_TABL  
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
        
ZC3
        MOVLW   0X30
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC2
        MOVLW   0X20
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC1     
        MOVLW   0X10
        MOVWF   DIS_TABL
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
ZC0
        MOVLW   0X00
        MOVWF   DIS_TABL  
        MOVLW   0X0E
        MOVWF   DIS_TABH
        GOTO    DZHRET
DZHRET
        RETURN   

	ORG     0x08F0
EMPT_TAB
	DB      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	ORG     0x0E00
ZERO_TAB
	DB	0x00,0x00,0x00,0xF0,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x00,0x00
	DB	0x00,0x00,0x00,0x07,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x07,0x00,0x00
	ORG	0x0E10
ONE_TAB
	DB      0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00
	DB      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x1F,0x00,0x10,0x00,0x00,0x00,0x00

	ORG     0x0E20
TOW_TAB
	DB	0x00,0x00,0x00,0x18,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x88,0x00,0x70,0x00,0x00
	DB	0x00,0x00,0x00,0x18,0x00,0x14,0x00,0x12,0x00,0x11,0x00,0x10,0x00,0x18,0x00,0x00
	ORG     0x0E30
THREE_TAB
	DB      0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x84,0x00,0xC4,0x00,0xA4,0x00,0x18,0x00,0x00
	DB      0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x07,0x00,0x00
	ORG     0x0E40
FOUR_TAB
	DB      0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x30,0x00,0x08,0x00,0xFC,0x00,0x00,0x00,0x00
	DB      0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x1F,0x00,0x02,0x00,0x00
	ORG     0x0E50
FIVE_TAB
	DB      0x00,0x00,0x00,0x20,0x00,0x38,0x00,0x24,0x00,0x24,0x00,0x44,0x00,0x84,0x00,0x00
	DB      0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x07,0x00,0x00
	ORG     0x0E60
SIX_TAB
	DB      0x00,0x00,0x00,0xC0,0x00,0xB0,0x00,0x48,0x00,0x44,0x00,0x84,0x00,0x04,0x00,0x00
	DB      0x00,0x00,0x00,0x07,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x07,0x00,0x00
	ORG     0x0E70
SEVEN_TAB
	DB      0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xE4,0x00,0x1C,0x00,0x00
	DB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00
	ORG	0x0E80
EIGHT_TAB
	DB      0x00,0x00,0x00,0x38,0x00,0x44,0x00,0x84,0x00,0x84,0x00,0x44,0x00,0x38,0x00,0x00
	DB      0x00,0x00,0x00,0x0E,0x00,0x11,0x00,0x10,0x00,0x10,0x00,0x11,0x00,0x0E,0x00,0x00
	ORG	0x0E90
NINE_TAB
	DB	0x00,0x00,0x00,0x70,0x00,0x88,0x00,0x04,0x00,0x04,0x00,0x88,0x00,0xF0,0x00,0x00
	DB	0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x09,0x00,0x09,0x00,0x06,0x00,0x01,0x00,0x00

	ORG		0x0520
DIS_TAB  
;--  文字:  电  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
     DW  0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00
     DW  0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00
    ORG     0X0540
 ;	/*--  文字:  池  --*/
   ;/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
	DW 0x10,0x60,0x02,0x8C,0x60,0x80,0xF8,0x40,0x40,0xFE,0x20,0x20,0x10,0xF0,0x00,0x00
	DW 0x08,0x08,0x7C,0x03,0x00,0x00,0x3F,0x40,0x40,0x5F,0x40,0x42,0x44,0x43,0x70,0x00 
    ORG     0X560    
;DIS_TAB3
;/*--  文字:  A  --*/
;/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
    DW  0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20    
     ORG   0X0580
;DIS_TAB4
;--  文字:  输  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
    DW  0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00
    DW  0x04,0x04,0x04,0xFF,0x02,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00
     ORG   0X05A0
;DIS_TAB5
;--  文字:  入  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
     DW  0x00,0x00,0x00,0x00,0x01,0x83,0x76,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x10,0x00
     DW  0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x03,0x04,0x18,0x30,0x10,0x00
    ORG   0X05C0
;DIS_TAB4
;--  文字:  输  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
    DW  0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00
    DW  0x04,0x04,0x04,0xFF,0x02,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00
    ORG   0X05E0
;DIS_TAB6
;--  文字:  出  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
     DW  0x00,0x00,0xFC,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0xFC,0x00,0x00
     DW  0x00,0x00,0x7E,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x7E,0x00,0x00
     ORG   0X0600
;DIS_TAB7
;--  文字:  电  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
     DW  0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00
     DW  0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00
     ORG   0X0620
;DIS_TAB8
;--  文字:  流  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
     DW  0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04,0x00
     DW  0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70,0x00
     ORG   0X0640
;DIS_TAB9
;--  文字:  V  --
;--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --
     DW  0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00
     ORG   0X0660
;--  文字:  :  --
;--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --
     DW  0X00,0X00,0X00,0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X30,0X00,0X00,0X00



END

⌨️ 快捷键说明

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