專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動態(tài)
深圳市英銳恩科技有限公司:臺灣麥肯單片機(jī)(Micon MDT單片機(jī))亞太地區(qū)A級代理商
時鐘小時分鐘輪換顯示,24小時誤差5秒以內(nèi)
;小時與分鐘每2秒輪換顯示,按S2調(diào)整分鐘,按S3調(diào)整小時
;顯示小時時DP亮,分鐘時DP不亮
;實際測試與手機(jī)時間對比,現(xiàn)已運(yùn)行11個小時,較準(zhǔn)確
;mplab模擬,計算每天可能要慢5秒以內(nèi)(STOPWACH)
;初學(xué)PIC第二個程序,by wonderfulsf 12/12/2004
LIST P=16F84A,R=DEC
__CONFIG B'11111111110001'
;--------------------------------
RTCC EQU 01H
PC EQU 02H
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
INTCON EQU 0BH
OPTION_REG EQU 1H
TRISA EQU 5H
TRISB EQU 6H
;-----------------------STATUS
C EQU 0
Z EQU 2
RP0 EQU 5
;-----------------------INTCON
T0IF EQU 2
T0IE EQU 5
GIE EQU 7
;-----------------------IN PROGRAME VAR
C0 EQU 10H
C1 EQU 11H
C2 EQU 12H
TABADD EQU 13H
FLAGS EQU 14H ;顯示標(biāo)志寄存,1位高/低位掃描
;2位小時/分鐘顯示標(biāo)志
;3位4位分別為分鐘/小時調(diào)整態(tài)標(biāo)志
DIS_H EQU 15H ;顯示位緩存
DIS_L EQU 16H
SEC EQU 17H ;秒位
MIN_H EQU 18H ;分鐘
MIN_L EQU 19H
HOU_H EQU 1AH ;小時
HOU_L EQU 1BH
W_T EQU 1CH
ST_T EQU 1DH
DIGMS EQU 1EH ;5ms計數(shù)
;------------------------
ORG 0000H
GOTO MAIN
ORG 004H
TIME
MOVWF W_T
SWAPF STATUS,W
MOVWF ST_T
MOVLW 100
MOVWF RTCC
BCF INTCON,T0IF
MOVLW 0FFH ;關(guān)閉數(shù)碼管
MOVWF PORTB ;B口高電平
BSF PORTA,1 ;A口高電平
BSF PORTA,2
BTFSC FLAGS,3 ;3位調(diào)整分鐘時只顯示分鐘不切換顯示
BSF FLAGS,2
BTFSC FLAGS,4 ;4位調(diào)整小時時只顯示小時
BCF FLAGS,2
MOVFW MIN_H ;顯示分鐘或小時,由FLAG(2)位決定
BTFSS FLAGS,2 ;為1時顯示分種
MOVFW HOU_H
MOVWF DIS_H
MOVFW MIN_L
BTFSS FLAGS,2
MOVFW HOU_L
MOVWF DIS_L
MOVLW TABLE ;B口顯示數(shù)據(jù),高低位由FLAGS(1)位決定
MOVWF TABADD
MOVFW DIS_L
BTFSS FLAGS,1
MOVFW DIS_H
ADDWF TABADD,W
CALL CONVERT
MOVWF PORTB
BTFSS FLAGS,2 ;顯示小時時DP亮
BCF PORTB,7
BTFSS FLAGS,1
BCF PORTA,1
BTFSC FLAGS,1
BCF PORTA,2
MOVLW 00000010B
XORWF FLAGS,1
;------------------------------------顯示完成,F(xiàn)LAGS(1)取反
INCF DIGMS,1 ;5ms計時,200次進(jìn)秒
MOVLW 200
XORWF DIGMS,0
BNZ TIMEND
CLRF DIGMS
INCF SEC,1
BCF FLAGS,2
BTFSS SEC,1
BSF FLAGS,2 ;2秒種,小時/分鐘交換
MOVLW 60
XORWF SEC,0
BNZ TIMEND
CLRF SEC
INCF MIN_L,1
MOVLW 10
XORWF MIN_L,0
BNZ TIMEND
CLRF MIN_L
INCF MIN_H,1
MOVLW 6
XORWF MIN_H,0
BNZ TIMEND
CLRF MIN_H
MOVLW 2
XORWF HOU_H,0
BZ HOU1
INCF HOU_L,1
MOVLW 10
XORWF HOU_L,0
BNZ TIMEND
CLRF HOU_L
INCF HOU_H,1
GOTO TIMEND
HOU1
INCF HOU_L,1
MOVLW 4
XORWF HOU_L,0
BNZ TIMEND
CLRF HOU_L
CLRF HOU_H
TIMEND
SWAPF ST_T,W
MOVWF STATUS
SWAPF W_T,F
SWAPF W_T,W
RETFIE
;--------------------------------------
MAIN
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0
MOVLW 00011000B
MOVWF TRISA
MOVLW 00000000B
MOVWF TRISB
MOVLW 10000100B
MOVWF OPTION_REG
BCF STATUS,RP0
MOVLW 100
MOVWF RTCC
MOVLW 0FFH
MOVWF PORTB
BSF PORTA,1
BSF PORTA,2
CLRF DIGMS
CLRF DIS_L
CLRF DIS_H
CLRF MIN_L
CLRF MIN_H
CLRF HOU_L
CLRF HOU_H
BCF INTCON,T0IF
BSF INTCON,T0IE
BSF INTCON,GIE
;----------------------------------------
LOOP
BCF FLAGS,3
BCF FLAGS,4
BTFSS PORTA,3
GOTO SET_1
BTFSS PORTA,4
GOTO SET_2
GOTO LOOP
;-----------------------------------
SET_1
BTFSC PORTA,3 ;S2按下,去抖動后,調(diào)整分鐘
GOTO LOOP
CALL DELAY
BTFSC PORTA,3
GOTO LOOP
BSF FLAGS,3
INCF MIN_L,1
MOVLW 10
XORWF MIN_L,0
BNZ SET_1
CLRF MIN_L
INCF MIN_H,1
MOVLW 6
XORWF MIN_H,0
BNZ SET_1
CLRF MIN_H
GOTO SET_1
;-----------------------------------
SET_2
BTFSC PORTA,4 ;S3按下后調(diào)整小時
GOTO LOOP
CALL DELAY
BTFSC PORTA,4
GOTO LOOP
BSF FLAGS,4
MOVLW 2
XORWF HOU_H,0
BZ HOU2
INCF HOU_L,1
MOVLW 10
XORWF HOU_L,0
BNZ SET_2
CLRF HOU_L
INCF HOU_H,1
GOTO SET_2
HOU2
INCF HOU_L,1
MOVLW 4
XORWF HOU_L,0
BNZ SET_2
CLRF HOU_L
CLRF HOU_H
GOTO SET_2
;-----------------------------------
DELAY
MOVLW 150 ;延時0.1S
MOVWF C1
L2
MOVLW 255
MOVWF C2
L3
DECFSZ C2,1
GOTO L3
DECFSZ C1,1
GOTO L2
RETLW 0
;-----------------------------------
CONVERT
MOVWF PC
TABLE
RETLW 081H
RETLW 0E7H
RETLW 092H
RETLW 0A2H
RETLW 0E4H
RETLW 0A8H
RETLW 088H
RETLW 0E3H
RETLW 080H
RETLW 0A0H
;----- --------------------------------------
END