Anda di halaman 1dari 13

O Microcontrolador 8051

NOTAS DE AULA
06
MICROCONTROLADOR 8051
VOL. 04

9 COMUNICAÇÃO SERIAL

É o periférico que converte informações em paralelo (geralmente oriundas de computadores)


para informações seriais (geralmente oriundas de modems, linhas telefônicas ou para placa
serial de outro micro).

§ Comunicação com um periférico serial:


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 89
O Microcontrolador 8051

§ Comunicação micro a micro:

§ Padrão RS 232
Foi definido em 1969 pela Eletronic Industries Association (EIA). Especifica as
características elétricas dos circuitos e fornece nome e números às linhas necessárias à
conexão entre equipamentos. Os microcomputadores utilizam somente 9 pinos conectados em
lugar dos 25 pinos necessários para o circuito completo RS232. Além disso, o padrão define:

1. Para que periféricos possam “conversar” através da me sma linha, eles são divididos em
02 tipos: o tipo terminal: que usa o pino 2 para mandar dados e o tipo modem que usa o
pino 2 para receber dados;
2. periféricos terminais devem ser acoplados de um conector macho e periféricos modem de
um conector fêmea.

§ Padrão conector DB-25


1. Periférico Terminal (IBM-PC) - DTE
TxD à Dados Transmitidos SG à Sinal Ground

RxD à Dados Recebidos DTR à Pronto Terminal de Dados

RQS à Pedido para Enviar CD à Detecção de Portadora

CTS à Limpar para Enviar RI à Indicador de Chamada

DSR à Está pronto para conjunto de dados

Pino CD: indica quando o modem recebe um sinal de portadora de outro modem que está
localizado remotamente;


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 90
O Microcontrolador 8051

Pino RI: indica quando o terminal recebe um sinal de chamada pela linha telefônica
(indicação de chamada);

Pinos 4 e 5: são utilizados no reconhecimento entre o tipo terminal e tipo modem. Sempre que
o terminal deseja transmitir dados, o pino 4 vai para 0. Em seguida omodem envia um 0
através do pino 5 (permissão para o envio), assim que estiver pronto para transmissão.

2. Periférico Modem (DCE)


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 91
O Microcontrolador 8051

§ Padrão conector DB-9

Linhas Funções
2e3 TxD à Transmite Dados
RxD à Recebe Dados
4e5 RQS à Handshaking
CTS à Handshaking
6 e 20 DSR à Handshaking
DTR à Handshaking
7 SG à Sinal Ground
8 CD à Presença de Portadora
22 RI à Telefone Chamando

Handshaking: método pelo qual periféricos que se comunicam podem controlar o fluxo de
transmissão de dados entre eles.

§ Comunicação entre transmissor e receptor


Em sistemas em que somente um periférico transmite e o outro somente recebe, a
comunicação ocorre apenas entre dois sinais em cada ponto:
- TxD e SG (2 e 7) no transmissor;
- RxD e SG no receptor.


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 92
O Microcontrolador 8051

§ Comunicação nas duas direções


Neste caso, cada um dos periféricos transmite e recebe, sendo portanto, necessário o número
mínimo de 3 linhas necessárias em cada periférico: TxD, RxD e SG (pode-se adicionar os
pinos DSR e DTR para controlar o fluxo de transmissão de dados à handshaking).

§ Comunicação micro a micro


Conector DB25 Conector DB25 Conector DB9
Pino 2 ligar no Pino 3 Pino 2
3 2 3
4 8 1
5 8 1
6 20 4
7 7 5
8 4 7
8 5 8
20 6 6

Ou
Conector DB9 Conector DB9
Pino 3 ligar no Pino 2
2 3
7 1
8 1
6 4
5 5
1 7
1 8
4 6

§ UART (Universal Asynchronous Receiver Transmitter)


Circuito Integrado considerado o “coração da porta serial”. Seu trabalho é transformar cada
byte de informação paralela numa corrente de bits seriais como também executar a operação
inversa (C.I. 8250 da National).


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 93
O Microcontrolador 8051

Configura-se a UART segundo a necessidade de nossa comunicação:


- taxa de transmissão: 300bps, 1200 bps, 2400 bps até 115200bps;
- número de bits de dados: formato texto = 7 bits e no formato binário = 8 bits;
- paridade: se transmitir 7 bits de dados, o oitavo bit pode ser usado para indicar a paridade;
- start bit (1 bit) e stop bit (1 ou 2 bits): quando a serial recebe um caractere, deve ser capaz
de identificar quando o envio do caractere começa e quando termina. Quando não há
caracteres sendo enviados, o estado dos bits da porta será sempre 1 (inativo). Para
sinalizar a chagada de um caractere, enviamos um bit de início com o valor 0. Em seguida,
são enviados os 7 ou 8 bits de dados, o bit de paridade de 1 ou 2 bits de finalização com o
valor 1.

9.1 Conexão do 8051 a RS 232

Primeira ponto a considerar que a RS232 não é padrão TTL, portanto, necessita de um driver,
tal como, o MAX232 para converter os níveis de tensão da RS232 para níveis TTL e vice-
versa.

Pinos RxD e TxD no 8051:


O 8051 possui 2 pinos que são utilizados especialmente para transferência e recepção de
dados serialmente pelo 8051 (TxD e RxD à P3.1 e P3.0). Não podemos esquecer que esses
pinos são compatíveis com níveis TTL.


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 94
O Microcontrolador 8051

O integrado MAX232 (conversor de tensão)

Aconselho pesquisarem na página da Maxim (www.maxim-ic.com). Serve para converter os


níveis de tensão da RS232 (1 à -3 a –25V, 0 à +3 a +25V) para TTL e vice-versa. A sua
alimentação é +5V (é interessante, pois é a mesma do 8051). A figura abaixo da Maxim:

MAX232 e sua conexão com o 8051 (configuração Null Modem: DTE-DTE).


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 95
O Microcontrolador 8051

O MAX232 necessita de 2 capacitores na faixa de 1 a 22 µF (normalmente se usa 22µF). A


Maxim possui também o conversor MAX233 que não necessita de capacitores externos.

9.2 Programando o 8051 para comunicação serial

Como já descrito no material do 80x86 as taxas típicas (baud rates) para transmissão serial
são: 110, 150, 300, 600, 1200, 2400, 4800, 9600 e 19200 (para PC’s 486 e Pentium).

Exemplo_1: Com XTAL = 11,0592MHz, encontrar o valor necessário de TH1 para ter as
seguintes razões baud: (a) 9600, (b) 2400 e (c) 1200.

Solução:
Com XTAL = 11,0592MHz, temos: o ciclo de máquina do 8051 = 11,0592MHz ÷ 12 =
921,6KHz.
921,6KHz ÷ 32 = 28800Hz é a freqüência fornecida pela UART para o timer 1 setar a razão
baud.
(a) 28800 ÷ 3 = 9600 à onde –3 = FDH é carregado em TH1
(b) 28000 ÷ 12 = 2400 à onde –12 = F4H é carregado em TH1
(c) 28800 ÷ 24 = 1200 à onde –24 = E8H é carregado em TH1

Valores típicos para os registros TH1 (XTAL = 11,0592MHz).


Razão baud TH1 (decimal) TH1 (hexadecimal)
9600 -3 FD
4800 -6 FA
2400 -12 F4
1200 -24 E8
Essas razões são programadas com a ajuda do timer 1.


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 96
O Microcontrolador 8051

Registro SBUF : é um registro de 8 bits usado somente para comunicação serial do 8051. Para
um byte ser transferido usando a linha TxD é necessário coloca-lo no registro SBUF.
Similarmente, SBUF pode armazenar o byte de dado quando é recebido pela linha RxD do
8051. Exemplos:

MOV SBUF, #’D’ ; carrega SBUF = 44H (ASCII para D)


MOV SBUF, A ; copia o acumulador para SBUF
MOV A, SBUF ; copia SBUF para o A

Registro SCON (Serial Control) : é um registro de 8 bits usado para programar o start bit,
stop bit e os bits de dados do pacote (frame). Os vários bits do SCON (bit endereçável) são:

SMO e SM1: determinam o pacote de dados especificados (o frame de dados), ou seja,


determinam o número de bits por caractere e os bits de start e stop.

SM0 SM1 Modos


0 0 0
0 1 1 – 8 bits de dados, 1 stop bit e 1 start bit
1 0 2
1 1 3
O mais usado é o modo 1 e será dado ênfase apenas ao modo 1(ver manual do 8051).


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 97
O Microcontrolador 8051

SM2: permite habilitar a capacidade multiprocessamento do 8051 (para aplicações com


apenas 1 microcontrolador à SM2 = 0).

REN (Receive Enable): quando o REN = 1 (nível alto) permite que o 8051 receba dados do
pino RxD. Se desejamos que o 8051 transfira e receba dados, REN é setado (REN = 1).
Fazendo REN = 0 o receptor está desabilitado à instruções usadas: SETB SCON.4 e CLR
SCON.4.

TB8 (Transfere 8 bits): não é utilizado no modo 1, ou seja, TB8=0.

RB8 (receive bit 8): no modo serial 1, este bit copia o stop bit quando um dado de 8 bits é
recebido (normalmente não é utilizado no modo 1, ou seja, TB8=0).

TI (Transmit Interrupt): extremamente importante, pois quando o 8051 termina a transferência


do caractere de 8 bits, o TI indica que está pronto para transferir outro byte (é alterado no bit
de início (start) e no de fim (stop)).

RI (Receive Interrupt): extremamente importante, pois quando o 8051 recebe dados


serialmente via RxD utiliza o RI para indicar que um byte foi recebido.

Programando o 8051 para transferir dados serialmente

Utilize as seguintes dicas para realizar a transferência de dados no 8051 via serial:
1. o registro TMOD é carregado com o valor 20H, indicando o uso do timer 1 no modo 2
(8 bits auto-carregável) para setar a taxa de transmissão (razão baud);
2. o TH1 é carregado com um dos valores da Tabela Valores típicos para os registros
TH1 (XTAL = 11,0592MHz) para setar a taxa de transmissão (página 96);
3. o registro SCON é carregado com o valor 50H, indicando o modo serial 1, onde o
pacote é constituído por 8 bits, 1 start bit e 1 stop bit;
4. TR1 é setado (TR1 = 1) para iniciar o timer 1;


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 98
O Microcontrolador 8051

5. TI é limpo (resetado) à instrução CLR TI;


6. o byte (caractere) para ser transferido serialmente deve ser escrito no registro SBUF;
7. o flag TI é monitorado com o uso da instrução JNB TI, rótulo para verificar se o
caractere foi transferido completamente;
8. para transferência do próximo caractere vá para o passo 5.

Exemplo_1: Escrever um programa para transferir a letra “A” serialmente a uma taxa de
4800 baud, continuamente.

Solução:
MOV TMOD, #20H ; timer 1, modo 2 (auto-carregável)
MOV TH1, #-6 ; taxa 4800 baud
MOV SCON, #50H ; 8bits, 1 stop bit, REN habilitado
SETB TR1 ; início do timer1
VOLTA: MOV SBUF, #”A” ; caractere a ser transferido
AQUI: JNB TI, AQUI ; monitoramento – espera até terminar
CLR TI
SJMP VOLTA

Observe a importância do TI:


1. o caractere (byte) para ser transferido é escrito no registro SBUF;
2. transfere o start bit;
3. o caractere é transferido 1 bi por vez;
4. o stop bit é transferido. Durante a transferência do stop bit o 8051 torna TI = 1,
indicando que o último caractere foi transmitido e está pronto para transferir o
próximo byte (caractere);
5. monitorando o TI evitamos de reescrever no registro SBUF, em outras palavras,
evitamos perdas de dados;
6. após o SBUF é carregado com o novo byte e o TI precisa ser forçado para baixo (CLR
TI) para novo byte ser transmitido.


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 99
O Microcontrolador 8051

Programando o 8051 para receber dados serialmente

Utilize as seguintes dicas para realizar a recepção de dados no 8051 via serial:
1. o registro TMOD é carregado com o valor 20H, indicando o uso do timer 1 no modo 2
(8 bits auto-carregável) para setar a taxa de transmissão (razão baud);
2. o TH1 é carregado com um dos valores da Tabela Valores típicos para os registros
TH1 (XTAL = 11,0592MHz) para setar a taxa de transmissão (página 96);
3. o registro SCON é carregado com o valor 50H, indicando o modo serial 1, onde o
pacote é constituído por 8 bits, 1 start bit e 1 stop bit;
4. TR1 é setado (TR1 = 1) para iniciar o timer 1;
5. RI é limpo (resetado) à instrução CLR RI;
6. o flag RI é monitorado com o uso da instrução JNB RI, rótulo para verificar se o
caractere foi recebido completamente;
7. quando RI = 1, SBUF possui o byte;
8. para recepção do próximo caractere vá para o passo 5.

Exemplo_1: programar o 8051 para receber bytes serialmente, e coloca-los em P1. Setar a
taxa de transmissão para 4800.

Solução:
MOV TMOD, #20H
MOV TH1, #-6
MOV SCON, #50H
SETB TR1
AQUI: JNB RI, AQUI
MOV A, SBUF
MOV P1, A
CLR RI
SJMP AQUI


 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 100
O Microcontrolador 8051

Exemplo_2: assumir que a porta serial do 8051 est á conectada a porta COM (serial) do PC
(ver programa do 80x86, pois poderia utiliza -lo para conversação entre PC-8051). Considere
que o PC está rodando um programa para enviar e receber dados serialmente. P1 e P2 do 8051
estão conectadas a LED’s e chaves, respectivamente. Escrever um programa para o 8051 que
realize (a) enviar ao PC a mensagem “Grande Tricolor”, (b) receber qualquer dado enviado
pelo PC e acionar os LEDS em função dos dados e (c) pegar o dado das chaves conectadas a
P2 e enviar este dado para o PC serialmente. O programa deve realizar o item (a) uma vez
apenas, mas os itens (b) e (c) continuamente (usar a taxa de 4800baud).

Próximos assuntos:
Interrupções
Interfaceamento de dispositivos externos com o 8051
Memória externa e o 8051

 Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 101

Anda mungkin juga menyukai