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

📄 pic-lcd.asm

📁 用PIC汇编实现单片机控制LCD显示以及人机对话全部代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   GOTO  TRET
KUANG4:									;第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 05H
   CALL  W_DATA
   CALL  W_DATA
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 00H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 04H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   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
   MOVLW 03H
   MOVWF PCOM
   GOTO  TRET
KUANG5:									;第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 080H
   CALL  W_DATA
   CALL  W_DATA
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 0C0H
   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
   MOVLW 04H
   MOVWF PCOM
   GOTO  TRET
KUANG6:									;第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 01H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 02H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 00H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 04H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   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
   MOVLW 05H
   MOVWF PCOM
   GOTO  TRET
KUANG79:									;第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
   MOVLW 0C0H
   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
   MOVLW 07H
   SUBWF PCOM,W
   MOVLW 06H
   BTFSS 3,2
   MOVLW 08H
   MOVWF PCOM
   GOTO  TRET
KUANG8:									;第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 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 05H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 05H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 00H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 04H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   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
   MOVLW 07H
   MOVWF PCOM
   GOTO  TRET
;;;;;;;;;;;;;;;;;;;;;;;;;;
    ORG   0900H
KUANG10:									;第0列
   BCF   PCLATH,3
   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 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 05H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 00H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 04H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 07H
   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
   MOVLW 09H
   MOVWF PCOM
   GOTO  TRET
KUANG1100:									;第8列
   BCF   PCLATH,3
   MOVLW 10H  ;B'00010-Y7-Y6-Y5'
   ;XORWF YCOM_H_VP,W
   CALL  W_INS;设置列地址高位
   MOVLW 07H  ;B'0000-Y4-Y3-Y2-Y1'
   ;XORWF YCOM_L_VP,W
   CALL  W_INS;设置列地址低位
   MOVLW 020H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 041H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 0FFH
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 040H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 020H
   CALL  W_DATA
   CALL  W_DATA
   MOVLW 0AH
   MOVWF PCOM
   GOTO  TRET
;***********************
DISP_PIC:;最多60条指令
   BCF   PCLATH,3
   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;设置列地址低位
      BSF   PCLATH,3
      BTFSC WORK,POW
      GOTO  DISP_PC
DISP_VOL_POW:
      INCF  TCOUNT,1;YCOM_H_VP=00,YCOM_L_VP=0
      MOVF  TCOUNT,W
      BCF   PCLATH,3
      BSF   PCLATH,4
      CALL  TABLE_POW
      BCF   PCLATH,4
      BSF   PCLATH,3
   BTFSC WORK,VOL
      GOTO  DISP_POW
DISP_VOL:
       BSF   PCLATH,4
         CALL  TABLE_VOL
       BCF   PCLATH,4
         MOVWF TEMP
         MOVF  TCOUNT,W
         SUBWF VOL_TEMP,W
         BTFSS 3,0
         CLRF  TEMP
      GOTO  DISP_VOL_POW_COM
DISP_POW:
   MOVWF    TEMP;YCOM_H_VP=1,YCOM_L_VP=5
   MOVLW 04H
   SUBWF TCOUNT,W
   BTFSC 3,2
   GOTO  DISP_POW3
   MOVLW 07H
   SUBWF TCOUNT,W
   BTFSC 3,2
   GOTO  DISP_POW2
   MOVLW 0AH
   SUBWF TCOUNT,W
   BTFSS 3,2
   GOTO  DISP_VOL_POW_COM
DISP_POW1:
      MOVLW 081H
      BTFSC POWF,1
      ANDWF TEMP,1
      GOTO  DISP_VOL_POW_COM
DISP_POW2:
      MOVLW 081H
      BTFSC POWF,2
      ANDWF TEMP,1
      GOTO  DISP_VOL_POW_COM
DISP_POW3:
      MOVLW 081H
      BTFSC POWF,3
      ANDWF TEMP,1
;-------------------------------
;-------------------------------
DISP_VOL_POW_COM:
      MOVF  TEMP,W
     BCF   PCLATH,3
      CALL  W_DATA
      INCF  YCOM_L_VP,1
      CALL  W_DATA
     BSF PCLATH,3
;--------------------
      MOVLW 10H
      SUBWF YCOM_L_VP,W
      BTFSS 3,0
      GOTO  DISP_VP_COM0
      CLRF  YCOM_L_VP
      INCF  YCOM_H_VP,1
;----------------------
DISP_VP_COM0:
      INCF  PCOUNT,1
      MOVLW 10H
      SUBWF PCOUNT,W
      BCF   PCLATH,3
      BTFSS 3,2
      GOTO  TRET
      BSF   PCLATH,3
      CLRF  PCOUNT
      MOVLW 0FFH
      MOVWF TCOUNT
      BTFSC WORK,VOL
      GOTO  DISP_POW_END
DISP_VOL_END:;为DISP_POW作准备
      BSF   WORK,VOL
      MOVLW 01H  ;B'00010-Y7-Y6-Y5'
      MOVWF YCOM_H_VP
      MOVLW 05H  ;B'0000-Y4-Y3-Y2-Y1'
      MOVWF YCOM_L_VP
      BCF   PCLATH,3
      GOTO  TRET
DISP_POW_END:;为DISP_FREEZ作准备
      BSF   WORK,POW
      MOVLW 02H  ;B'00010-Y7-Y6-Y5'
      MOVWF YCOM_H_VP
      MOVLW 0AH  ;B'0000-Y4-Y3-Y2-Y1'
      MOVWF YCOM_L_VP
      BCF   PCLATH,3
      GOTO  TRET
;------------------------------
;------------------------------
DISP_PC:;最多170条指令
      BCF   PCLATH,3
   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;设置列地址低位
      BSF   PCLATH,3
   BTFSS WORK,FREEZ
    GOTO  DISP_FREEZ
      BTFSS FLAG,PPC;显示通信图表
      GOTO  DISP_PC0;YCOM_H_VP=3,YCOM_L_VP=6
  BCF   PCLATH,3
      MOVLW 03H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 0F7H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 09BH
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 093H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 09BH
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 0F7H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 03H
      CALL  W_DATA
      CALL  W_DATA
   BSF   PCLATH,3
      GOTO  DISP_PC_END
DISP_PC0:
      BCF   PCLATH,3
      MOVLW 00H
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
DISP_PC_END:
      MOVLW B'11100001'
      ANDWF WORK,1
   BCF   PCLATH,3
      ;为年高位显示准备
      MOVLW 15H  ;B'00010-Y7-Y6-Y5'
      ;XORWF YCOM_H,W
      CALL  W_INS;设置列地址高位
      MOVLW 0AH  ;B'0000-Y4-Y3-Y2-Y1'
      ;XORWF YCOM_L,W
      CALL  W_INS;设置列地址低位
;---------------------
      MOVLW 2EH;显示20年的高位
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 2AH
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 3AH
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 00H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 3EH
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 22H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 3EH
      CALL  W_DATA
      CALL  W_DATA

      ;为VOL_POW_FREEZ_PC做准备。
      MOVLW 00H  ;B'00010-Y7-Y6-Y5'
      MOVWF YCOM_H_VP
      ;MOVLW 00H  ;B'0000-Y4-Y3-Y2-Y1'
      MOVWF YCOM_L_VP
      MOVWF PCOM
      GOTO  TRET
;************************
DISP_FREEZ:;最多180条指令
      BTFSC   WORK,TST
     GOTO   DISP_FREEZ_TEST
   BTFSS FLAG,FREEZE;YCOM_H_VP=2,YCOM_L_VP=A
    GOTO DISP_FREEZ0
     BCF   PCLATH,3
      MOVLW 55H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 22H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 55H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 08H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 55H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 22H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 55H
      CALL  W_DATA
      CALL  W_DATA
     BSF PCLATH,3
      GOTO  DISP_FREEZ_END
DISP_FREEZ0:
      BCF   PCLATH,3
      MOVLW 00H
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
      ;NOP
      CALL  W_DATA
      CALL  W_DATA
DISP_FREEZ_END:
      BSF   WORK,FREEZ
      ;为通信作准备
      MOVLW 03H  ;B'00010-Y7-Y6-Y5'
      MOVWF YCOM_H_VP
      MOVLW 06H  ;B'0000-Y4-Y3-Y2-Y1'
      MOVWF YCOM_L_VP
      BCF   PCLATH,3
      GOTO  TRET
DISP_FREEZ_TEST:
    BCF   PCLATH,3
      MOVLW 40H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 80H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 81H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 0FFH
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 81H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 80H
      CALL  W_DATA
      CALL  W_DATA
      MOVLW 40H
      CALL  W_DATA
      CALL  W_DATA
    BSF  PCLATH,3
      GOTO  DISP_FREEZ_END
;******************************************************
;******************************************************
       ;ORG     0A10H
;******************************************************
AD_DISP:
   BCF   PCLATH,3
   MOVLW 10H  ;B'00010-Y7-Y6-Y5'
   XORWF YCOM_H_W,W
   CALL  W_INS;设置列地址高位
   MOVLW 00H  ;B'0000-Y4-Y3-Y2-Y1'
   XORWF YCOM_L_W,W
   CALL  W_INS;设置列地址低位
   BSF   PCLATH,3
      BTFSC WORK,CLRLD
      G

⌨️ 快捷键说明

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