RTC DS1307

Jan 30, 2006 0 Replies
ðÒÉ×ÅÔÓÔ×ÕÀ, ALL! úÁÍÕÞÁÌ ÍÅÎÑ ÓÁÂÖ! éÓÐÏÌØÚÕÀ ÅÇÏ × Ó×ÑÚËÅ Ó PIC16F874. úÁÐÉÓÁÔØ ÄÁÎÎÙÅ × ÅÇÏ ÒÅÇÉÓÔÒ Õ ÍÅÎÑ ÐÏÌÕÞÉÌÏÓØ (ÐÒÏ×ÅÒÑÌ, ËÏÎÆÉÇÕÒÉÒÕÑ ×ÙÈÏÄ ÔÁËÔÁ 1çà ÎÁ ÎÏÖËÕ SQW ). äÌÑ ÞÔÅÎÉÑ ÐÅÒÅÐÒÏÂÏ×ÁÌ ×ÓÅ ÎÁ Ó×ÅÔÅ. óÅÊÞÁÓ ÞÔÅÎÉÅ ×ÙÇÌÑÄÉÔ ÔÁË:

;=================================================================== ; ðÒÏÃÅÄÕÒÁ ÞÔÅÎÉÑ DS1307 ; áÄÒÅÓ ÂÁÊÔÁ ÄÌÑ ÞÔÅÎÉÑ ÇÒÕÚÉÔØ × ÒÅÇÉÓÔÒ DS_ADR ; äÁÎÎÙÅ ÐÏÑ×ÑÔÓÑ × ÒÅÇÉÓÔÒÅ DS_DATA ;=================================================================== GET1307 bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,SEN ; ðÅÒÅÄÁÔØ START btfsc SSPCON2,SEN ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÑ goto $-1 ; ÐÅÒÅÄÁÞÉ ÕÓÌÏ×ÉÑ START bcf SSPCON2,ACKDT ; bcf STATUS,RP0 ; âÁÎË 0



bcf PIR1,SSPIF ; ïÂÎÕÌÑÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ MSSP movlw 0D0h ; 0D0h - ÁÄÒÅÓ DS1307, ÎÁ ÚÁÐÉÓØ movwf SSPBUF ; btfss PIR1,SSPIF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÅ goto $-1 ; ÐÅÒÅÄÁÞÉ bcf PIR1,SSPIF ; óÂÒÁÓÙ×ÁÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ


; ðÅÒÅÄÁÔØ ÐÏ×ÔÏÒÎÙÊ START bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,RSEN ; ðÅÒÅÄÁÔØ ÐÏ×ÔÏÒÎÙÊ START btfsc SSPCON2,RSEN ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÑ goto $-1 ; ÐÅÒÅÄÁÞÉ ÕÓÌÏ×ÉÑ "ÐÏ×ÔÏÒÎÙÊ START" bcf STATUS,RP0 ; âÁÎË 0



bcf PIR1,SSPIF ; ïÂÎÕÌÑÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ MSSP movlw 0D1h ; 0D1h - ÁÄÒÅÓ DS1307, ÎÁ ÞÔÅÎÉÅ movwf SSPBUF ; btfss PIR1,SSPIF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÅ goto $-1 ; ÐÅÒÅÄÁÞÉ bcf PIR1,SSPIF ; óÂÒÁÓÙ×ÁÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ



; ðÏÌÕÞÉÔØ ÓÁÍ ÂÁÊÔ bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,RCEN ; òÁÚÒÅÛÁÅÍ ÐÒÉÅÍ btfss SSPSTAT,BF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÑ goto $-1 ; ÐÒÉÅÍÁ bcf STATUS,RP0 ; âÁÎË 0 movf SSPBUF,0 movwf DS_DATA



bsf STATUS,RP0 ; âÁÎË 1



; ðÅÒÅÄÁÔØ NOT áóë bsf SSPCON2,ACKDT ;


bsf SSPCON2,ACKEN bcf STATUS,RP0 ; âÁÎË 0



btfss PIR1,SSPIF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÅ goto $-1 ; ÐÅÒÅÄÁÞÉ bcf PIR1,SSPIF ; óÂÒÁÓÙ×ÁÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ


bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,PEN ; ðÅÒÅÄÁÅÍ STOP btfsc SSPCON2,PEN ; ïÖÉÄÁÅÍ ËÏÎÅà goto $-1 ; ÐÅÒÅÄÁÞÉ bcf STATUS,RP0 ; âÁÎË 0



return ; ÷ÏÚ×ÒÁÔ ÉÚ ÐÒÏÃÅÄÕÒÙ


;=================================================================== ; ðÒÏÃÅÄÕÒÁ ÞÔÅÎÉÑ DS1307 ; áÄÒÅÓ ÂÁÊÔÁ ÄÌÑ ÞÔÅÎÉÑ ÇÒÕÚÉÔØ × ÒÅÇÉÓÔÒ DS_ADR ; äÁÎÎÙÅ ÐÏÑ×ÑÔÓÑ × ÒÅÇÉÓÔÒÅ DS_DATA ;=================================================================== GET1307 bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,SEN ; ðÅÒÅÄÁÔØ START btfsc SSPCON2,SEN ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÑ goto $-1 ; ÐÅÒÅÄÁÞÉ ÕÓÌÏ×ÉÑ START bcf SSPCON2,ACKDT ; bcf STATUS,RP0 ; âÁÎË 0



bcf PIR1,SSPIF ; ïÂÎÕÌÑÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ MSSP movlw 0D0h ; 0D0h - ÁÄÒÅÓ DS1307, ÎÁ ÚÁÐÉÓØ movwf SSPBUF ; btfss PIR1,SSPIF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÅ goto $-1 ; ÐÅÒÅÄÁÞÉ bcf PIR1,SSPIF ; óÂÒÁÓÙ×ÁÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ


; ðÅÒÅÄÁÔØ ÐÏ×ÔÏÒÎÙÊ START bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,RSEN ; ðÅÒÅÄÁÔØ ÐÏ×ÔÏÒÎÙÊ START btfsc SSPCON2,RSEN ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÑ goto $-1 ; ÐÅÒÅÄÁÞÉ ÕÓÌÏ×ÉÑ "ÐÏ×ÔÏÒÎÙÊ START" bcf STATUS,RP0 ; âÁÎË 0



bcf PIR1,SSPIF ; ïÂÎÕÌÑÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ MSSP movlw 0D1h ; 0D1h - ÁÄÒÅÓ DS1307, ÎÁ ÞÔÅÎÉÅ movwf SSPBUF ; btfss PIR1,SSPIF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÅ goto $-1 ; ÐÅÒÅÄÁÞÉ bcf PIR1,SSPIF ; óÂÒÁÓÙ×ÁÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ



; ðÏÌÕÞÉÔØ ÓÁÍ ÂÁÊÔ bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,RCEN ; òÁÚÒÅÛÁÅÍ ÐÒÉÅÍ btfss SSPSTAT,BF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÑ goto $-1 ; ÐÒÉÅÍÁ ;bcf SSPCON2,RCEN bcf STATUS,RP0 ; âÁÎË 0 movf SSPBUF,0 movwf DS_DATA



bsf STATUS,RP0 ; âÁÎË 1



; ðÅÒÅÄÁÔØ NOT áóë bsf SSPCON2,ACKDT ;


bsf SSPCON2,ACKEN bcf STATUS,RP0 ; âÁÎË 0



btfss PIR1,SSPIF ; ïÖÉÄÁÅÍ ÏËÏÎÞÁÎÉÅ goto $-1 ; ÐÅÒÅÄÁÞÉ bcf PIR1,SSPIF ; óÂÒÁÓÙ×ÁÅÍ ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ


;btfsc SSPCON2,ACKEN ;goto $-1 ;bcf STATUS,RP0 ; âÁÎË 0



bsf STATUS,RP0 ; âÁÎË 1 bsf SSPCON2,PEN ; ðÅÒÅÄÁÅÍ STOP btfsc SSPCON2,PEN ; ïÖÉÄÁÅÍ ËÏÎÅà goto $-1 ; ÐÅÒÅÄÁÞÉ bcf STATUS,RP0 ; âÁÎË 0



return ; ÷ÏÚ×ÒÁÔ ÉÚ ÐÒÏÃÅÄÕÒÙ



ðÏÄÓËÁÖÉÔÅ, ÞÔÏ Ñ ÄÅÌÁÀ ÎÅ ÔÁË. úÁÒÁÎÅÅ ÓÐÁÓÉÂÏ!

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required