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

📄 pic-lcd.asm

📁 用PIC汇编实现单片机控制LCD显示以及人机对话全部代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   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 + -