L'interfaccia seriale dell' 8051

La porta seriale del1'8051 permette di effettuare comunicazioni full duplex .

La parte di ricezione contiene un buffer che permette di ricevere un secondo byte mentre il primo non è stato ancora letto. I registri di ricezione e trasmissione sono entrambi mappati all'indirizzo 98H (registro SBUF). Una scrittura in SBUF carica il registro di trasmissione, mentre una lettura in SBUF accede al registro di ricezione.

 SCON è il registro di controllo della porta seriale:

SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0 SM1 Modo
0 0 0
0 1 1
1 0 2
1 1 3

La porta seriale può operare in quattro modi distinti:

  1. Modo O: i dati seriali vengono trasferiti in ingresso e in uscita tramite la linea RXD. La linea TXD emette il clock utilizzato dal registro a scorrimento per leggere/emettere i dati seriali.
    I dati trasmessi sono ad 8 bit; il primo bit ad uscire è 1'LSB.
    La velocità in baud è fissata ad 1/12 della frequenza dell'oscillatore.
    Dettagli
  2. Modo 1: comunicazione a 10 bit, 1 bit di start (0), 8 bit di dati (I' LSB è sempre il primo) ed 1 bit di stop (1).
    La trasmissione avviene tramite la linea TXD, la ricezione tramite la linea RXD. In ricezione il bit di stop viene scritto nel bit RB8 del registro SCON. La velocità di comunicazione è variabile.
    Dettagli
  3. Modo 2: comunicazione ad 11 bit, 1 bit di start (0), 8 bit di dati (LSB per primo), 1 bit programmabile dall'utente (ad esempio per la parità) ed 1 bit di stop (1). La trasmissione avviene tramite la linea TXD, la ricezione tramite la linea RXD.
    In trasmissione il nono bit viene letto dal bit TB8 di SCON. In ricezione il nono bit viene scritto nel bit RB8 del registro SCON;
    La velocità in baud è programmabile ad 1/32 o 1/64 della frequenza dell'oscillatore.
    Dettagli
  4. Modo 3: comunicazione a 11 bit, 1 bit di start (0), 8 bit di dati (LSB per primo). 1 bit programmabile dall'utente (ad esempio per la parità) ed 1 bit di stop (1). La trasmissione avviene tramite la linea TXD, la ricezione tramite la linea RXD.
    Dettagli

II rnodo 2 e il modo 3 hanno la particolarità di poter gestire un sistema di comunicazione multiprocessore.
La porta può essere programmata in modo tale che, quando viene ricevuto un bit di stop, I'interrupt della porta seriale venga attivato solo quando RB8 = 1.
Questo modo di funzionamento viene abilitato impostando ad 1 il bit SM2 del registro SCON.

Tabella descrittiva della funzione dei Bit di SCON in corrispondenza dei vari modi di funzionamento della porta seriale
Modo 0 1 2 3
SM2 Non ha nessuna funzione e deve essere 0 SM2=1: controlla il bit di stop in ricezione, se Bit-stop <>1 non attiva RI.
SM2=0: alla fine della ricezione del dato, RI viene in ogni caso attivato.
SM2=1 controlla il 9° bit in ricezione se =0 non attiva RI.
SM2=0: alla fine della ricezione del dato, RI viene in ogni caso attivato
SM2=1 controlla il 9° bit in ricezione se =0 non attiva RI.
SM2=0: alla fine della ricezione del dato, RI viene in ogni caso attivato
REN 1: abilita la ricezione
0: disabilita la ricezione
1: abilita la ricezione
0: disabilita la ricezione
1: abilita la ricezione
0: disabilita la ricezione
1: abilita la ricezione
0: disabilita la ricezione
TB8 nulla nulla contiene il 9° bit da trasmettere contiene il 9° bit da trasmettere
RB8 nulla contiene il bit di stop contiene il 9° bit ricevuto contiene il 9° bit ricevuto
TI settato alla fine del trasferimento dell'ottavo bit.
Prima di trasmettere il nuovo dato deve essere resettato via SW.
attivato all'inizio della trasmissione del bit di stop.
Prima di trasmettere il nuovo dato deve essere resettato via SW.
attivato all'inizio della trasmissione del bit di stop.
Prima di trasmettere il nuovo dato deve essere resettato via SW.
attivato all'inizio della trasmissione del bit di stop.
Prima di trasmettere il nuovo dato deve essere resettato via SW.
RI mettendolo a 0 si abilita la ricezione del dato.
Dopo aver ricevuto l'ottavo bit torna a 1
attivato circa a metà della ricezione del bit di stop.
Per ricevere il prossimo dato occorre rimetterlo a 0 via SW
attivato circa a metà della ricezione del bit di stop.
Per ricevere il prossimo dato occorre rimetterlo a 0 via SW
attivato circa a metà della ricezione del bit di stop.
Per ricevere il prossimo dato occorre rimetterlo a 0 via SW
Velocità di trasferimento in Baud 1/12 FClock 2*SMOD/32*FClock/(12*(256-TH1)) 2*SMOD/32*FClock 2*SMOD/32*FClock/(12*(256-TH1))
Formato di trasmissione/ricezione 8 bit sincroni con clock asincrona con 8 bit di dati e 1 di stop asincrona con 8 bit di dati 1 bit di controllo e 1 bit di stop asincrona con 8 bit di dati 1 bit di controllo e 1 bit di stop

Velocità di trasmissione

La velocità di trasmissione in modo 0 è fissa e vale 1/12 della frequenza di clock. In modo 2 la velocità di trasmissione dipende dal valore del bit SMOD nel registro PCON.
Se SMOD = O (valore assunto automaticamente dopo il reset) la velocità in baud è 1/64 della frequenza di clock.
Se SMOD = 1 la velocità in baud è 1/32 della frequenza di clock.
Nei modi 1 e 3 la velocità di trasmissione viene determinata dalla frequenza con cui avviene I'overflow del timer 1.
I1 timer 1 è quindi il generatore di baud rate per le modalità 1 e 3.
I1 baud rate in Modo 1 e 3 viene definito dalla seguente formula:

baud rate =2 *SMOD/32* FClock/(12*(256-TH1))

L'interrupt del timer 1 dovrebbe essere disabilitato quando il timer viene utilizzato come generatore di baud rate. I1 timer 1 può essere fatto funzionare sia come timer che come contatore nei modi 0, 1 e 2.
In generale viene configurato come timer in modalità di autocaricamento (in modo 2).
In questo caso la frequenza di overflow è data da:

frequenza di overflow =frequenza clock / 12*(256 - TH1)

È possibile raggiungere baud rate molto bassi lasciando abilitata I'interruzione del timer 1, configurando il timer per funzionare come timer a 16 bit (modo 1) e usando I'interruzione generata per ricaricare via software i registri THI e TL1.

In tabella viene mostrato I'utilizzo del timer 1 per generare baud rate usati comunemente nelle trasmissioni seriali.

Timer l
Baud rate Clock (MHz) SMOD C/T Modo Valore reload
1M (Modo 0) 12
375 K (Modo2) 12 1
62,5 k (Modo 1,3) 12 1 0 2 FFH
19.2 k 11,059 1 0 2 FDH
9,6 k 11,059 0 0 2 FDH
4,8 k 11,059 0 0 2 FAH
2,4 k 11,059 0 0 2 F4H
1,2 k 11,059 0 0 2 E8H
137,5 11,986 0 0 2 1DH
110 6 0 0 2 72H
110 12 0 0 1 FEEBH

I1 registro PCON contiene il bit SMOD il cui valore influisce sul baud rate della porta seriale. I1 registro PCON contiene, inoltre, altri due bit che servono nelle versioni CMOS de11'8051 per ridurre il consumo di corrente.

Registro PCON

SMOD GF1 GF0 PD IDL

BIT SYMBOL FUNCTION
PCON.7 SMOD Bit utilizzato per selezionare il Baud rate della porta seriale
PCON.6 Riservati
PCON.5 Riservati
PCON.4 Riservati
PCON.3 GF1 Bit utilizzabile a piacere
PCON.2 GF0 Bit utilizzabile a piacere
PCON.1 PD Power-Down bit. Settando questo bit si attiva il modo di funzionamento power-down.
Il clock viene bloccato di conseguenza tutte le attività del micro vengono congelate, l' unica possibilità d'uscita da questa situazione è il segnale di Reset.
PCON.0 IDL Idle mode bit. Settando questo bit si attiva il modo di funzionamento idle.
Il clock rimane in funzione ma viene bloccata l'attività del micro eccetto timers, porta seriale e interrupts; per uscirne fuori basta una richiesta di interruzione o un Reset.


Porta seriale in modo 0

Porta seriale in modo 1

Porta seriale in modo 2

Porta seriale in modo 3