Você está na página 1de 8

Captulo 8

A interface de comunicao serial


da famlia de microcontroladores
MCS-51 da Intel

Prentice Hall

Microcontroladores 8051

Captulo 8
A interface de comunicao serial:
(SCON) =
SM0
0
0
1
1
Smbolo
SM2

REN
TB8
RB8
TI

RI

SM1
0
1
0
1

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

Descrio
Baud Rate
Registrador de Deslocamento
fosc./12
UART de 8 bits
varivel
UART de 9 bits
fosc./64 ou fosc./32
UART de 9 bits
varivel
Nome e Significado
Habilita a caracterstica de comunicao de multiprocessadores no modo 2 e 3. Nesses
modos, se SM2=1, RI no ser ativado se o nono bit de dado recebido for igual a 0. No
modo 1, se SM2=1, RI no ser ativado se um stop bit vlido no for recebido. No modo 0,
dever ser 0.
Bit habitador da recepo serial. Setado/limpado por software para habilitar ou desabilitar
a recepo serial.
o nono bit de dado que ser transmitido no modo 2 e 3. Setado ou limpado por software.
No modo 2 e 3, o nono bit de dado que foi recebido. No modo 1, se SM2=0, RB8 o stop
bit que foi recebido. No modo 0, RB8 no usado.
o flag de interrupo de transmisso. Setado por hardware no final do tempo do 8 bit no
modo 0 ou no incio do stop bit em outros modos, em qualquer transmisso serial. Dever
ser limpado por software.
o flag de interrupo de recepo. Setado por hardware no final do tempo do 8 bit no
modo 0 ou na metade do tempo do stop bit em outros modos, em qualquer recepo serial.
Dever ser limpado por software.

Prentice Hall

Modo
0
1
2
3

Microcontroladores

8051 Internal Bus


Write to
SBUF

D S Q
CL

SBUF

RXD
P3.0 ALT
Output
Function

Shift
Zero Detector

Start

SHIFT
TX Control
TX Clock TI
SEND

S6
Serial Port
Interrupt

Shift
Clock

RX Clock RI Receive
RX Control
Start 111111110 Shift

REN
RIbarra

Shift
Input Shift Register

Load
SBUF

TX.D
P3.1 ALT
Output
Function

RX.D
P3.0 ALT
Input
Function

SBUF

Read
SBUF
8051 Internal Bus

Figura 1: A interface de comunicao serial no modo 0.

Prentice Hall

Microcontroladores

8051 Internal Bus


Write to
SBUF

TB8

D S
Q
CL

Timer 1
Overflow

SBUF

TX
D

Zero Detector

2
SMOD=
0

SMOD=
1

Start
DATA

16
Serial Port
Interrupt

Sample

1 to 0
transition
detector
RXD

16

SHIFT

TX Control
TX Clock TI
SEND
RX Clock RI Load
SBUF
RX Control
Shift
Shift
Start
Bit
1FFh
Detector
Input Shift Register (9
bits)
Load
SBUF
SBUF
Read
SBUF
8051 Internal Bus

Prentice Hall

Figura 2: A interface de comunicao serial no modo 1.

Microcontroladores

Captulo 8
Baud Rate (bits/seg) Freq. Osc. (MHz)
Modo 0 Mx: 1MHz
12
Modo 2 Mx: 375K
12
Modo 1, 3: 62,5K
12
19,2K
11,059
9,6K
11,059
4,8K
11,059
2,4K
11,059
1.2K
11,059
137,5
11,059
110
6
110
12

Prentice Hall

Timer 1
SMOD C/Tbarra Modo Valor Recar.
X
X
X
X
1
X
X
X
1
0
2
FFh
1
0
2
FDh
0
0
2
FDh
0
0
2
FAh
0
0
2
F4h
0
0
2
E8h
0
0
2
1Dh
0
0
2
72h
0
0
1
FEEBh

Microcontroladores

Captulo 8

Rotina de atendimento a interrupo


do canal de comunicao serial
(0023h)

RETI

Prentice Hall

Figura 2: Fluxograma e programa fonte


estruturado do exerccio resolvido 1.
(0023h)
ISerial: RETI

Microcontroladores

Captulo 8
Programa Principal:
(SCON) #10h
(IE) #90h
(A) #55h
(SBUF) (A)

(0100h)
PROGP:

LOOP:

MOV
MOV
MOV

SCON,#10h
IE,#90h
A,#55h

MOV

SBUF, A

JNB

TI,$

CLR
CPL
SJMP
END

TI
A
LOOP

(TI) = 0
N

#0b
(A) not (A)
(TI)

Prentice Hall

Microcontroladores

DEFSEG EXEM, ABSOLUTE


SEG EXEM

MAIN:

LOOP:

; Define segmento de programa EXEM

ORG 0000h
AJMP 0100h

; Aps o Reset da CPU, o programa prossegue no endereo 0000h


; (durante o acionamento da chave de Reset ou aps a energizao do
; sistema atravs do circuito de Reset formado por um resistor em
; paralelo com um diodo e em srie com um capacitor que est ligado ao
; pino de Reset da CPU). Como foi pedido que o programa principal fosse
; escrito no endereo de memria de programa 0100h, usou-se um salto
; incondicional para tal posio de memria.

ORG
RETI

; Aps uma interrupo do canal serial , o programa prossegue no


; endereo '0023h' e retorna da rotina de atendimento da fonte de
; interrupo do canal de comunicao serial.

ORG
MOV

0023h

0100h
SCON,#10h

MOV

IE,#90h

MOV
MOV

A,#55h
SBUF,A

JNB

TI,$

CLR

TI

CPL
SJMP
END

A
LOOP

Prentice Hall

; Incio do programa principal


;(SCON) # 00010000b. Programa o canal serial como registrador de
; deslocamento e baud rate de fosc./12 (modo 0).
; (IE)=1001 0000b. Faz (EA)=1 (cada interrupo habilitada pelo seu
; bit habilitador); (ES)=1 (Habilita a interrupo de comunicao serial)
; (A) #55h (dado a ser transmitido)
; (SBUF) (A). Carrega o dado a ser transmitido no (SBUF) e iniciada
; a transmisso serial
; Se (TI)=0 (o dado ainda no foi transmitido serialmente bit a bit)
; (PC) $ ( salta para o prprio endereo da instruo JNB). Aguarda ser
; transmitido. Quando o dado transmitido faz (TI)=1 e gerado uma
; interrupo do canal serial (salta para o endereo 0023h - rot. de servio
; de com. serial)
; (TI) 0 (Libera canal de comunicao serial para a transmisso de um
; novo dado)
; (A) complemento de um do (A)
; Loop do programa principal

Microcontroladores