Le port série est un port full-duplex, c'est à dire qu'il
peut fonctionner en émission et réception simultanées. Il
possède un tampon de réception d'un octet. Le registre de
réception et d'emission est le même : SBUF (099H). En effet une
écriture à cette adresse provoque une émission et une lecture,
une réception.
Un registre (SCON 098H) permet le contrôle de l'interface de
communication série. Il y a 4 modes de fonctionnement :
Description du registre de contrôle SCON
| SM0 | SM1 | Mode | Description | fréquence de communication |
| 0 | 0 | 0 | registre à décalage | fosc / 12 |
| 0 | 1 | 1 | UART 8 bits | variable |
| 1 | 0 | 2 | UART 9 bits | fosc/64 ou fosc/32 |
| 1 | 1 | 3 | UART 9 bits | variable |
Les TIMERS et le port série :
Le TIMER 1 peut être utilisé comme horloge. Il doit être configuré en compteur 8 bits à rechargement automatique (voir chapitre sur les timers). La fréquence de communiquation (FC) est alors :
FC = ( K * fosc ) / ( 32 * 12 * ( 256 - TH1))
avec fosc = fréquence de l'oscillateur du micro et K = 1 si SMOD = 0 ou K = 2 si SMOD = 1
Le constructeur Intel conseille un quartz de 11.059 MHz pour utiliser l'UART.
Pour vous éviter des calculs, voici un tableau des fréquences de communication qui donne les informations nécessaires :
| Fréquence de communication |
Fréquence de l'oscillateur |
SMOD | TH1 |
| 19200 | 11.059 MHz | 1 | FDH |
| 9600 | 11.059 MHz | 0 | FDH |
| 4800 | 11.059 MHz | 0 | FAH |
| 2400 | 11.059 MHz | 0 | F4H |
| 1200 | 11.059 MHz | 0 | E8H |
| 300 | 6 MHz | 0 | CCH |
| 110 | 6 MHz | 0 | 72H |
L'utilisation du générateur de fréquence de communication du 80C537
Ce générateur de fréquence ne sert qu'au deuxième port
série du 80C537. Le registre de contrôle de ce deuxième port
est S1CON (9BH) et son organisation est la même que pour le
registre SCON sauf qu'il n'a pas 2 bits SM0 et SM1 mais un seul
bit SM. Ceci entraîne qu'il n'a que deux modes de fonctionnement
: SM = 0, UART 9 bits et SM = 1, UART 8 bits.
La fréquence de communication est fixée par le quartz et par la
valeur placée dans le registre S1REL. On a:
SIREL = 256 - (fosc / (32 * FC))