;=================================================================== ; ðÒÏÃÅÄÕÒÁ ÞÔÅÎÉÑ 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 ; ÷ÏÚ×ÒÁÔ ÉÚ ÐÒÏÃÅÄÕÒÙ
ðÏÄÓËÁÖÉÔÅ, ÞÔÏ Ñ ÄÅÌÁÀ ÎÅ ÔÁË. úÁÒÁÎÅÅ ÓÐÁÓÉÂÏ!