專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
ST套件上時(shí)鐘,小時(shí)與分鐘每2秒輪換顯示,按S2調(diào)整分鐘,按S3調(diào)整小時(shí) ;顯示小時(shí)時(shí)DP亮,分鐘時(shí)DP不亮 ;實(shí)際測(cè)試與手機(jī)時(shí)間對(duì)比,現(xiàn)已運(yùn)行11個(gè)小時(shí),較準(zhǔn)確 ;mplab模擬,計(jì)算每天可能要慢5秒以內(nèi)(STOPWACH) ;初學(xué)PIC第二個(gè)程序,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位小時(shí)/分鐘顯示標(biāo)志 ;3位4位分別為分鐘/小時(shí)調(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 ;小時(shí) HOU_L EQU 1BH W_T EQU 1CH ST_T EQU 1DH DIGMS EQU 1EH ;5ms計(jì)數(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)整分鐘時(shí)只顯示分鐘不切換顯示 BSF FLAGS,2 BTFSC FLAGS,4 ;4位調(diào)整小時(shí)時(shí)只顯示小時(shí) BCF FLAGS,2 MOVFW MIN_H ;顯示分鐘或小時(shí),由FLAG(2)位決定 BTFSS FLAGS,2 ;為1時(shí)顯示分種 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 ;顯示小時(shí)時(shí)DP亮 BCF PORTB,7 BTFSS FLAGS,1 BCF PORTA,1 BTFSC FLAGS,1 BCF PORTA,2 MOVLW 00000010B XORWF FLAGS,1
;------------------------------------顯示完成,FLAGS(1)取反 INCF DIGMS,1 ;5ms計(jì)時(shí),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秒種,小時(shí)/分鐘交換 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按下,去抖動(dòng)后,調(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)整小時(shí) 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 ;延時(shí)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