K
kvrajasekar
Guest
Salut à tous,
J'utilise RTC (PCF8583) avec 16f877.I ne suis pas familier avec I2C interfacing.I utilisé les codes suivants, tout en readiing fiches de données de référence et certains sites.But i contrôleur est suspendu problème quand
j'ai utilisé le codage.
S'il vous plaît, aidez-moi à résoudre le problème ....
Initialisé RC3 (SCL) et RC4 (SDA) en entrée.
Configurer le MSSP comme maître I2C contrôleur
movlw b'00101000 '; Sélectionnez maître I2C mode
movwf SSPCON
movlw I2CRATE; Régler la vitesse du bus
movwf SSPADD
movlw b'00000000 »Et clairement tout état de drapeaux
movwf SSPSTAT
appel i2cstop; Assurer le bus est gratuit
; I2C génère un état de départ.
I2CStart:
bsf SSPCON2, SEN; Générer START condition
btfsc SSPCON2, SEN; Et attendez
qu'il complète
goto $ -1
retour
, Génère un état I2C redémarrer.
I2CRestart:
bsf SSPCON2, RSEN; Générer RESTART condition
btfsc SSPCON2, RSEN; Et attendez
qu'il complète
goto $ -1
retour
, Génère un état de fin I2C.
I2cstop:
bsf SSPCON2, PEN; Générer STOP condition
btfsc SSPCON2, PEN; Et attendez
qu'il complète
goto $ -1
retour
; Transmet l'octet en W pour le bus I2C.
I2CWrite:
movwf SSPBUF; Lancer I2C écrire
btfsc SSPSTAT, R_W; Et attendre l'achèvement
goto $ -1
retour
, Reçoit un octet de l'I2C et retourne sa valeur.
I2CRead:
bsf SSPCON2, RCEN; Lancer I2C lire
btfsc SSPCON2, RCEN; Et attendre l'achèvement
goto $ -1
movf SSPBUF, W; ensuite lire les données de valeur
retour
; I2C ACK envoie un signal à l'esclave.
I2CAck:
bcf SSPCON2, ACKDT; Envoyer un accusé de réception
bsf SSPCON2, ACKEN
goto I2CWait
; I2C NAK Envoie un signal à l'esclave.
I2CNak:
bsf SSPCON2, ACKDT; Envoyer un accusé de réception négatif
bsf SSPCON2, ACKEN
; Waits pour l'action à I2C complète.
J'utilise RTC (PCF8583) avec 16f877.I ne suis pas familier avec I2C interfacing.I utilisé les codes suivants, tout en readiing fiches de données de référence et certains sites.But i contrôleur est suspendu problème quand
j'ai utilisé le codage.
S'il vous plaît, aidez-moi à résoudre le problème ....
Initialisé RC3 (SCL) et RC4 (SDA) en entrée.
Configurer le MSSP comme maître I2C contrôleur
movlw b'00101000 '; Sélectionnez maître I2C mode
movwf SSPCON
movlw I2CRATE; Régler la vitesse du bus
movwf SSPADD
movlw b'00000000 »Et clairement tout état de drapeaux
movwf SSPSTAT
appel i2cstop; Assurer le bus est gratuit
; I2C génère un état de départ.
I2CStart:
bsf SSPCON2, SEN; Générer START condition
btfsc SSPCON2, SEN; Et attendez
qu'il complète
goto $ -1
retour
, Génère un état I2C redémarrer.
I2CRestart:
bsf SSPCON2, RSEN; Générer RESTART condition
btfsc SSPCON2, RSEN; Et attendez
qu'il complète
goto $ -1
retour
, Génère un état de fin I2C.
I2cstop:
bsf SSPCON2, PEN; Générer STOP condition
btfsc SSPCON2, PEN; Et attendez
qu'il complète
goto $ -1
retour
; Transmet l'octet en W pour le bus I2C.
I2CWrite:
movwf SSPBUF; Lancer I2C écrire
btfsc SSPSTAT, R_W; Et attendre l'achèvement
goto $ -1
retour
, Reçoit un octet de l'I2C et retourne sa valeur.
I2CRead:
bsf SSPCON2, RCEN; Lancer I2C lire
btfsc SSPCON2, RCEN; Et attendre l'achèvement
goto $ -1
movf SSPBUF, W; ensuite lire les données de valeur
retour
; I2C ACK envoie un signal à l'esclave.
I2CAck:
bcf SSPCON2, ACKDT; Envoyer un accusé de réception
bsf SSPCON2, ACKEN
goto I2CWait
; I2C NAK Envoie un signal à l'esclave.
I2CNak:
bsf SSPCON2, ACKDT; Envoyer un accusé de réception négatif
bsf SSPCON2, ACKEN
; Waits pour l'action à I2C complète.