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

📄 pic-lcd.asm

📁 用PIC汇编实现单片机控制LCD显示以及人机对话全部代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   BCF   PE,CLK
   RETURN
;******************************
;******************************
START:
      CLRW
      OPTION
      CLRWDT
      TRIS  PB
      BSF   3,5
      MOVLW 80H
      MOVWF TRISC
      CLRF  TRISE
      MOVLW B'00001111'
      MOVWF TRISD
      BCF   3,5
      MOVLW B'11111111'
      MOVWF PD
      MOVLW 20H
      MOVWF PC
      CLRF  PE
      CLRF  PB
      CLRF  PA
;**********************
SET_ADC:
   MOVLW B'11000000';INTCON中断控制寄存器,GIE,PEIE,T0IE
   MOVWF INTCON  ;INTE,RBIE,TOIF,INTF,RBIF/
            ;GIE=1,全局中断允许,PEIE=1中断允许
   MOVLW B'00000000' ;PIR1第一外围中断标志,PSPIF,ADIF,
   MOVWF PIR1  ;;RCIF,TXIF,SSPIF,CCPIF,TMR2IF,TMR1IF

   BSF      STATUS,5
   MOVLW B'00001011'  ;用来实现A/D的I/O要置输入状态
   MOVWF    TRISA
   movlw B'01000000';PIE1第一外围中断允许:PSPIE,ADIE,
   MOVWF PIE1   ;;RCIE,TXIE,SSPIE,CCPIE,TMR2IE,TMR1IE
   MOVLW B'00000100';X----XXX,ADFM=1,右对齐(8位精度的无)
   MOVWF ADCON1  ;PCFG2~PCFG0=100,DDDD,A,D,A,A
   BCF      STATUS,5

   MOVLW B'10000001';XX,XXX,X-X,01=32Fosc,000=AN0
   MOVWF ADCON0  ;GO/DONE=1,AD_ING/0,AD_END;ADON=1,WORK
   MOVLW 04H
   MOVWF PA
   CLRF  PE
SET_USTAR:
   MOVLW 80H;SPEN=1串行口使能/其他接受相关
   MOVWF RCSTA ;SPEN,RX9,SREN,CREN,ADDEN,FERR,OERR,RX9D.
   BSF      3,5
   MOVWF TRISC
   MOVLW 33H;=>8MHZ;4DH;=>12M;波特率设置为9600BPS
   MOVWF SPBRG ;计算波特率=F/[16(Ns+1)]
   MOVLW 024H;TXEN=1使能发送,SYNC=0异步,BRGH=1高速方式
   MOVWF TXSTA;CSRC,TX9,TXEN,SYNC,-,BRGH,TRMT,TX9D.
   BCF      3,5   ;BANGK0
   MOVLW 20H
   MOVWF PC
;*******************************
SET_RAM:
      CLRF  FLAG
      CLRF  WORK
      
     MOVLW  .10			;20H			;11-7 V  只移动了位置
    	MOVWF VOL_TEMP
EXIT_TM:
	BCF     FLAG,7			;11-7 V 更改前 退出菜单后不能立即减音量,更改后,则可以
							;但每次退出菜单后,音量还是最大
;------------------------
      BCF   FLAG,1
      CLRF  POWF
      CLRF  TIMF
      CLRF TIMTZ
      MOVLW 040H
      ANDWF WORK,1
      MOVLW 01H
      MOVWF KEYF

      CLRF  AGCFLAG
      CLRF  AGCOUNT
      CLRF  AGCTEMP
      CLRF  AGCRAM
      CLRF  TEMP
      CLRF  PCOUNT
      CLRF  TIM

      CLRF  DSFLAG
      CLRF  DISP_FG
      CLRF  XDELAY
      CLRF  YDELAY
      ;CLRF  DAYR
      ;CLRF  MONR
      CLRF  YEAR
      ;CLRF  HOUR
      ;CLRF  MINR
      CLRF  PCOM
      CLRF  YCOM_L
      CLRF  YCOM_H
      CLRF  YCOM_H_W
      MOVLW 0CH
      MOVWF YCOM_L_W
      CLRF  AD_MID
      CLRF  ADTEMP
      CLRF  SOU

      MOVWF WEEK ;LCM电源控制延时用
      MOVLW 02H
      MOVWF PCOM_W
      MOVWF PCOM_WC
      MOVLW 33H
      MOVWF COMEON
    ;MOVLW 20H
    ;MOVWF VOL_TEMP
      MOVLW 06H
      MOVWF  CLR_RAM;开机画面次数
      MOVWF BTIME1
      MOVLW 0FH
      MOVWF KDELAY
   MOVLW 0AH;;.11
   MOVWF TSTRAM
   MOVLW 13H
   MOVWF    TTDOU
      MOVLW 2CH
      MOVWF SECR;LCM电源控制
      MOVLW 10H
      MOVWF TIM1
      MOVLW 0E3H;/B2=.227/50ms电平转换一次控制x9511
      MOVWF TIM2


      CLRF  YCOM_H_VP
      CLRF  YCOM_L_VP
      MOVLW 04H
      MOVWF YCOM_H_TD
      MOVWF YCOM_L_TD
      MOVWF DCOUNT1
      MOVLW 02H
      MOVWF DCOUNT2
      movlw 0ffh
      MOVWF  TCOUNT
      MOVWF DCOUNT
      MOVWF COUNT
      MOVWF PIC_WAVE
      MOVWF   COMEON1
      MOVWF BTIME
      GOTO  MAIN
;*************初始化完成**********************
;*************子程序开始**********************
;*********************************************
KEYSCAN:;最多90条指令
   BTFSS FLAG,STA
   GOTO  TRET
      CLRF  KEYRAM
        BTFSS PD,VD
   GOTO  KEY_HAVE
      INCF KEYRAM,1
        BTFSS PD,MENU
   GOTO  KEY_HAVE
      INCF  KEYRAM,1
        BTFSS PD,VU
   GOTO  KEY_HAVE
      INCF  KEYRAM,1
        BTFSc PD,TT
        goto   KEY_NO
;------------------------------------
      bsf    AGCFLAG,7;;防探头按键抖动
;------------------------------------
    GOTO  KEY_HAVE
;**********************
KEY_NO:
;------------------------------------
      bCf    AGCFLAG,7;;防探头按键抖动
;------------------------------------
      CLRF  KEYRAM
      CLRF  KCOUNT
      CLRF  KEEP
      BCF   DSFLAG,7;音量调节长按>90ms标志
      MOVLW 05FH    ;B'01011111'
      ANDWF FLAG,1
      MOVLW 010H
      MOVWF TIM1
    MOVLW 0FH
    MOVWF KDELAY
      BTFSC   KEYF,0
      GOTO TRET
;;;;;;;;;;;;退出时间调节界面
      DECFSZ   COMEON
      GOTO  TRET
      MOVLW 033H
      MOVWF COMEON
      DECFSZ   COMEON1
      GOTO  TRET
 GOTO  EXIT_TM

KEY_HAVE:
      MOVLW 33H
      MOVWF COMEON
      BTFSC   FLAG,7 ;长按键无效标志
      GOTO    TRET;;;;;;;;;;;
      movf  KEEP,W
      SUBWF KEYRAM,W
      BTFSC 3,2
      GOTO  KEY_HAVEOK
   MOVF  KEYRAM,W
   MOVWF KEEP
   CLRF  KCOUNT
   GOTO  TRET
KEY_HAVEOK:
      INCF    KCOUNT,1
      MOVLW   .30						;11-6 V   010H
      SUBWF   KCOUNT,W
      BTFSS   STATUS,0					;11-3 V   Z
      GOTO    TRET
      BSF     FLAG,7  ;长按键无效标志	
    BTFSS FLAG,LONG
         BSF   FLAG,6   ;有按键标志
    clrf KCOUNT
    clrf COMEON1

;----------------------------------2008-11-3
	BSF		XFBB_FLAG,0
	CLRF		CNT_L
	CLRF		CNT_H
	BSF	PD,4
;----------------------------------
      movf  KEEP,1
      BTFSC 3,2
      GOTO  KEY0;VOL--
      MOVLW 01H
      SUBWF KEEP,W
      BTFSC 3,2
      GOTO  KEY1;TZ,MENU
      MOVLW 02H
      SUBWF KEEP,W
      BTFSC 3,2
      GOTO  KEY2;VOL++
;****************************
KEY3: ;DONGJIE//FREEZE
;------------------------------------
      bsf    AGCFLAG,6;;防探头按键抖动
;------------------------------------
      BCF   FLAG,7 ;;1,长按无效标志
  BTFSS FLAG,LONG
    GOTO    KEY3_FRY
      DECFSZ   KDELAY,1
      GOTO  TRET  ;长按KDELAY(MS)测试功能开启
      BSF   FLAG,7
      MOVLW 040H
      XORWF WORK,1;WORK,TST=>work,6
      MOVLW 02H
      MOVWF PCOM_WC
      ;BCF   ADCON0,GO;结束AD转换
    BCF   WORK,CLRLD
    BTFSS WORK,TST
    BCF   FLAG,FREEZE
      CLRF  SOU
      CLRF  ADTEMP
      CLRF  ADTEMP_T
      CLRF  YCOM_H_W
      MOVLW 0CH
      MOVWF YCOM_L_W
      MOVLW 02H
      MOVWF PCOM_W
      MOVLW 0AH;;.11
      MOVWF TSTRAM
    BCF  DISP_FG,0
      GOTO    TRET;///???
KEY3_FRY:;冻结
      BSF   FLAG,LONG
      MOVLW 08H;B'00001000'
      XORWF FLAG,1;FLAG,3/FLAG,FREEZE
      MOVLW 0FFH
      MOVWF KDELAY;;;TST  DELAY
      GOTO  TRET
;****************************
KEY2: ;VOL++
      BTFSC KEYF,0
      GOTO  KEY2_VOL
         BTFSC  KEYF,6
         GOTO   EXIT_TM
    BCF   FLAG,7;取消长按无效标志
  BTFSS FLAG,LONG
      GOTO    KEY20
    DECFSZ   KDELAY
      GOTO  TRET;8M,时间调节255MS/次
      MOVLW 0AH
      MOVWF KDELAY
KEY20:
      BSF   FLAG,LONG
      BTFSC KEYF,1
      GOTO  KEY2_YEAR
      BTFSC KEYF,2
      GOTO  KEY2_MON
      BTFSC KEYF,3
      GOTO  KEY2_DAY
      BTFSC KEYF,4
      GOTO  KEY2_HOUR
      GOTO  KEY2_MIN
KEY2_YEAR:
      INCF  YEAR,1

      MOVLW 0AH
      SUBWF YEAR,W
      MOVLW 10H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 1AH
      SUBWF YEAR,W
      MOVLW 20H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 2AH
      SUBWF YEAR,W
      MOVLW 30H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 3AH
      SUBWF YEAR,W
      MOVLW 40H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 4AH
      SUBWF YEAR,W
      MOVLW 50H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 5AH
      SUBWF YEAR,W
      MOVLW 60H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 6AH
      SUBWF YEAR,W
      MOVLW 70H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 7AH
      SUBWF YEAR,W
      MOVLW 80H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 8AH
      SUBWF YEAR,W
      MOVLW 090H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 09AH
      SUBWF YEAR,W
      MOVLW 00H
      BTFSC 3,2
      MOVWF YEAR
      GOTO  TRET
KEY2_MON:
      INCF  MONR,1

      MOVLW 0AH
      SUBWF MONR,W
      MOVLW 10H
      BTFSC 3,2
      MOVWF MONR
      MOVLW 13H
      SUBWF MONR,W
      MOVLW 01H
      BTFSC 3,2
      MOVWF MONR
      GOTO  TRET
KEY2_DAY:
      INCF  DAYR,1

      MOVLW 0AH
      SUBWF DAYR,W
      MOVLW 10H
      BTFSC 3,2
      MOVWF DAYR
      MOVLW 1AH
      SUBWF DAYR,W
      MOVLW 20H
      BTFSC 3,2
      MOVWF DAYR
      MOVLW 2AH
      SUBWF DAYR,W
      MOVLW 30H
      BTFSC 3,2
      MOVWF DAYR
      MOVLW 32H
      SUBWF DAYR,W
      MOVLW 01H
      BTFSC 3,2
      MOVWF DAYR
      GOTO  TRET
KEY2_HOUR:
      INCF  HOUR,1

      MOVLW 0AH
      SUBWF HOUR,W
      MOVLW 10H
      BTFSC 3,2
      MOVWF HOUR
      MOVLW 1AH
      SUBWF HOUR,W
      MOVLW 20H
      BTFSC 3,2
      MOVWF HOUR
      MOVLW 24H
      SUBWF HOUR,W
      BTFSC 3,2
      CLRF  HOUR
      GOTO  TRET
KEY2_MIN:
      INCF  MINR,1

      MOVLW 0AH
      SUBWF MINR,W
      MOVLW 10H
      BTFSC 3,2
      MOVWF MINR
      MOVLW 1AH
      SUBWF MINR,W
      MOVLW 20H
      BTFSC 3,2
      MOVWF MINR
      MOVLW 2AH
      SUBWF MINR,W
      MOVLW 30H
      BTFSC 3,2
      MOVWF MINR
      MOVLW 3AH
      SUBWF MINR,W
      MOVLW 40H
      BTFSC 3,2
      MOVWF MINR
      MOVLW 4AH
      SUBWF MINR,W
      MOVLW 50H
      BTFSC 3,2
      MOVWF MINR
      MOVLW 5AH
      SUBWF MINR,W
      MOVLW 00H
      BTFSC 3,2
      MOVWF MINR
      GOTO  TRET
KEY2_VOL: ;VOL+++
      GOTO  KEY0_VOL
;*************************
KEY1: ;MENU
      CLRF  COMEON1
      BCF   FLAG,7;长按键无效标志
      BTFSC FLAG,LONG
   GOTO  SYSTEST
      BSF   FLAG,LONG
      MOVLW 0FFH
      MOVWF KDELAY

    BCF   3,0
      RLF   KEYF,1
    BTFSC KEYF,1
    GOTO KEY11
      MOVLW 02H
   BTFSC KEYF,7
   MOVWF KEYF
      GOTO  TRET
KEY11:
    BSF   TIMTZ,0;;进入时间调整界面
    ;GOTO EXIT_TM
SET_LCD:
 BCF   FLAG,1;;;全清屏
 MOVLW 0FFH
 MOVWF DCOUNT
 MOVLW   04H
 MOVWF   DCOUNT1
 MOVLW   02H
 MOVWF   DCOUNT2
 MOVLW   01H
 MOVWF   DISTIM
 CLRF PCOM
 CLRF YCOM_L
 CLRF YCOM_H
 GOTO  TRET
SYSTEST:;与电脑通信
      DECFSZ   KDELAY,1
      GOTO  TRET

      BSF   FLAG,7;长按KDELAY(MS)通信功能开启
      MOVLW 010H
      XORWF FLAG,1;FLAG,PPC=>FLAG,4
      MOVLW 01H
      MOVWF KEYF
      MOVLW 00H
      MOVWF TXREG
  GOTO   EXIT_TM
      GOTO  TRET
;*******************
KEY0: ;--
      BTFSC KEYF,0
      GOTO  KEY0_VOL
        BTFSC  KEYF,6
        GOTO   EXIT_TM
    BCF   FLAG,7;取消长按无效标志
  BTFSS FLAG,LONG
      GOTO    KEY00
    DECFSZ   KDELAY
      GOTO  TRET;8M,时间调节255MS/次
      MOVLW 0AH
      MOVWF KDELAY
KEY00:
      BSF   FLAG,LONG
      BTFSC KEYF,1
      GOTO  KEY0_YEAR
      BTFSC KEYF,2
      GOTO  KEY0_MON
      BTFSC KEYF,3
      GOTO  KEY0_DAY
      BTFSC KEYF,4
      GOTO  KEY0_HOUR
      GOTO  KEY0_MIN
KEY0_YEAR:;60条指令
      DECF  YEAR,1

      MOVLW 000H
      SUBWF YEAR,W
      MOVLW 099H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 08FH
      SUBWF YEAR,W
      MOVLW 89H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 7FH
      SUBWF YEAR,W
      MOVLW 79H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 06FH
      SUBWF YEAR,W
      MOVLW 69H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 5FH
      SUBWF YEAR,W
      MOVLW 59H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 4FH
      SUBWF YEAR,W
      MOVLW 49H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 03FH
      SUBWF YEAR,W
      MOVLW 39H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 2FH
      SUBWF YEAR,W
      MOVLW 29H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 1FH
      SUBWF YEAR,W
      MOVLW 19H
      BTFSC 3,2
      MOVWF YEAR
      MOVLW 0FH
      SUBWF YEAR,W
      MOVLW 09H
      BTFSC 3,2
      MOVWF YEAR
      GOTO  TRET
KEY0_DAY:
      DECF  DAYR,1

      MOVLW 000H
      SUBWF DAYR,W
      MOVLW 31H
      BTFSC 3,2
      MOVWF DAYR
      MOVLW 2FH
      SUBWF DAYR,W
      MOVLW 29H
      BTFSC 3,2
      MOVWF DAYR
      MOVLW 1FH
      SUBWF DAYR,W
      MOVLW 19H
      BTFSC 3,2
      MOVWF DAYR

⌨️ 快捷键说明

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