您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC单片机lcd显示时钟演示程序 正文
PIC单片机lcd显示时钟演示程序

PIC单片机lcd显示时钟演示程序

点击数:7735 次   录入时间:03-04 11:42:13   整理:http://www.55dianzi.com   PIC单片机
call SendCmd
call DisplayTime
call DispTime
call LongDelay
bsf PCLATH,0
movf RTCCSIG1,W
addwf PCL,1
goto SetAlH2
goto SetAlM2
movf Hour1,w
movwf ALRH1
movf Mins1,w
movwf ALRM1
clrf INTSIG
clrf RTCCSIG1
incf RTCCSIG
goto main
;*---
SetAlH2
movlw 0c7h
call Selshow
movf INTSIG,W
btfss STATUS,Z
bsf ALRSIG,1
movf INTSIG,W
movwf Hour1
movlw d'24'
subwf Hour1,W
btfss STATUS,C
goto S2
clrf INTSIG
clrf Hour1
goto S2
SetAlM2
movlw 0cah
call Selshow
movf INTSIG,W
btfss STATUS,Z
bsf ALRSIG,1
movf INTSIG,W
movwf Mins1
movlw d'60'
subwf Mins1,W
btfss STATUS,C
goto S2
clrf INTSIG
clrf Mins1
goto S2
;*----
Alarm movlw 'A'
call putcLCD
movlw 'l'
call putcLCD
movlw 'a'
call putcLCD ;
movlw 'r'
call putcLCD
movlw 'm'
call putcLCD ;
return
;*----
Selshow
call SendCmd
movlw ' '
call putcLCD
movlw ' '
call putcLCD
call LongDelay
return
;*=====
Rtccs3
bcf STATUS,RP0
movlw 0c0h
call SendCmd
call Alarm
movlw '2'
call putcLCD
movlw ' '
call putcLCD
S3 movlw 80h
call SendCmd
call DisplayTime
call DispTime
call LongDelay
bsf PCLATH,0
movf RTCCSIG1,w
addwf PCL,1
goto SetAlH3
goto SetAlM3
movf Hour1,w
movwf ALRH2
movf Mins1,w
movwf ALRM2
clrf INTSIG
clrf RTCCSIG1
incf RTCCSIG
goto main
;*---
SetAlH3
movlw 0c7h
call Selshow
movf INTSIG,W
btfss STATUS,Z
bsf ALRSIG,2
movf INTSIG,W
movwf Hour1
movlw d'24'
subwf Hour1,W
btfss STATUS,C
goto S3
clrf INTSIG
clrf Hour1
goto S3
SetAlM3
movlw 0cah
call Selshow
movf INTSIG,W
btfss STATUS,Z
bsf ALRSIG,1
movf INTSIG,W
movwf Mins1
movlw d'60'
subwf Mins1,W
btfss STATUS,C
goto S3
clrf INTSIG
clrf Mins1
goto S3
;*=====
Rtccs4
movlw 80h
call SendCmd
call DisplayTime
bcf STATUS,RP0
movlw 0c0h
call SendCmd
call Alarm
movlw '3'
call putcLCD
movlw ' '
call putcLCD
S4 call DispTime
call LongDelay
bsf PCLATH,0
movf RTCCSIG1,w
addwf PCL,1
goto SetAlH4
goto SetAlM4
movf Hour1,w
movwf ALRH3
movf Mins1,w
movwf ALRM3
clrf INTSIG
clrf RTCCSIG1
incf RTCCSIG
goto main
;*---
SetAlH4
movlw 0c7h
call Selshow
movf INTSIG,W
btfss STATUS,Z
bsf ALRSIG,3
movf INTSIG,W
movwf Hour1
movlw d'24'
subwf Hour1,W
btfss STATUS,C
goto S4
clrf INTSIG
clrf Hour1
goto S4
SetAlM4
movlw 0cah
call Selshow
movf INTSIG,W
btfss STATUS,Z
bsf ALRSIG,1
movf INTSIG,W
movwf Mins1
movlw d'60'
subwf Mins1,W
btfss STATUS,C
goto S4
clrf INTSIG
clrf Mins1
goto S4
;*=====
ISR
Push
movwf _WREG ; 存 WREG状态
swapf STATUS,W ; 存 STATUS
movwf _STATUS
;*----
bcf STATUS,RP0
btfsc PIR1,TMR1IF
call TimeAdj
btfsc INTCON,INTF
call IntDeal
btfsc INTCON,T0IF
call RtccDeal

;*----
Pop
swapf _STATUS,W ; Restore STATUS
movwf STATUS
swapf _WREG,F ; Restore WREG w/o
swapf _WREG,W ; affecting STATUS
retfie
;*=====
TimeAdj
bcf STATUS,RP0
bcf PIR1,TMR1IF
movlw 00h
movwf TMR1L
movlw 80h
movwf TMR1H
incf Secs,1
movlw d'60'
xorwf Secs,W
btfss STATUS,Z
goto TE
clrf Secs
incf Mins,1
movlw d'60'
xorwf Mins,W
btfss STATUS,Z
goto TE
clrf Mins
incf Hour
movlw d'24'
xorwf Hour,W
btfss STATUS,Z
goto TE
clrf Hour
TE
return
;*=====
IntDeal
bcf INTCON,INTF
bsf PORTB,0
btfsc PORTB,0 ;\
goto $+5 ; \
call Delay
bsf PORTB,0 ; 按键去抖动
btfsc PORTB,0
goto $+2 ; /
incf INTSIG
return
;*=====
RtccDeal
bcf STATUS,RP0
movlw 0ffh ;
movwf TMR0
bcf INTCON,T0IF
bsf PORTA,4
btfsc PORTA,4 ;\
goto RtcWr ; \
call Delay
bsf PORTA,4 ; 按键去抖动
btfsc PORTB,4
goto RtcWr ; /
movf RTCCSIG,W
sublw 04h
btfss STATUS,C
goto WRONG
movf RTCCSIG1,W
sublw 03h
btfss STATUS,C
goto WRONG
movf RTCCSIG,W
addwf RTCCSIG1,W
btfsc STATUS,Z
goto $+3
incf RTCCSIG1
goto RtcWr
incf RTCCSIG
goto RtcWr

WRONG
clrf RTCCSIG
clrf RTCCSIG1
RtcWr return
;*=====
BkLight
bsf STATUS,RP0
bcf ADCON1,ADFM ;ADRESH all 8-bit,H
bcf STATUS,RP0
movlw b'01010001'
movwf ADCON0 ;select AD2,Fosc/8
decfsz BKM
goto $-1
bsf ADCON0,GO
btfss PIR1,ADIF
goto $-1
bcf PIR1,ADIF
;READ ADRES---
movf ADRESH,W
movwf ADRESB
bsf STATUS,RP0
bcf TRISE,0 ;SELECT RE0 OUTPUT
bcf STATUS,RP0
movlw b'10000000' ;critICal value of lightness
subwf ADRESB,W
btfss STATUS,C
goto $+4 ;c=0,ADRESB<critical
bcf STATUS,RP0
bsf PORTE,0 ;c=1,backlight on
goto $+3
bcf STATUS,RP0
bcf PORTE,0
movlw 20h
movwf BKM
return
;*=====
TempM ;temprature measure
bsf STATUS,RP0
bcf ADCON1,ADFM ;ADRESH all 8-bit
bcf STATUS,RP0
movlw b'01001001' ;select AD1,FOSC/8
movwf ADCON0
decfsz BKM
goto $-1
bsf ADCON0,GO
btfss PIR1,ADIF
goto $-1
bcf PIR1,ADIF
;bsf STATUS,RP0
movf ADRESH,W
;bcf STATUS,RP0
movwf Temp
call CalTable
movwf Temp
call Bin2BCDT ; 进行BCD码调整
movlw 08ah ; 从第一行的第0A个位置开始
call SendCmd
movf TempH,W ; 显示温度
call putcLCD
movf TempL,W
call putcLCD
movlw 'C' ; 显示“C”(表示摄氏度)
call putcLCD
movlw 20h
movwf BKM
return
;************************************************

上一页  [1] [2] [3] [4]  下一页


本文关键字:单片机  程序  PIC单片机单片机-工控设备 - PIC单片机