Você está na página 1de 41

Comunicao Serial

Reviso

Comunicao serial no 8051


Prof. Walter Varella
Comunicao Serial - Introduo

Como conectar um microcomputador (ou


equipamento microprocessado) a outros
equipamentos?
Atravs de Interfaces de comunicao:
Paralelas
Seriais
Comunicao Serial - Introduo
Interface Paralela:
Todos os bits de uma palavra so transmitidos
simultaneamente
Cada canal necessita de diversos fios

Vantagens: Desvantagens:
- Muitos fios > custo
- Maior rapidez.
- Rudo, perda de
- Maior simplicidade
sincronismo
das interfaces.
Menores distncias
Comunicao Serial - Introduo
Interface Paralela:

Dados + controle

Equipamento 1 Equipamento 2
Comunicao Serial - Introduo
Interface Serial
Os bits de uma palavra so transmitidos
seqencialmente no tempo, em um nico meio
fsico.

Desvantagens:
Vantagens:
- Menor velocidade
- Poucos fios.
- Maior complexidade
- Distncias grandes
das interfaces
Comunicao Serial - Introduo
Interface Serial

Dados
+
controle
Equipamento 1 Equipamento 2

Pode ser: Sncrona ou Assncrona


Comunicao Serial - Introduo
Tipos de Interfaces Seriais:
Sncrona
Transmissor e receptor utilizam o mesmo clock
mesma frequncia e fase
Transferncia de blocos
Cada bloco:
caracteres de sincronismo
dados
check de erro
Pequeno overhead:
para cada bloco: + 3 bytes (2 sincronismo, 1
checksum)
ex.: bloco=1024 bytes + 3 bytes = 1027 bytes
0,3% de tempo extra !
Comunicao Serial - Introduo
Tipos de Interfaces Seriais:
Assncrona

Clocks do transmissor e do receptor podem


estar ligeiramente diferentes
ressincronismo a cada byte
Transferncia de bytes
Para cada byte mais 2 ou 3 bits:
start bit
bit de paridade
stop bits (1 a 2)
Grande overhead:
para cada byte + 3 bits = 11 bits
= 37,5% de tempo extra !
= < velocidade
Comunicao Serial - Introduo
Embora as interfaces seriais sncronas sejam mais
rpidas, as interfaces seriais assncronas so mais
utilizadas, devido a:

Facilidade de implementao
Menor Custo

Nesta aula, nosso assunto


principal ser
comunicao serial assncrona!
Comunicao Serial Assncrona
Cdigo:

Conjunto de regras pelas quais informaes ou dados


(ex: nmeros, letras) podem ser convertidos a uma
representao do cdigo e vice-e-versa.
Para transmitir a informao atravs de uma interface
necessrio que ela esteja codificada de alguma forma.
A unidade mais bsica de informao para ns o bit,
que pode ter valores 0 ou 1. Toda informao utilizada
pelos computadores codificada de alguma forma em
seqncias de bits.
Comunicao Serial Assncrona
Cdigo ASCII
Abreviao de: American Standard Code for Information
Interchange
Cdigo universal para intercmbio de informaes,
concebido especialmente para utilizao em
transmisso, recepo e processamento de dados.
ASCII para 7 bits: 27 = 128 caracteres podem ser
representados.
ASCII para 8 bits: 28 = 256 caracteres diferentes.

ex.: o cdigo ASCII 0100 0001 = 65D = 41H


representa o caractere "A" .
Comunicao Serial Assncrona
Paridade
Bit acrescentado ao dado, destinado deteco de erros.
Paridade par: nmero par de bits no estado 1
Paridade mpar: nmero mpar de bits no estado 1
ex.: caracter "Aem ASCII de 7 bits: 1 0 0 0 0 0 1
com paridade mpar:
como tem-se 2 bits no estado 1, o bit de paridade
tambm ser 1, de forma que no total tem-se 3 bits
em 1 (mpar)
bit de paridade: 1 1 0 0 0 0 0 1
Comunicao Serial Assncrona
Paridade

Ex.: dado com bit de paridade: 1 1 0 0 0 0 0 1


vamos supor que por um erro de transmisso, um
dos bits 0 transformou-se em 1:
1 1 0 0 0 0 0 1 -------> 1 1 0 0 1 0 0 1

ao verificar a paridade, o receptor perceber que


h um nmero par de 1, e indicar que houve algum
erro na transmisso, e que esse byte invlido.
Comunicao Serial Assncrona
Transmisso de um Caractere:
Ex.:

Transmisso do caractere A em ASCII com paridade


mpar e dois stop bits:
1 1 0 0 0 0 0 1 = b7 b6 b5 b4 b3 b2 b1 b0

Start b0 b1 b2 b3 b4 b5 b6 b7 Stop Stop


Comunicao Serial Assncrona
Transmisso de um Caractere:
Quando no h dados sendo transmitidos, a linha fica
em nvel lgico 1.
Paridade: par, mpar ou sem paridade.
Normalmente se usa 1 ou 2 stop bits. Estes devem
garantir que o receptor ter tempo de receber e
armazenar o caracter, antes de receber o prximo.
A quantidade de bits na informao transmitida
tambm pode variar: de 5 a 8 bits.
Obs: Trasmissor e receptor devem ter as mesmas
configuraes quanto a velocidade, tamanho da
palavra, paridade e nmero de stop bits!
Comunicao Serial Assncrona
Transmisso de um Caractere:
O receptor reconhece a borda de descida do Start Bit e
sincroniza seu clock.
Aps 1 ciclo e meio comea a fazer a leitura dos
demais bits a cada clock.
Se as freqncias do transmissor e do receptor estiverem
perfeitamente sincronizadas, as leituras sero efetuadas
exatamente no meio de cada ciclo.
Tolerncia a pequenas variaes dos clocks de Tx e Rx.

Start b0 b1 b2 b3 b4 b5 b6 b7 Stop Stop

Sincroniza demais leituras


Comunicao Serial Assncrona
Bit Rate
 o nmero de bits por segundo transmitidos atravs
da interface serial.

Baud Rate
 o nmero de transies (ou eventos) por segundo.
Cada evento pode transmitir mais de 1 bit: ex.:
modems, onde a variao de fase da portadora poderia
representar dois ou mais bits.
Quando cada evento representa apenas 1 bit, ento o
Bit Rate e o Baud Rate so iguais.
Comunicao Serial Assncrona
Padres
RS-232C
Padro fsico e eltrico.
Conector DB25 (no caso dos computadores PC, usa-
se normalmente um DB9, com um subset dos sinais)
Pinagem:
DB25 DB9 descrio do sinal
2 3 Transmit Data - TX
3 2 Receive Data - RX
4 7 Request to Send - RTS
5 8 Clear to Send - DTS
6 6 Data Set Ready - DSR
7 5 Signal Ground - GND
8 1 Data Carrier Detect - DCD
15 Transmit Clock
17 Receive Clock
20 Data Terminal Ready - DTR
24 Auxiliary Clock
Comunicao Serial Assncrona
Padres
RS-232C

Padro fsico e eltrico


Opera com tenses referenciadas ao terra.
Nvel lgico 0 : tenso entre +3 e +15V
Nvel lgico 1: tenso entre - 3 e - 15V
Faixas de tenso invlido
+ 15V
nvel lgico 0
+3V
0V invlido
- 3V
nvel lgico 1
- 15V
invlido
Valores tpicos: + 12V e - 12V
Comunicao Serial Assncrona
Padres
RS-232C
"Single ended": sinal referenciado terra
Tx
Rx
Terra 0 V

Problemas:
Quedas de tenso ao longo do fio
Susceptvel a rudos e diferenas de potencial de
terras
Limite de distncia +/- 15m (depende da taxa)
Taxa mxima: 20Kbps
Comunicao Serial Assncrona
Padres
RS-232C
Exemplos de circuitos utilizados no RS 232C:
1488 - quad line driver
necessita de alimentao simtrica (+12V/-12V)
1489 - quad line receiver (s +5V)

MAX232C
alimentao simples, gera internamente
tenses simtricas.
Implementa dois drivers e receivers em um
nico chip
Comunicao Serial Assncrona - Circuitos
 1488  1489  MAX232
Comunicao Serial Assncrona
Padres
RS-422
"Differencial Voltage Pairs": Sinal
Diferencial
Tx + Va - Vb < - 0.2V = 0
Tx - Va - Vb > +0,2V = 1
par tranado
Vantagens:
Mais imune a cross-talk
Mais resistente a quedas de tenso
Limite de distncia: +/- 1200m (depende da taxa)
Taxa mxima: 10Mbps

No define conector


Comunicao Serial Assncrona
Padres
RS-485
Semelhante ao RS-422, mas com drivers tri-state
Permite topologias de redes multiponto
Rede do tipo mestre-escravo
At 64 dispositivos

 Componentes para RS 422 e RS 485


Am26LS32 - driver
Am26LS32 - receiver
MAX 481 / 483 / 485 / 487 / 1487 - transceivers
Comunicao Serial Assncrona
Padres
RS-485
Exemplo de topologia de rede com RS
485
End. 0
Mestre
Tx Rx

Tx Rx Tx Rx

End. 1 End. n - 1
Escravos
Comunicao Serial Assncrona
Padres
RS-485
Filosofia Mestre-Escravo
1 mestre, n - 1 escravos, cada um com 1 endereo
Mestre: toma a iniciativa da comunicao
Escravos: S respondem s mensagens a eles endereadas
TxD do mestre: Chega a todos RxD dos escravos
TxD dos escravos:
Em alta impedncia, quando um escravo for responder, conecta
seu transmissor
Mestre: fica ciclicamente interrogando um por um os escravos, que
respondem com seus dados, se possurem
Boa soluo para sistemas com poucos dispositivos, baixo trfego
ou onde a velocidade no for crtica.
Comunicao Serial
Componentes
UART
Universal Asynchronous Receiver / Transmiter
Converso paralela / serial
Insero / retirada automtica do Start-bit e Parity bit
Velocidades programveis
Interrupes para transmisso / recepo
Indicao de erros.

Exemplos
8251
16550
Muitos microcontroladores possuem UARTs internas
Comunicao Serial - 8051
UART interna
Uma das caractersticas mais interessantes do 8051
sua UART integrada. Pode-se facilmente escrever
ou ler dados via interface serial. Realiza todo o
processo de serializao, adio de start bits e stop
bits, etc.

Existem modelos de 8051 com duas UARTs, como o


da DALLAS (DS80C320)
Comunicao Serial - 8051
Estrutura da UART interna do 8051
Comunicao Serial - 8051
Usando a UART
So necessrios os seguintes passos para
configurar corretamente a UART interna do
8051:
Programar o Timer1 para gerar o "Baud Rate".
Programar o canal serial.
Habilitar / desabilitar interrupes
Comunicao Serial - 8051
Usando a UART
Programar o Timer1 para gerar o "Baud Rate".
Comunicao Serial - 8051
Programando o Timer
Timer1 no modo 2 (auto-reload)
Clculo:
Baud Rate = k x FreqOsc
32 x 12 x [256 - (TH1)]

se SMOD = 0, k=1 SMOD = bit 7 de PCON


se SMOD = 1, k=2

Ou seja:
se SMOD = 0 TH1 = 256 - ((FreqOsc / 384) / Baud)
se SMOD = 1 TH1 = 256 - ((FreqOsc / 192) / Baud)
Comunicao Serial - 8051
Programando o Timer - exemplo:
Ex.: cristal de 11.0592 Mhz e deseja-se 19200bps.
Supondo SMOD = 0
TH1 = 256 - ((11059000 / 384) / 19200)
TH1 = 256 - 1,5 = 254.5
Impossvel! Se usarmos para 254 teremos
14.400bps, se setarmos para 255 teremos
28.800bps! O que fazer?
Basta mudar SMOD para 1
TH1 = 256 - ((11059000 / 192) / 19200)
TH1 = 256 - 3 = 253
Comunicao Serial - 8051
Programando o Timer
Timer/Counter mode
 TMOD (89h)
7------T1------4 | 3-----T0--------0

Gate C/T M1 M0
1 0 (modo 2)
contador out timer

 TH1 (8Dh) = valor de recarga em TL1

 TCON (88h)
---T1---|---T0----|---T1----|---T0----

TF1 TR1TF0 TR0 IE1 IT1 IE0 IT0


TF = overflow
TR = liga /desliga
IE = habilitao de interrupo

Timer 1: sem interrupo: 0100 xxxx


Comunicao Serial - 8051
Programando o Canal Serial
Modo Serial
 SCON (98h)
 7------------------------------------0

 SM0 SM1 SM2 REN TB8 RB8 TI RI


0 1 0 1
modo enable receive interrupt flags
serial reception transmite interrupt flags
(devem ser limpos por software)

 SM0 e SM1 definem o modo


0 0 modo 0 = 8 bit Shift Register = Oscillator / 12
0 1 modo 1 = 8 bit UART = Baud Rate set by Timer 1
1 0 modo 2 = 9 bit UART = Oscillator / 32
1 1 modo 3 = 9 bit UART = Set by Timer 1

 SM2 = flag para "Multiprocessor comunication". Caso esteja setada, RI somete ser
setado caso o nono bit recebido seja 1. Nos usos mais comuns, SM2 = 0.

 REN = deve estar setado para que a recepo seja habilitada.


Comunicao Serial - 8051
Programando o Canal Serial
Modo Serial - continuao
 SCON (98h)
 7------------------------------------0

 SM0 SM1 SM2 REN TB8 RB8 TI RI


0 1 0 1
modo enable receive interrupt flags
serial reception transmite interrupt flags
(devem ser limpos por software)

 TB8 usado nos modos 2 e 3. O nono bit a ser transmitido o nele contido.
 RB8: idem a TB8 para recepo. O nono bit recebido ser nele armazenado.
 TI: Transmit Interrupt
Quando TI est setado, o programa pode assumir que a porta serial est
pronta para transmitir o prximo byte.
 RI: Receive Interrupt
Sempre que o 8051 receber um byte completo, RI ser setado, informando
ao software que o byte precisa ser lido, antes que seja recebido um novo
valor.
Comunicao Serial - 8051
Programando o Canal Serial
Interrupes
 IE (A8h)
7------------------------------------0

EA ES ET1 EX1 ET0 EX0

enable todas enable serial interrupt

Por que usar interrupes?


Qual a alternativa? Um esquema do tipo: wait for flag, onde o
programa fica em loop perguntando ao dispositivo: "j esta pronto?",
ou, no caso da serial: "- j recebeu?".
No caso do wait for flag, o tempo de processamento gasto no pooling
dos dispositivos considervel: poderia ser usado no caso de
programas pequenos e simples.
As interrupes so uma maneira mais simples e limpa de fazer o
mesmo servio...
Comunicao Serial - 8051
Programando o Canal Serial
Lendo e enviando dados:
Os dados devem ser lidos ou escritos em
SBUF (99h), por exemplo, se quisermos
escrever o caracter "A" na porta serial, isso
pode ser feito como a seguir:
MOV SBUF,#'A' ou MOV SBUF, #41H
Comunicao Serial - 8051
Programando o Canal Serial
Exemplo de configurao
.

. ; inicializacoes
.
MOV PCON, #00000000 ; SMOD recebe 0
MOV TMOD, #00100000 ; Timer 1 no modo 2
MOV TCON, #01000000 ; Ativa Timer 1
MOV TH1, #0FDH ; configura para 9600bps
MOV SCON, #01110010 ; canal serial no modo 1
MOV IE, #00000000 ; desabilita interrupes
Comunicao Serial - 8051
Programando o Canal Serial
Envio de caracteres - rotina CO (character
output)
CO: JNB TI, $ ; l estado TI da serial
CLR TI ; Se TI OK, limpa TI
MOV SBUF, B ; escreve dado
JNB TI, $ ; espera sua transmissao
RET

Recebimento de caracteres - CI (character


input)
CI: JNB RI, $ ; l estado RI da serial
CLR RI ; Se RI OK dado est presente,
; limpa RI
MOV B, SBUF ; l dado
RET
Comunicao Serial - 8051
Programando o Canal Serial
Exemplo de rotina para imprimir uma mensagem
(da ROM para a serial)

PRINT: MOV A, #00h


MOVC A, @A+DPTR
JZ PFIM
MOV B,A
ACALL CO
INC DPTR
SJMP PRINT
PFIM: RET