📄 display-g.asm
字号:
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 + -