📄 pic-lcd.asm
字号:
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 + -