NOTAS DE AULA
06
MICROCONTROLADOR 8051
VOL. 04
9 COMUNICAÇÃO SERIAL
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 89
O Microcontrolador 8051
§ 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.
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.
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 91
O Microcontrolador 8051
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.
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 92
O Microcontrolador 8051
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
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 93
O Microcontrolador 8051
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.
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 94
O Microcontrolador 8051
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 95
O Microcontrolador 8051
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
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:
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:
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 97
O Microcontrolador 8051
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.
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).
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
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
Notas de Aula do Prof. Alexandre Balbinot – ABALBINOT@UOL.COM.BR 99
O Microcontrolador 8051
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