Capítulo 8
A interface de comunicação serial
da família de microcontroladores
MCS-51 da Intel
Prentice Hall
Microcontroladores 8051
1
Capítulo 8
 A interface de comunicação serial:
(SCON) =
SM0
0
0
1
1
Símbolo
SM2
REN
TB8
RB8
TI
RI
SM1
SM2
REN
TB8
RB8
TI
RI
Descrição
Baud Rate
Registrador de Deslocamento
fosc./12
UART de 8 bits
variável
UART de 9 bits
fosc./64 ou fosc./32
UART de 9 bits
variável
Nome e Significado
Habilita a característica de comunicação de multiprocessadores no modo 2 e 3. Nesses
modos, se SM2=1, RI não será ativado se o nono bit de dado recebido for igual a 0. No
modo 1, se SM2=1, RI não será ativado se um stop bit válido não for recebido. No modo 0,
deverá ser 0.
Bit habitador da recepção serial. Setado/limpado por software para habilitar ou desabilitar
a recepção 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 não é usado.
É o flag de interrupção de transmissão. Setado por hardware no final do tempo do 8 bit no
modo 0 ou no início do stop bit em outros modos, em qualquer transmissão serial. Deverá
ser limpado por software.
É o flag de interrupção de recepção. 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 recepção serial.
Deverá ser limpado por software.
Prentice Hall
SM1
0
1
0
1
SM0
Modo
0
1
2
3
Microcontroladores 8051
2
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
Prentice Hall
Figura 1: A interface de comunicação serial no modo 0.
Microcontroladores 8051
3
8051 Internal Bus
Write
to
SBUF
TB8
D S
Q
CL
Timer 1
Overflo
w
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
Figura 2: A interface de comunicação serial no modo 1.
Prentice Hall
Microcontroladores 8051
4
Capítulo 8
Baud Rate (bits/seg) Freq. Osc. (MHz)
Modo 0 Máx: 1MHz
12
Modo 2 Máx: 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 8051
5
Capítulo 8
Rotina de atendimento a interrupção
do canal de comunicação serial
(0023h)
RETI
Prentice Hall
Figura 2: Fluxograma e programa fonte
estruturado do exercício resolvido 1.
(0023h)
ISerial: RETI
Microcontroladores 8051
6
Capítulo 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
S
(TI) = 0 
N
 #0b
(A)  not (A)
(TI)
Prentice Hall
Microcontroladores 8051
7
DEFSEG EXEM, ABSOLUTE
SEG EXEM
MAIN:
LOOP:
; Define segmento de programa EXEM
ORG 0000h
AJMP 0100h
; Após o Reset da CPU, o programa prossegue no endereço 0000h
; (durante o acionamento da chave de Reset ou após a energização do
; sistema através do circuito de Reset formado por um resistor em
; paralelo com um diodo e em série com um capacitor que está ligado ao
; pino de Reset da CPU). Como foi pedido que o programa principal fosse
; escrito no endereço de memória de programa 0100h, usou-se um salto
; incondicional para tal posição de memória.
ORG
RETI
; Após uma interrupção do canal serial , o programa prossegue no
; endereço '0023h' e retorna da rotina de atendimento da fonte de
; interrupção do canal de comunicação serial.
0023h
ORG 0100h
MOV
SCON,#10h
MOV
IE,#90h
MOV
MOV
A,#55h
SBUF,A
JNB
TI,$
CLR
TI
CPL
SJMP
END
A
LOOP
Prentice Hall
; Início 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 interrupção é habilitada pelo seu
; bit habilitador); (ES)=1 (Habilita a interrupção de comunicação serial)
; (A)  #55h (dado a ser transmitido)
; (SBUF)  (A). Carrega o dado a ser transmitido no (SBUF) e é iniciada
; a transmissão serial
; Se (TI)=0 (o dado ainda não foi transmitido serialmente bit a bit) 
; (PC)  $ ( salta para o próprio endereço da instrução JNB). Aguarda ser
; transmitido. Quando o dado é transmitido faz (TI)=1 e é gerado uma
; interrupção do canal serial (salta para o endereço 0023h - rot. de serviço
; de com. serial)
; (TI)  0 (Libera canal de comunicação serial para a transmissão de um
; novo dado)
; (A)  complemento de um do (A)
; Loop do programa principal
Microcontroladores 8051
8
Download

A interface de comunicação serial