• Aucun résultat trouvé

Plusieurs modes de fonctionnement sont possibles. Le mode le plus utilisé emploie le temporisateur 1 en mode de rechargement automatique pour définir la cadence d'envoi des

Dans le document Microprocesseurs et Microcontrôleurs (Page 128-132)

// C’est la routine associée au débordement du Timer0 qui a le //numéro 1 (voir document ).

P4 = P4 ^ 0x01 ;

}

void main ( void )

{

TMOD = 0x06 ; TL0 = 0xFB ; EA = 1 ; ET0 = 1 ; TR0 = 1 ; While (1) { }

}

// Inverser l’état logique du bit poids faible de P4.

// TMOD (Gate=0 et C/T = 1 ; M1 M0 = 10)

// Chargement des registres poids fort TH0 et poids faible TL0 du Timer0.

// Autorisation générale des interruptions.

// Autorisation de l’interruption associée au débordement du Timer0.

// Activer le Timer0 (incrémentation avec la cadence du signal Sf ).

V.9 Le port série

Pour certaines applications (transfert de données à distance, commande de modems,...), il est

utile de disposer en plus des ports d'E/S parallèles, d'un port d'entrée/sortie série ou sériel

(Serial Input/Output Port). Le principe des liaisons série est très simple : plutôt que d'envoyer

simultanément 8 bits en parallèle sur 8 lignes, on envoie les 8 bits l'un après l'autre sur une

seule ligne. Le 8051 dispose d'un port série bidirectionnel utilisant une ligne pour l'envoi des

données, TxD, et une ligne pour la réception des données, RxD.

Plusieurs modes de fonctionnement sont possibles. Le mode le plus utilisé emploie le

temporisateur 1 en mode de rechargement automatique pour définir la cadence d'envoi des

bits (baud rate). Les cadences standard vont de 300bps (bits par seconde) à 19200bps.

38 Jlassi Khaled

Pour envoyer un caractère, il suffit de l'écrire dans le registre Sbuf d'émission ; cela enclenche

automatiquement la procédure d'envoi du caractère :

- le premier bit s'appelle le bit Start, toujours à 0 ; - il est suivi par les 8 bits de l'octet à transmettre ;

- on termine par le bit Stop, toujours à 1 ; la présence des bits Start et Stop assure qu'il y a toujours un front descendant en début de transmission d'un octet ; la ligne reste à 1 jusqu'à l'octet suivant ;

Sur la figure suivante, nous présentons le chronogramme de fonctionnement de la liaison série. Dans cet exemple nous avons choisi d’envoyer le caractère E dont le code ASCII est 69 (01000101) avec un bit de stop et sans bit de parité

Figure 4.16 Chronogramme de fonctionnement de la liaison série

Lorsque le registre Sbuf est vide, le microcontrôleur déclenche une demande d'interruption ; le processeur enverra alors l'octet suivant, si nécessaire ; Il est possible aussi d'envoyer des mots de 9 bits plutôt que 8 ; ceci permet d'accoler aux 8 bits un bit de parité pour le contrôle des erreurs, ou de créer un petit réseau avec plusieurs processeurs. Lors de la réception d'un caractère, la procédure est enclenchée par la détection d'un flanc descendant à la broche RxD. Les 8 ou 9 bits sont placés dans le registre Sbuf de réception (curieusement, on utilise le même nom et la même adresse, 99h, pour les deux registres Sbuf ; quand on écrit à cette adresse, l'octet est stocké dans le registre d'émission, quand on lit, c'est le contenu du registre de réception). Lorsque tous les bits sont présents, on déclenche une demande d'interruption. Il faut que le microcontrôleur vienne lire l'octet reçu avant la fin de la

39 Jlassi Khaled réception de l'octet suivant, sinon le premier est perdu. L'émetteur et le récepteur peuvent travailler simultanément. Les demandes d'interruption sont combinées. Donc, lorsque l'on envoie et reçoit simultanément des octets, le processeur doit déterminer lors de chaque demande d'interruption si elle émane de l'émetteur ou du récepteur. Cela se fait en allant lire les bits TI et RI du registre Scon (Serial Port Control Register).

V.9.1 Configuration de l’interface série .

L’interface série peut fonctionner selon 4 modes ; la sélection de l’un de ces modes se fait par les deux bits poids fort d’un registre à fonction spéciale (0x98) adressable au niveau du bit: S0CON (Serial CONfiguration 0). Ce registre contient également les bits d’indication d’émission, d’indication de réception et de validation de réception :

SM0 SM1 - REN - - TI RI

Figure 4.17 Registre S0CON

SM0 et SM1 spécifient le mode de fonctionnement du port série :

SM0 SM1 Mode Description Vitesse 0 0 1 1 0 1 0 1 0 1 2 3 Registre à décalage UART 8 bits UART 9 bits UART 9 bits Fosc/12* Variable Fosc/64 ou Fosc/32* Variable

REN = 1 : réception sur le port série est activée.

= 0 : réception sur le port série inhibée.

40 Jlassi Khaled TI : c’est l’indicateur de transmission, il est mis automatiquement à 1 quand la

donnée a été complètement envoyée . Il doit être remis à 0 par programme.

RI : c’est l’indicateur de réception, il est automatiquement mis à 1 à la réception d’une donnée complète. Il doit être remis à 0 par programme.

* Fosc est la fréquence horloge du microcontrôleur.

V.9.2 Vitesse de transmission

Deux parmi les 4 modes de fonctionnement du port série sont à vitesse variable : dans ces deux modes la vitesse est déterminée par la fréquence de débordements (dépassement de 255 et passage à 0) du Timer1, qui est constitué de deux registres 8 bits TH1 et TL1, et qui doit être configuré en mode temporisateur 8 bits à

rechargement automatique à travers le registre TMOD (0x89).

On présente les bits intervenant dans la configuration du timer1 :

0 0 C/T 1 M1 0 M0 - - - - = 0x20

Figure 4.18 Registre TMOD

Ce timer peut être activé ou arrêté suivant l’état d’un bit du registre TCON adressable au niveau bit (Timer CONtrol) : il s’agit du bit TR1

1 : Timer1 est en mode comptage d’événements. 00 : compteur 13 bits. 01 : compteur 16 bits. 10 : compteur 8 bits à = 1 : Timer1 actif. = 0 : Timer1 arrêté.

41 Jlassi Khaled Dans le cas de la configuration donnée sur la figure 4.17, la valeur de TH1 est chargée dans TL1 qui est incrémenté avec une fréquence Fosc /12*32. Une fois TL1 repasse à 0, il y’a indication de débordement ainsi qu’un rechargement de TL1 avec la valeur de TH1, et le cycle recommence : c’est la fréquence de débordement du timer qui fixe la vitesse de transmission (figure 4.19).

Exemple :

On veut établir une liaison série avec une vitesse de 9600 bits /seconde avec un microcontrôleur ayant une fréquence d’horloge de 12 Mhz.

- Déterminer la valeur que doit contenir TH1.

Dans le document Microprocesseurs et Microcontrôleurs (Page 128-132)