You are on page 1of 26

L'USART du PIC 16F628A

L' USART du PIC 16F628A en mode asynchrone : Gestion de la liaison RS232C
0- Introduction 1- Broches RB1/RX/DT et RB2/TX/CK 2- Registres spéciaux utilisés par l'USART 3- Drapeaux RCIF et TXIF 4- Les interruptions de l'USART 5- Vitesse de transmission 6- Réception seule (liaison unidirectionnelle) 7- Emission seule (liaison unidirectionnelle) 8- Emission / Réception (liaison bidirectionnelle) 9- Bibliographie

q

q

q

q

q

q

q

q

q

q

0- Introduction

USART = Universal Synchronous Asynchronous Receiver Transmitter L'USART du PIC 16F628A gère deux modes :
q q

mode asynchrone mode synchrone

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.htm (1 of 26)02-Apr-13 12:25:36 PM

L'USART du PIC 16F628A

Nous ne verrons ici que le mode asynchrone, appliqué à la communication par le protocole RS232C. Par la suite, nous utiliserons les paramètres suivants :
q q q q

8 bits de données pas de bit de parité 1 bit d'arrêt (Stop) pas de contrôle de flux (liaison 3 fils : RX, TX, GND)

avec utilisation des interruptions de l'USART du microcontrôleur (pour des raisons d'efficacité).

La liaison RS232C est principalement utilisée pour dialoguer entre le microcontrôleur et un ordinateur.

N.B. L'USART gère un 9ème bit, que l'on peut utiliser comme bit de parité ou comme deuxième bit de stop. Un contrôle de flux est évidemment possible :
q q

Xon/Xoff (logiciel) matériel ...

1- Broches RB1/RX/DT et RB2/TX/CK

Les broches RB1 et RB2 sont par défaut des entrées / sorties standards.

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.htm (2 of 26)02-Apr-13 12:25:36 PM

sincere.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.Transmit status and control (en banque 1) RCSTA .Receive data register (en banque 0) Auquels s'ajoutent 3 registres.htm (3 of 26)02-Apr-13 12:25:36 PM . 2 ou 3) PIR1 . 1.Receive status and control (en banque 0) TXREG .Peripheral interrupt flag register (en banque 0) PIE1 . Notez que l'USART monopolise les 2 broches même si une seule broche est effectivement utilisée. c'est-à-dire que l'on peut émettre et recevoir en même temps.Peripheral interrupt enable register (en banque 1) 3.Registres spéciaux utilisés par l'USART q q q q q SPBRG . si les interruptions de l'USART sont utilisées : q q q INTCON . 2.pagesperso-orange.L'USART du PIC 16F628A Ces 2 broches sont affectées à l'USART.Drapeaux RCIF et TXIF http://fabrice.Interrupt control register (banque 0.Baud rate generator (en banque 1) TXSTA.Transmit data register (en banque 0) RCREG . si celui-ci est activé. En mode asynchrone : q q Broche RX : réception (entrée) Broche TX : transmission (sortie) L'USART permet le "full-duplex".

Les interruptions de l'USART L'USART a deux interruptions : q q interruption de transmission interruption de réception q Interruption de transmission http://fabrice.sincere.L'USART du PIC 16F628A q Drapeau RCIF (bit 5 du registre PIR1) Ce drapeau (flag) est en lecture seule. RCIF est mis à 1 quand le buffer de réception est plein RCIF est mis à 0 quand le buffer de réception est vide q Drapeau TXIF (bit 4 du registre PIR1) Ce drapeau (flag) est en lecture seule.htm (4 of 26)02-Apr-13 12:25:36 PM . TXIF est mis à 1 quand le buffer de transmission est vide TXIF est mis à 0 quand le buffer de transmission est plein 4.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.pagesperso-orange.

Quand ce drapeau est à 1. Dans la routine d'interruption.pagesperso-orange. (On rappelle que le drapeau TXIF est en lecture seule : on ne peut pas le mettre à 0 directement.htm (5 of 26)02-Apr-13 12:25:36 PM . L'interruption de transmission de l'USART est associée au drapeau TXIF. Les données sont alors automatiquement transférées dans le buffer de transmission et le drapeau TXIF remis à 0. Attention : il ne faut pas aller plus vite que la musique ! Il faut attendre que le drapeau TXIF repasse à 1 (buffer vide) avant d'écrire dans TXREG les 8 bits de données suivants.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. l'interruption est déclenchée : le programme saute vers la routine d'interruption. on écrit dans le registre TXREG les 8 bits de données à transmettre. Quand ce drapeau est à 1. L'interruption de réception de l'USART est associée au drapeau RCIF. l'interruption est déclenchée : le programme saute vers la routine d'interruption. comme cela se fait habituellement avec les interruptions).sincere. q Interruption de réception Il faut commencer par autoriser l'interruption de réception (voir plus loin). http://fabrice.L'USART du PIC 16F628A Il faut commencer par autoriser l'interruption de transmission (voir plus loin). Cela revient à attendre la prochaine interruption.

Le drapeau RCIF est alors remis à 0. 38 400 etc . Puis on autorise la réception en mettant le bit CREN à 1.L'USART du PIC 16F628A Dans la routine d'interruption.. 5.sincere. Pour relancer la réception. cela donne lieu à une erreur d'overrun : Le bit OERR (bit 1 du registre RCSTA) est automatiquement mis à 1. 19 200. Il est bien clair que la vitesse de réception est identique à la vitesse de transmission. 2400. comme cela se fait habituellement avec les interruptions). OERR étant en lecture seule. il faut remettre à 0 le bit OERR. 4800.pagesperso-orange. 9600. Attention : il ne faut pas aller moins vite que la musique ! Si vous tardez à lire les données reçues. cela se fait indirectement en mettant le bit CREN (bit 4 du registre RCSTA) à 0.Vitesse de transmission La liaison RS232C est caractérisée par sa vitesse de transmission (en bauds par seconde) : 300. (On rappelle que le drapeau RCIF est en lecture seule : on ne peut pas le mettre à 0 directement.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. on lit dans le registre RCREG les 8 bits de données reçus. et la réception est interrompue.htm (6 of 26)02-Apr-13 12:25:36 PM . http://fabrice. 1200..

L'USART du PIC 16F628A Le choix se fait avec : q q SPBRG (registre 8 bits : valeur 0 à 255) BRGH (bit 2 du registre TXSTA) q Formules BRGH = 1 : SPBRG = (Fosc/(16 x Vitesse de transmission)) . Si BRGH = 0 : SPBRG = (4 000 0000 /(64 x 9600)) .htm (7 of 26)02-Apr-13 12:25:36 PM .1 = 5. On désire une vitesse de transmission de 9600 bauds par seconde.pagesperso-orange.1 BRGH = 0 : SPBRG = (Fosc/(64 x Vitesse de transmission)) .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.51 => SPBRG = 6 (entier le plus proche) http://fabrice.sincere.1 ou BRGH = 1 : Vitesse de transmission = Fosc/(16(SPBRG + 1)) BRGH = 0 : Vitesse de transmission = Fosc/(64(SPBRG + 1)) q Exemple Le PIC 16F628A utilise un quartz externe de 4 MHz.

fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.1 = 25.04 => SPBRG = 25 => Vitesse de transmission = 4 000 000 /(16(25 + 1)) = 9615 bauds par seconde => 0.pagesperso-orange.Réception seule (liaison unidirectionnelle) Nous utiliserons les paramètres suivants : q q q q 8 bits de données pas de bit de parité 1 bit d'arrêt (Stop) pas de contrôle de flux (liaison 2 fils : RX. Si BRGH = 1 : SPBRG = (4 000 0000 /(16 x 9600)) .L'USART du PIC 16F628A => Vitesse de transmission = 4 000 000 /(64(6 + 1)) = 8 929 bauds par seconde => 7 % d'erreur ce qui est inacceptable. GND) http://fabrice. En définitive : q q SPBRG = D'25' BRGH = 1 6.sincere.16 % d'erreur ce qui est satisfaisant.htm (8 of 26)02-Apr-13 12:25:36 PM .

sincere.htm (9 of 26)02-Apr-13 12:25:36 PM .L'USART du PIC 16F628A avec utilisation des interruptions de l'USART du microcontrôleur. avec un quartz de 4 MHz : r r q SPBRG = D'25' (valeur du registre SPBRG) BRGH = 1 (bit 2 du registre TXSTA) q q SYNC = 0 (bit 4 du registre TXSTA) : mode asynchrone SPEN = 1 (bit 7 du registre RCSTA) : utilisation du port série Autorisation de l'interruption r GIE = 1 (bit 7 du registre INTCON) : autorisation globale des interruptions r PEIE = 1 (bit 6 du registre INTCON) : autorisation des interruptions des périphériques r RCIE = 1 (bit 5 du registre PIE1) : autorisation de l'interruption de réception de l'USART Autorisation de la réception du port série r CREN = 1 (bit 4 du registre RCSTA) Dans la routine d'interruption : r Sauvegarde du contexte r Lecture des 8 bits de données reçus (dans le registre RCREG) s Si OERR = 1 (erreur d'overrun) : CREN à mettre 0 puis à 1 q q q http://fabrice. à travers une interface (MAX232 ou équivalent). Le fil RX de la liaison RS232C est relié à la broche RB1/RX/DT du PIC 16F628A.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.pagesperso-orange. q Configuration du registre TRISB r broche RB1/RX/DT à configurer en entrée r broche RB2/TX/CK à configurer en entrée Initialisation du registre SPBRG et du bit BRGH La vitesse de transmission est 9600 bauds / seconde.

bit 5 (TXEN) = 0 (non utilisé : 0 par exemple) http://fabrice. (SPBRG) = D'25' bsf STATUS .sincere. bit 7 (CSRC) = 0 (non utilisé : 0 par exemple) . broche RB1/RX/DT configurée en entrée bsf TRISB .pagesperso-orange.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. bit 6 (TX9) = 0 (non utilisé : 0 par exemple) .L'USART du PIC 16F628A r Restauration du contexte Finalement : Initialisation : bsf STATUS . RP0 .htm (10 of 26)02-Apr-13 12:25:36 PM . passage en banque 1 bsf TRISB . RP0 . 1 . passage en banque 1 movlw B'00000100' movwf TXSTA . RP0 . 2 . passage en banque 1 movlw D'25' movwf SPBRG . broche RB2/TX/CK configurée en entrée bsf STATUS .

passage en banque 0 movlw B'10010000' movwf RCSTA . RP0 .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.L'USART du PIC 16F628A . bit 0 (TX9D) = 0 (non utilisé : 0 par exemple) bcf STATUS . bit 6 (RX9) = 0 : 8 bits de réception . bit 7 (SPEN) = 1 : utilisation du port série .sincere. bit 4 (SYNC) = 0 : mode asynchrone . bit 2 (FERR) = 0 (en lecture seule) . RP0 . bit 3 (ADEN) = 0 (non utilisé : 0 par exemple) . bit 1 (OERR) = 0 (en lecture seule) . bit 3 = 0 (non implémenté) .htm (11 of 26)02-Apr-13 12:25:36 PM . bit 2 (BRGH) = 1 : mode asynchrone haute vitesse . bit 4 (CREN) = 1 : autorise la réception . passage en banque 1 http://fabrice.pagesperso-orange. bit 1 (TRMT) = 0 (non utilisé : 0 par exemple) . bit 0 (RX9D) = 0 (non utilisé : 0 par exemple) bsf STATUS . bit 5 (SREN) = 0 (non utilisé : 0 par exemple) .

autorisation des interruptions des périphériques bsf PIE1 .W movwf STATUS_TEMP bsf STATUS .pagesperso-orange. GIE .L'USART du PIC 16F628A bsf INTCON.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. RP0 . RP0 . passage en banque 0 btfsc PIR1. vecteur d'interruption (directive du compilateur MPLAB) . autorisation globale des interruptions bsf INTCON . RCIE . sauvegarde du registre W puis du registre STATUS movwf W_TEMP swapf STATUS . RCIE goto suite bcf STATUS . RCIF goto reception suite . autorisation de l'interruption de réception de l'USART Routine d'interruption : org 0x0004 . passage en banque 1 btfss PIE1. PEIE .htm (12 of 26)02-Apr-13 12:25:36 PM .sincere. traitement des autres interruptions http://fabrice.

fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. test d'une erreur d'overrun goto restauration . bcf STATUS ..L'USART du PIC 16F628A .. CREN . RP0 . . on relance la réception goto restauration http://fabrice. traitement de l'erreur d'overrun bcf RCSTA . goto restauration reception bcf STATUS . .sincere. passage en banque 0 btfss RCSTA . RP0 .. W movwf REGISTRE . on efface le bit OERR bsf RCSTA .. les 8 bits de données sont transférés dans un registre d'usage général ...pagesperso-orange. OERR . passage en banque 0 movf RCREG ...htm (13 of 26)02-Apr-13 12:25:36 PM . CREN .

htm (14 of 26)02-Apr-13 12:25:36 PM .sincere. W . GND) avec utilisation des interruptions de l'USART du microcontrôleur. à travers une interface (MAX232 ou équivalent). Le fil TX de la liaison RS232C est relié à la broche RB2/TX/CK du PIC 16F628A. q Configuration du registre TRISB r broche RB1/RX/DT à configurer en entrée r broche RB2/TX/CK à configurer en entrée (bien que ce soit une sortie) http://fabrice.Emission seule (liaison unidirectionnelle) Nous utiliserons les paramètres suivants : q q q q 8 bits de données pas de bit de parité 1 bit d'arrêt (Stop) pas de contrôle de flux (liaison 2 fils : TX. W retfie .pagesperso-orange. retour d'interruption 7.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. f swapf W_TEMP .L'USART du PIC 16F628A restauration swapf STATUS_TEMP . restauration des registres STATUS puis W movwf STATUS swapf W_TEMP .

passage en banque 1 bsf TRISB . broche RB1/RX/DT configurée en entrée bsf TRISB . RP0 .htm (15 of 26)02-Apr-13 12:25:36 PM . 1 . broche RB2/TX/CK configurée en entrée http://fabrice. 2 .pagesperso-orange.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.sincere.L'USART du PIC 16F628A q Initialisation du registre SPBRG et du bit BRGH La vitesse de transmission est 9600 bauds / seconde. avec un quartz de 4 MHz : r r SPBRG = D'25' (valeur du registre SPBRG) BRGH = 1 (bit 2 du registre TXSTA) q q SYNC = 0 (bit 4 du registre TXSTA) : mode asynchrone SPEN = 1 (bit 7 du registre RCSTA) : utilisation du port série Autorisation de l'interruption r GIE = 1 (bit 7 du registre INTCON) : autorisation globale des interruptions r PEIE = 1 (bit 6 du registre INTCON) : autorisation des interruptions des périphériques r TXIE = 1 (bit 4 du registre PIE1) : autorisation de l'interruption de l'USART Autorisation de la transmission du port série r TXEN = 1 (bit 5 du registre TXSTA) Dans la routine d'interruption : r Sauvegarde du contexte r Ecriture dans le registre TXREG des 8 bits de données à transmettre r Restauration du contexte q q q Finalement : Initialisation : bsf STATUS .

pagesperso-orange. bit 1 (TRMT) = 0 (en lecture seule) . passage en banque 0 movlw B'10000000' http://fabrice.L'USART du PIC 16F628A bsf STATUS . bit 4 (SYNC) = 0 : mode asynchrone .sincere. bit 0 (TX9D) = 0 (non utilisé : 0 par exemple) bcf STATUS . (SPBRG) = D'25' bsf STATUS . bit 3 = 0 (non implémenté) . RP0 . passage en banque 1 movlw B'00100100' movwf TXSTA . RP0 . RP0 .htm (16 of 26)02-Apr-13 12:25:36 PM . passage en banque 1 movlw D'25' movwf SPBRG .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. bit 5 (TXEN) = 1 : autorise la réception . bit 6 (TX9) = 0 : 8 bits de transmission . bit 7 (CSRC) = 0 (non utilisé : 0 par exemple) . bit 2 (BRGH) = 1 : mode asynchrone haute vitesse .

sincere. vecteur d'interruption (directive du compilateur MPLAB) . bit 2 (FERR) = 0 (non utilisé : 0 par exemple) . RP0 . autorisation globale des interruptions bsf INTCON . bit 1 (OERR) = 0 (non utilisé : 0 par exemple) . bit 0 (RX9D) = 0 (non utilisé : 0 par exemple) bsf STATUS . bit 6 (RX9) = 0 (non utilisé : 0 par exemple) . passage en banque 1 bsf INTCON. TXIE .L'USART du PIC 16F628A movwf RCSTA . bit 4 (CREN) = 0 (non utilisé : 0 par exemple) . autorisation de l'interruption d'émission de l'USART Routine d'interruption : org 0x0004 . sauvegarde du registre W puis du registre STATUS movwf W_TEMP http://fabrice. autorisation des interruptions des périphériques bsf PIE1 . bit 7 (SPEN) = 1 : utilisation du port série .pagesperso-orange. bit 3 (ADEN) = 0 (non utilisé : 0 par exemple) . GIE .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.htm (17 of 26)02-Apr-13 12:25:36 PM . bit 5 (SREN) = 0 (non utilisé : 0 par exemple) . PEIE .

passage en banque 0 btfsc PIR1.htm (18 of 26)02-Apr-13 12:25:36 PM .. ..W movwf STATUS_TEMP bsf STATUS .pagesperso-orange.. . .... goto restauration emission . TXIF goto emission int . les 8 bits de données à transmettre sont dans le registre d'usage général REGISTRE_T http://fabrice.. RP0 . passage en banque 1 btfss PIE1.L'USART du PIC 16F628A swapf STATUS . TXIE goto int2 bcf STATUS .. traitement des autres interruptions .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. RP0 .sincere.

W bcf STATUS .L'USART du PIC 16F628A movf REGISTRE_T . à travers une interface (MAX232 ou équivalent). RP0 . passage en banque 0 movwf TXREG goto int restauration swapf STATUS_TEMP . TX.Emission / Réception (liaison bidirectionnelle) Nous utiliserons les paramètres suivants : q q q q 8 bits de données pas de bit de parité 1 bit d'arrêt (Stop) pas de contrôle de flux (liaison 3 fils : RX.pagesperso-orange. Le fil RX de la liaison RS232C est relié à la broche RB1/RX/DT du PIC 16F628A. http://fabrice. W . f swapf W_TEMP . retour d'interruption 8.htm (19 of 26)02-Apr-13 12:25:36 PM .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.sincere. restauration des registres STATUS puis W movwf STATUS swapf W_TEMP . W retfie . GND) avec utilisation des interruptions de l'USART du µC.

pagesperso-orange. à travers une interface (MAX232 ou équivalent).htm (20 of 26)02-Apr-13 12:25:36 PM . avec un quartz de 4 MHz : r r q SPBRG = D'25' (valeur du registre SPBRG) BRGH = 1 (bit 2 du registre TXSTA) q q SYNC = 0 (bit 4 du registre TXSTA) : mode asynchrone SPEN = 1 (bit 7 du registre RCSTA) : utilisation du port série Autorisation des interruptions q q q q q GIE = 1 (bit 7 du registre INTCON) : autorisation globale des interruptions PEIE = 1 (bit 6 du registre INTCON) : autorisation des interruptions des périphériques TXIE = 1 (bit 4 du registre PIE1) : autorisation de l'interruption d'émission de l'USART RCIE = 1 (bit 5 du registre PIE1) : autorisation de l'interruption de réception de l'USART q Autorisation de la réception et de la transmission du port série r CREN = 1 (bit 4 du registre RCSTA) : autorise la réception r TXEN = 1 (bit 5 du registre TXSTA) : autorise la transmission Dans la routine d'interruption : r Sauvegarde du contexte r Ecriture dans le registre TXREG des 8 bits de données à transmettre r Lecture des 8 bits de données reçus (registre RCREG) q http://fabrice. q Configuration du registre TRISB r broche RB1/RX/DT à configurer en entrée r broche RB2/TX/CK à configurer en entrée (bien que ce soit une sortie) Initialisation du registre SPBRG et du bit BRGH La vitesse de transmission est 9600 bauds / seconde.sincere.L'USART du PIC 16F628A Le fil TX de la liaison RS232C est relié à la broche RB2/TX/CK du PIC 16F628A.fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.

htm (21 of 26)02-Apr-13 12:25:36 PM . bit 7 (CSRC) = 0 (non utilisé : 0 par exemple) . passage en banque 1 bsf TRISB . RP0 . (SPBRG) = D'25' bsf STATUS . 1 . 2 .L'USART du PIC 16F628A r Si OERR = 1 (erreur d'overrun) : CREN à mettre 0 puis à 1 Restauration du contexte s Finalement : Initialisation : bsf STATUS . bit 5 (TXEN) = 1 : autorise la réception http://fabrice.pagesperso-orange. passage en banque 1 movlw D'25' movwf SPBRG .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. passage en banque 1 movlw B'00100100' movwf TXSTA . broche RB1/RX/DT configurée en entrée bsf TRISB . bit 6 (TX9) = 0 : 8 bits de transmission . broche RB2/TX/CK configurée en entrée bsf STATUS . RP0 . RP0 .sincere.

bit 2 (FERR) = 0 (en lecture seule) . bit 4 (SYNC) = 0 : mode asynchrone .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. bit 3 (ADEN) = 0 (non utilisé : 0 par exemple) .htm (22 of 26)02-Apr-13 12:25:36 PM . bit 1 (TRMT) = 0 (en lecture seule) . bit 4 (CREN) = 1 : autorise la réception .sincere. passage en banque 1 http://fabrice. bit 0 (TX9D) = 0 (non utilisé : 0 par exemple) bcf STATUS . passage en banque 0 movlw B'10010000' movwf RCSTA . bit 6 (RX9) = 0 : 8 bits de réception .L'USART du PIC 16F628A . bit 2 (BRGH) = 1 : mode asynchrone haute vitesse . RP0 . bit 5 (SREN) = 0 (non utilisé : 0 par exemple) . RP0 . bit 1 (OERR) = 0 (en lecture seule) .pagesperso-orange. bit 7 (SPEN) = 1 : utilisation du port série . bit 0 (RX9D) = 0 (non utilisé : 0 par exemple) bsf STATUS . bit 3 = 0 (non implémenté) .

passage en banque 1 btfss PIE1. RP0 .pagesperso-orange. RP0 . autorisation de l'interruption d'émission de l'USART Routine d'interruption org 0x0004 . passage en banque 0 btfsc PIR1. PEIE . TXIE . sauvegarde du registre W puis du registre STATUS movwf W_TEMP swapf STATUS . GIE .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.htm (23 of 26)02-Apr-13 12:25:36 PM . autorisation des interruptions des périphériques bsf PIE1 . RCIE goto int1 bcf STATUS . RCIE .L'USART du PIC 16F628A bsf INTCON.sincere. autorisation de l'interruption de réception de l'USART bsf PIE1 . RCIF goto reception int1 http://fabrice. vecteur d'interruption (directive du compilateur MPLAB) .W movwf STATUS_TEMP bsf STATUS . autorisation globale des interruptions bsf INTCON .

passage en banque 1 btfss PIE1.pagesperso-orange.. passage en banque 0 btfsc PIR1.sincere. RP0 . .. http://fabrice. TXIF goto emission int2 . W movwf REGISTRE_R ... goto restauration reception bcf STATUS . les 8 bits de données sont transférés dans un registre d'usage général . TXIE goto int2 bcf STATUS .htm (24 of 26)02-Apr-13 12:25:36 PM .. passage en banque 0 movf RCREG .L'USART du PIC 16F628A bsf STATUS . traitement des autres interruptions . . RP0 .. RP0 ..fr/cm_electronique/projet_pic/aidememoire/usart628/usart628..

pagesperso-orange. restauration des registres STATUS puis W http://fabrice.. W bcf STATUS .L'USART du PIC 16F628A bcf STATUS . . CREN . RP0 . OERR .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628. RP0 . passage en banque 0 movwf TXREG goto int2 restauration swapf STATUS_TEMP . traitement de l'erreur d'overrun bcf RCSTA . on efface le bit OERR bsf RCSTA . passage en banque 0 btfss RCSTA . les 8 bits de données à transmettre sont dans le registre d'usage général REGISTRE_T movf REGISTRE_T . CREN . test d'une erreur d'overrun goto int1 .htm (25 of 26)02-Apr-13 12:25:36 PM . .. on relance la réception goto int1 emission ..sincere.. W .

L'USART du PIC 16F628A movwf STATUS swapf W_TEMP .sincere. W retfie . retour d'interruption 9. Révision 01 http://fabrice.pagesperso-orange.htm (26 of 26)02-Apr-13 12:25:36 PM . f swapf W_TEMP .Bibliographie Sur le site de Microchip : Tutorial : Using the USART in asynchronous mode (C) Fabrice Sincère .fr/cm_electronique/projet_pic/aidememoire/usart628/usart628.