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