Comunicação Serial com Intel 8051

Olá, caro leitor! Este artigo é continuação da série Intel 8051 e tem como principal objetivo caracterizar a interface serial com Intel 8051, principalmente a configuração assíncrona.

 

 

Comunicação Serial Assíncrona

 

A comunicação serial assíncrona é bem simples e tem como função enviar e receber bytes de informação, transferindo um bit de cada vez. As características do protocolo serial, ilustrado na Figura 1, são:

  • Taxa de transmissão (baud rate): Indica o número de bits transmitidos por segundo;
  • bits de dados (data bits): Tamanho da informação que é transferida;
  • bits de parada (stop bits): Utilizados para sinalizar o fim da transferência;
  • Paridade: Uma forma bem simples de verificação de erros na transferência de dados.

 

Protocolo serial
Figura 1: Protocolo Serial [1].

 

 

Registradores

 

Conforme a Figura 2, a interface serial é configurada pelo registrador SCON. Esse registrador pode ser endereçado bit a bit e está localizado no endereço 98H.

 

Registrador SCON
Figura 2: Registrador SCON [1].

 

  • SM0~SM2: Modo de operação do canal serial;
  • REN: Habilita recepção do canal serial;
  • TB8: Determina o valor do 9º bit que será transmitido nos modos 2 e 3;
  • RB8: Determina o valor do 9º bit recebido nos modos 2 e 3;
  • TI - Transmit Interrupt Flag – Seu valor é determinado pelo hardware:

–1: Após a transmissão do 8º bit (modo 0) ou no início da transmissão do stop bit (demais modos);

–Deve ser zerado por software;

  • RI - Transmit Interrupt Flag – Seu valor é determinado pelo hardware:

–1: Após a recepção do 8º bit (modo 0) ou no meio da recepção do stop bit (demais modos);

–Deve ser zerado por software.

 

Além disso, os dados são transmitidos/recebidos a partir do registrador SBUF. Esse registrador está localizado no endereço 99H:

  • É composto por dois registradores distintos: transmissão e recepção;
  • Qualquer operação com destino a esse registrador inicia a transmissão de dados.

 

 

Configuração da Interface Serial

 

As configurações da interface serial, ilustrada na Figura 3, devem ser realizadas para atender aos requisitos especificados anteriormente. Essas configurações são realizadas no registrador SCON, responsável por determinar o modo de operação do circuito que pode ser 0, 1, 2 ou 3.

 

  • Modo 0
  • Taxa fixa: Frequência de clock dividido por 12.
  • Frame de 8 bits de dados.
  • Comunicação Síncrona.
  • Modo 1
  • Taxa variável.
  • Comunicação Assíncrona.
  • Frame de 8 bits de dados.
  • Modo 2
  • Taxa fixa: Frequência de clock dividido por 12.
  • Comunicação Assíncrona.
  • Frame de 9 bits de dados.
  • Modo 3
  • Taxa variável.
  • Comunicação Assíncrona.
  • Frame de 9 bits de dados.

 

Diagrama da interface serial.
Figura 3: Diagrama da interface serial.

 

As operações realizadas com o canal serial envolvem a manipulação do registrador SBUF e das flags RI e TI do registrador SCON. Basicamente, qualquer operação de escrita no registrador SBUF faz com que a transmissão de dados seja iniciada, já a leitura desse registrador retorna o último valor recebido. Nessas operações, as flags RI e TI devem ser monitoradas. De modo geral:

  • Nos modos 1, 2 e 3, a flag TI é ativada no início da transmissão do stop bit. Já no modo 0, é ativada após a transmissão do 8º bit.
  • Nos modos 1, 2 e 3, a flag RI é ativada no meio da recepçãp do stop bit. Já no modo 0, é ativada após a recepção do 8º bit.

 

Os pinos utilizados para transmissão e recepção são P3.1 e P3.0, respectivamente. Cabe ressaltar que no modo 0 a comunicação é síncrona, portanto o pino P3.1 é utilizado como clock e os dados são transmitidos e recebidos pelo pinos P3.0.

 

 

Frequência de Transmissão Variável

 

Nos casos em que a taxa de baud rate é variável o temporizador 1 é utilizado para gerar a frequência desejada. Como ilustrado na figura, o clock do módulo Timer1 é dividido por 12 e depois por 32. Essa frequência é utilizada pelo Timer1 que está configurado no modo recarga automática. Assim, o número de pulsos contados representa o fator de divisão N dessa frequência.

 

baud rate=(K x Fclock)/(32 x 12 x [256 -TH1])

TH1=256 - N, em que N = (K x Fclock)/(384 x baudrate)

 

O valor de K é determinado pelo bit SMOD (double baud rate bit) do registrador PCOM. De modo geral:

  • K = 1, se SMOD é 0.
  • K = 2, se SMOD é 1.

 

O exemplo abaixo mostra a recepção e transmissão de um byte. A taxa de comunicação utilizada é de 9600 bps. O valor de recarga necessário para gerar essa frequência é 253 (FDH), pois considerou-se a frequência de clock igual a 11,0592 MHz e K = 1. Logo, o valor N é igual a 28800/9600 = 3.

 

 

 

Interrupção do Canal Serial

 

O canal serial pode gerar interrupções de transmissão e recepção de dados. Porém, o mesmo vetor de interrupção é utilizado para tratar os dois eventos, portanto é dever do programador monitorar a flag que indica qual foi a fonte de interrupção gerada. Além disso, essas flags de interrupção devem ser zeradas por software.

 

O programa abaixo apresenta a mesma operação do exemplo anterior.

 

 

 

Referências

 

Outros artigos da série

<< Temporizador/Contador no Intel 8051
Licença Creative Commons
Comunicação Serial com Intel 8051 por Fernando Deluno Garcia. Esta obra está licenciado com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Fascinado por computação, especialmente na interface entre hardware e software, me engajei na área de sistemas embarcados. Atuo com desenvolvimento de sistemas embarcados e sou docente da Faculdade de Engenharia de Sorocaba.

Deixe um comentário

1 Comentário em "Comunicação Serial com Intel 8051"

Notificar
avatar
Ordenar por:   recentes | antigos | mais votados
Souza
Visitante

Muito ótimo.
Amanhã vou dar mais uma lida com mais tempo.

wpDiscuz