📄 pic-lcd.asm
字号:
BCF PCLATH,3
CALL W_DATA
;NOP
CALL W_DATA
MOVLW 7AH;;;??
SUBWF TCOUNT,W
BTFSC 3,2
GOTO DISP450
MOVLW 0EEH;7B+73
SUBWF TCOUNT,W
BTFSS 3,2
GOTO TRET
DISP450:
DECF PCOM,1
MOVLW 00H ;PAGE5
MOVWF YCOM_L
MOVLW 10H ;B'00010-Y7-Y6-Y5'
XORWF YCOM_H,W
CALL W_INS;设置列地址高位
MOVLW 00H ;B'0000-Y4-Y3-Y2-Y1'
XORWF YCOM_L,W
CALL W_INS;设置列地址低位
MOVLW 05H
SUBWF PCOM,W
BTFSS 3,2
GOTO TRET
MOVLW 0FFH
MOVWF TCOUNT
BSF DISP_FG,3
GOTO TRET
;*************************
DISP67:
INCF TCOUNT,1
MOVF TCOUNT,W
BSF PCLATH,4
CALL PAGE67
BCF PCLATH,4
CALL W_DATA
;NOP
CALL W_DATA
MOVLW 73H
SUBWF TCOUNT,W
BTFSC 3,2
GOTO DISP670
MOVLW 0E4;73H+072H
SUBWF TCOUNT,W
BTFSS 3,2
GOTO TRET
DISP670:
DECF PCOM,1
MOVLW 04H
SUBWF PCOM,W
MOVLW 2H ;PAGE7
BTFSS 3,2
MOVLW 8H ;PAGE8
MOVWF YCOM_L
MOVLW 10H ;B'00010-Y7-Y6-Y5'
XORWF YCOM_H,W
CALL W_INS;设置列地址高位
MOVLW 00H ;B'0000-Y4-Y3-Y2-Y1'
XORWF YCOM_L,W
CALL W_INS;设置列地址低位
MOVLW 03H
SUBWF PCOM,W
BTFSS 3,2
GOTO TRET
MOVLW 0FFH
MOVWF TCOUNT
BSF DISP_FG,4
GOTO TRET
;*************************
DISP89:
INCF TCOUNT,1
movlw 18H
movwf PCLATH
MOVF TCOUNT,W
CALL PAGE89
clrf PCLATH
CALL W_DATA
;NOP
CALL W_DATA
MOVLW 63H;;;??
SUBWF TCOUNT,W
BTFSC 3,2
GOTO DISP890
MOVLW 0AFH;63+4B
SUBWF TCOUNT,W
BTFSS 3,2
GOTO TRET
DISP890:
DECF PCOM,1
MOVLW 02H
SUBWF PCOM,W
BTFSS 3,2
GOTO DISP_ON_END
MOVLW 01H
MOVWF YCOM_H
MOVLW 04H ;PAGE9
MOVWF YCOM_L
MOVLW 10H ;B'00010-Y7-Y6-Y5'
XORWF YCOM_H,W
CALL W_INS;设置列地址高位
MOVLW 00H ;B'0000-Y4-Y3-Y2-Y1'
XORWF YCOM_L,W
CALL W_INS;设置列地址低位
GOTO TRET
DISP_ON_END:
MOVLW 0FFH
MOVWF TCOUNT
MOVLW B'00011100'
XORWF DISP_FG,1
MOVLW 09H
MOVWF PCOM
CLRF YCOM_H
MOVLW 11H ;B'00010-Y7-Y6-Y5'
;XORWF YCOM_H,W
CALL W_INS;设置列地址高位
MOVLW 04H ;B'0000-Y4-Y3-Y2-Y1'
;XORWF YCOM_L,W
CALL W_INS;设置列地址低位
DECFSZ CLR_RAM,1;开机画面显示次数
GOTO TRET
;//MOVLW 0FH
;//MOVWF CLR_RAM;开机画面显示次数
MOVLW 06H
XORWF FLAG,1
CLRF PCOM
CLRF YCOM_L
BCF PD,4
GOTO TRET
;*****以上程序包括LCM设置,清屏,开机画面等**
;*******************************************
DISP_WK:;工作换面
MOVLW 0B0H ;B'1011-P3-P2-P1-P0'9页
XORWF PCOM,W;设置页地址
CALL W_INS
BTFSS WORK,KUANG
GOTO DISP_KUANG
BSF PCLATH,3
INCF PIC_WAVE,1
BTFSS PIC_WAVE,0
GOTO AD_DISP;显示波形
BTFSC PIC_WAVE,1
GOTO DISP_PIC;显示音量电量冻结通信
BCF PCLATH,3
GOTO DISP_TIM
;*******************************************
DISP_TIM:;刷新时间显示
MOVLW 10H ;B'00010-Y7-Y6-Y5'
XORWF YCOM_H_TD,W
CALL W_INS;设置列地址高位
MOVLW 00H ;B'0000-Y4-Y3-Y2-Y1'
XORWF YCOM_L_TD,W
CALL W_INS;设置列地址低位
BTFSS TIMF,0
GOTO DISP_HOUR
BTFSS TIMF,2
GOTO DISP_MIN
BTFSS TIMF,3
GOTO DISP_YEAR
BTFSS TIMF,4
GOTO DISP_MON
BTFSS TIMF,5
GOTO DISP_DAY
GOTO $
DISP_HOUR:
MOVF HOUR,W
SUBLW 23H
MOVLW 00H
BTFSS 3,0
MOVWF HOUR
MOVF HOUR,W
GOTO DISP_TIM_COM
DISP_MIN:
MOVF MINR,W
SUBLW 59H
MOVLW 00H
BTFSS 3,0
MOVWF MINR
MOVF MINR,W
GOTO DISP_TIM_COM
DISP_YEAR:
MOVF YEAR,W
SUBLW 099H
MOVLW 00H
BTFSS 3,0
MOVWF YEAR
MOVF YEAR,W
GOTO DISP_TIM_COM
DISP_MON:
MOVF MONR,W
SUBLW 12H
MOVLW 01H
BTFSS 3,0;<=12
MOVWF MONR
SUBWF MONR,W;>=1
MOVLW 01H
BTFSS 3,0
MOVWF MONR
MOVF MONR,W
GOTO DISP_TIM_COM
DISP_DAY:
MOVF DAYR,W
SUBLW 31H
MOVLW 01H
BTFSS 3,0;<=31
MOVWF DAYR
SUBWF DAYR,W;>=1
MOVLW 01H
BTFSS 3,0
MOVWF DAYR
MOVF DAYR,W
GOTO DISP_TIM_COM
;-----------------------------
DISP_TIM_COM:
BTFSC DCOUNT2,0 ;是否转换高低位
GOTO DISP_COM1
MOVWF TEMP
SWAPF TEMP,W
DISP_COM1:
ANDLW 0FH
MOVWF TEMP
MOVF TEMP,1
;----------------------
BTFSC 3,2
GOTO TABLE0
MOVLW 05H
SUBWF TEMP,W
BTFSC 3,0
GOTO DISP_COM56789
;----------------------
MOVLW 01H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE1
MOVLW 02H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE2
MOVLW 03H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE3
MOVLW 04H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE4
;--------------------
DISP_COM56789:
MOVLW 05H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE5
MOVLW 06H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE6
MOVLW 07H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE7
MOVLW 08H
SUBWF TEMP,W
BTFSC 3,2
GOTO TABLE8
MOVLW 09H
SUBWF TEMP,W
BTFSS 3,2
GOTO $;陷阱你跳啊~~
TABLE9:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA9
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE8:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA8
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE7:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA7
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE6:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA6
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE5:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA5
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE4:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA4
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE3:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA3
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE2:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA2
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE1:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA1
BCF PCLATH,3
BCF PCLATH,4
GOTO DISP_COM10
TABLE0:
BSF PCLATH,3
INCF DCOUNT,F
BSF PCLATH,4
MOVLW 03H
ANDWF DCOUNT,W
CALL DATA0
BCF PCLATH,3
BCF PCLATH,4
;---------------------------
DISP_COM10:
MOVWF TEMP
;---------------------------
;**************************
DISP_COM11:
MOVF TEMP,W
CALL W_DATA
INCF YCOM_L_TD,1
CALL W_DATA
;------------------------
MOVLW 10H
SUBWF YCOM_L_TD,W
BTFSS 3,0
GOTO DISP_TD_COM0
CLRF YCOM_L_TD
INCF YCOM_H_TD
;------------------------
DISP_TD_COM0:
DECFSZ DCOUNT1
GOTO TRET
MOVLW 04H
MOVWF DCOUNT1
DECFSZ DCOUNT2
GOTO TRET
MOVLW 02H
MOVWF DCOUNT2
BTFSC TIMF,0
GOTO DISP_COM_SET
BSF TIMF,0
DISP_COM_SET:
BSF 3,0
RLF TIMF,1
BTFSC TIMF,5
GOTO DISP_TIM_END
BTFSC TIMF,4
GOTO DISP_D
BTFSC TIMF,3
GOTO DISP_D
BTFSC TIMF,2
GOTO DISP_DATE
BTFSC TIMF,1
GOTO DISP_DD
GOTO $
;-----------------------
DISP_DATE:
MOVLW 06H ;B'00010-Y7-Y6-Y5'
MOVWF YCOM_H_TD
MOVLW 02H ;B'0000-Y4-Y3-Y2-Y1'
MOVWF YCOM_L_TD
GOTO TRET
;----------------------
DISP_DD:
MOVLW 14H
CALL W_DATA
INCF YCOM_L_TD,1
CALL W_DATA
MOVLW 00H
CALL W_DATA
INCF YCOM_L_TD,1
CALL W_DATA
GOTO TRET
DISP_D:
MOVLW 02H
CALL W_DATA
INCF YCOM_L_TD,1
CALL W_DATA
MOVLW 00H
CALL W_DATA
INCF YCOM_L_TD,1
CALL W_DATA
GOTO TRET
;---------------------
DISP_TIM_END:
MOVLW 04H ;B'00010-Y7-Y6-Y5'
MOVWF YCOM_H_TD
MOVLW 04H ;B'0000-Y4-Y3-Y2-Y1'
MOVWF YCOM_L_TD
CLRF TIMF
GOTO TRET
;**************************
;**************************
DISP_KUANG:;最多50条指令
BSF PCLATH,3
movlw .11
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG1100
MOVLW 0AH
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG10
BCF PCLATH,3
MOVLW 09H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG79
MOVLW 08H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG8
movlw 07H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG79
MOVLW 06H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG6
MOVLW 05H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG5
MOVLW 04H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG4
MOVLW 03H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG3
MOVLW 02H
SUBWF PCOM,W
BTFSC 3,2
GOTO KUANG2
MOVLW 01H
SUBWF PCOM,W
BTFSS 3,2
GOTO $
KUANG1:
INCF TIM,1
MOVLW 0AH
SUBWF TIM,W
MOVLW 0F8H
BTFSS 3,2
MOVLW 018H
CALL W_DATA
CALL W_DATA
MOVLW 080H
SUBWF TIM,W
BTFSS 3,2
GOTO TRET
BSF WORK,KUANG
MOVLW 00H;;为VOL_POW_FREEZ_PC准备
MOVWF PCOM
MOVWF YCOM_H_VP
MOVWF YCOM_L_VP
GOTO TRET
KUANG2: ;第8列
MOVLW 10H ;B'00010-Y7-Y6-Y5'
;XORWF YCOM_H_VP,W
CALL W_INS;设置列地址高位
MOVLW 08H ;B'0000-Y4-Y3-Y2-Y1'
;XORWF YCOM_L_VP,W
CALL W_INS;设置列地址低位
MOVLW 01H
CALL W_DATA
CALL W_DATA
MOVLW 0FFH
CALL W_DATA
CALL W_DATA
MOVLW 01H;;;;;;;为框1准备
MOVWF PCOM
MOVLW 10H ;B'00010-Y7-Y6-Y5'
;XORWF YCOM_H_VP,W
CALL W_INS;设置列地址高位
MOVLW 00H ;B'0000-Y4-Y3-Y2-Y1'
;XORWF YCOM_L_VP,W
CALL W_INS;设置列地址低位
GOTO TRET
KUANG3: ;第0列
MOVLW 10H ;B'00010-Y7-Y6-Y5'
;XORWF YCOM_H_VP,W
CALL W_INS;设置列地址高位
MOVLW 00H ;B'0000-Y4-Y3-Y2-Y1'
;XORWF YCOM_L_VP,W
CALL W_INS;设置列地址低位
MOVLW 0C0H
CALL W_DATA
CALL W_DATA
MOVLW 040H
CALL W_DATA
CALL W_DATA
CALL W_DATA
CALL W_DATA
MOVLW 00H
CALL W_DATA
CALL W_DATA
MOVLW 0C0H
CALL W_DATA
CALL W_DATA
MOVLW 040H
CALL W_DATA
CALL W_DATA
MOVLW 0C0H
CALL W_DATA
CALL W_DATA
MOVLW 00H
CALL W_DATA
CALL W_DATA
MOVLW 01H
CALL W_DATA
CALL W_DATA
MOVLW 0FFH
CALL W_DATA
CALL W_DATA ;11-6 V
MOVLW 02H
MOVWF PCOM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -