TUTORIAL - Serial Link Serial 8051.pdf · Neste tutorial explicarei como montar um circuito para...

Preview:

Citation preview

TUTORIAL Comunicação Serial no 8051

Índice

Índice.................................................................................................................................................... 2Introdução.............................................................................................................................................3Material Necessário.............................................................................................................................. 4Montagem.............................................................................................................................................6Montagem do Cabo Serial.................................................................................................................... 7Montagem do Hardware....................................................................................................................... 8Montagem do Software...................................................................................................................... 15Testando o Funcionamento.................................................................................................................16Conclusão........................................................................................................................................... 22

Introdução

Neste tutorial explicarei como montar um circuito para comunicação serial entre o computador e o microcontrolador 8051.

O exemplo mostrado nesse tutorial é bem simples e pretende apenas ensinar o funcionamento básico da comunicação serial.

Então para exemplificar o funcionamento do projeto vamos criar um programa que retorne um caractere para cada tecla digitada no computador. Caso a tecla digitada seja um 'A' (maiúsculo), o programa retorna o caractere 'K', caso contrário, retorna um ponto de interrogação (?).

Para executar as tarefas desse tutorial, você deve ter conhecimento prévio do procedimento de gravação no 8051.

Material Necessário

Para este tutorial, você precisará dos seguintes componentes:

Tabela de componentes necessários para a montagem do tutorial. Informações retiradas do site http://www.SoldaFria.com.br em 10/05/2010. Os preços podem variar e são de total responsabilidade do site mencionado.

Capacitor Eletrolítico 1uF x 50V

4

4 R$ 0,60

Circuito Integrado MAX232 (ICL232, HIN232) 1 R$2,30

Soquete 16 Pinos Estampado 1 R$0,18

Capa para conector DB9 Bege com kit Curto 1 R$0,63

Conector DB9 Fêmea 180 Graus Solda Fio 1 R$0,84

Conector 5045-4 (KK 4 Vias Macho) 1 R$0,24

Alojamento Para Conector kk Molex 5051-4 1 R$0,33

Cabo Manga 3 Vias Sem Blindagem (metro) 1 R$0,90

Total R$ 6,02

Você pode encontrar todos esses componentes facilmente na Santa Ifigênia, na loja Mult Comercial (http://www.multcomercial.com.br/) , ou ainda no site Solda Fria (http://soldafria.com.br/loja/).

Você também vai precisar do seguinte datasheet:

• MAX232 – Driver/Receiver conversor RS232 para TTL; http://pdf1.alldatasheet.com/datasheet-pdf/view/207382/TI/MAX232N.html

Corte também alguns fios de cobre para grampear a protoboard.

Montagem

Para montar esse circuito você precisará da protoboard configurada com o esquema básico do microcontrolador AT89S52, conforme descrito no tutorial de gravação. Vide figura abaixo.

Além disso, você precisará montar o cabo, conforme o próximo tópico.

Montagem do Cabo Serial

Para montar o cabo necessário para esse projeto, basta seguir as instruções da tabela de pinagem e o resultado final deve parecer com a foto abaixo.

Mapeamento dos Pinos

Pino DB9 Conector

GND 5 1

RXD 2 3

TXD 3 4

DTR 4

DSR 6

RTS 7

CTS 8

Muita atenção na montagem do cabo, pois apenas os pinos 5, 2 e 3 do DB9 são ligados no conector. Os pinos 4 e 6 e os pinos 7 e 8 são ligados entre si, conforme a ilustração na tabela acima.

Esse cabo é chamado de Null-Modem, pois ele “força” o “handshaking” automático, ou seja, o computador entenderá que o dispositivo conectado ao cabo estará sempre disponível.

O pino TXD é o responsável por enviar as informações do computador para o 8051 e o RXD recebe os dados. O pino GND é o terra, responsável por equilibrar a tensão da comunicação.

Montagem do Hardware

A montagem do circuito deste projeto na protoboard é a parte mais fácil desse tutorial, bastando apenas seguir as imagens:

Primeiro ache um bom lugar para colocar o MAX232 na protoboard. Repare no chanfro existente na carcaça do circuito integrado que facilita a localização do pino 1 do componente.

No esquema abaixo você pode conferir a posição e a identificação dos pinos existentes no MAX232. Os que realmente nos interessam são os pinos 15 e 16, onde ligaremos a alimentação, os pinos 1, 2, 3, 4, 5 e 6, onde ligaremos os capacitores de polarização e os pinos 11, 12, 13 e 14, onde ligaremos os fios de comunicação.

Precisamos então ligar a alimentação do MAX232. Para isso basta grampear o terminal positivo no pino 16...

E o terminal negativo no pino 15 do MAX232.

Em seguida, precisamos colocar os capacitores de polarização. O primeiro vai no pino 1 e no pino 3 do MAX232, sendo que o pólo negativo vai no pino 3...

O segundo capacitor vai nos pinos 4 e 5 com o negativo virado para o pino 5; o terceiro capacitor tem seu negativo ligado no pino 6 do MAX232 e o positivo no negativo da rede de alimentação. Isso mesmo, é invertido, assim como o quarto capacitor, que tem o positivo ligado no pino 1 e o negativo, no positivo da rede.

Coloque então o conector de quatro pinos na protoboard. Repare que o pino 2 não é utilizado. Isso é porque o único conector que eu tinha aqui era de 4 pinos, mas você pode usar um de 3 pinos.

A primeira coisa a fazer é grampear o pino 1 do conector no negativo da rede, ou seja, no terra.

Pino 1 GND

Pino 3 RXDPino 4 TX

D

A parte final da montagem do circuito é a mais importante, pois é quando conectamos os fios da comunicação. O primeiro é o que vai do pino 10 do 8051 até o pino 12 do MAX232.

O segundo fio (azul) vai do pino 11 do 8051 para o pino 11 do MAX232, e o fio branco é o que liga o pino 14 do MAX232 para o pino 2 do conector. Se você prestou atenção, deve ter percebido que eu liguei o TR1OUT do MAX232 no RXD do conector que vai ligado no computador. Isso acontece porque o pino 14 é o que envia dados do MAX232 e o pino 2 do conector é o que recebe dados para o computador.

O último fio (marrom) liga o pino 13 do MAX232 no pino 3 do conector. Perceba que ele também é invertido para que a comunicação funcione.

Agora falta ligar o cabo. Uma ponta na porta serial do computador...

A outra ponta do cabo serial deve ser ligada no conector grampeado na protoboard.

Montagem do Software

O software não é complicado, mas alguns detalhes importantes devem ser comentados aqui. Começando pelo include da primeira linha. Ele é necessário para o RIDE51 carregar parâmetros do microcontrolador escolhido. O comando ORG 23H aponta para o endereço de gatilho da serial. Quando alguma informação vinda pela serial completa o buffer do 8051, o processador interrompe o que está fazendo e executa os comandos que estão nesse endereço, como a chamada para a função SERIAL_IRQ.

Os outros comandos são comuns e seguem o fluxo normal do Assembly. Estude as configurações da serial do 8051 e também a lógica de desvios para entender o resto do código. Por último o comando RETI é um retorno especial da interrupção para orientar o procesador a fazer o que estava fazendo antes de ser interrompido pela chegada de informações. No caso do código abaixo é ficar eternamente em loop, nada de mais.

$include(REG51.inc)

ORG 0000H LJMP 0040H

; SERIAL IRQ ORG 0023H LJMP SERIAL_IRQ

INICIO_PROG: ORG 0040H

; HABILITANDO SERIAL MOV IE, #90H MOV SCON, #50H MOV PCON, #00H MOV TMOD, #20H MOV TH1, #0F4H SETB TR1

; FICANDO EM LOOP INFINITO JB P2.0, $

SERIAL_IRQ: ORG 0100H

; SERIAL RECEBENDO MOV A, SBUF CLR RI

; VERIFICANDO INFO RECEBIDA CJNE A, #'A', SERIAL_ERRADO

; VALOR CORRETO MOV A, #'K' MOV SBUF, A JNB TI, $ CLR TI RETI

; VALOR ERRADO SERIAL_ERRADO: MOV A, #3FH MOV SBUF, A JNB TI, $ CLR TI RETI

END

Testando o Funcionamento

Bom, depois de codificar o programa de comunicação do microcontrolador e compilá-lo em um arquivo HEX (para isso utilize o comando Build All do RIDE51), vamos gravar o executável no 8051.

Basta abrir o ISP – Flash Programming e selecionar o arquivo HEX compilado.

Depois é só clicar em “Write” ou “Program”, dependendo da versão do ISP – Flash Programmer.

Espere terminar o procedimento e clique em OK na caixa de diálogo que aparecer. Se algo der errado, verifique o circuito de gravação. Utilize o tutorial de gravação para comparar as conexões e ver se está tudo certo.

Depois do programa gravado no 8051, cabo serial conectado no MAX232 e tudo pronto, falta testar a aplicação. Para isso vamos usar o HyperTerminal da Hilgraeve. Em alguns casos, pode ser necessário instalar esse componente, pois nem todos os Windows trazem esse programa instalado por padrão.

Depois de abrir o HyperTerminal, um assistente de criação de Nova Conexão é aberto e o programa solicita um nome para essa conexão e você pode também selecionar um ícone. Eu utilizei o nome: Tutorial Serial. Você pode escolher um que lhe agrade mais.

Ainda no assistente de criação de nova conexão, precisamos escolher a porta na qual vamos estabelecer a comunicação. No meu caso é a COM1, mas dependendo de qual porta você conectou o cabo, pode ser a COM2. Eu já tive problemas com essa porta, então o melhor é conectar o cabo na COM1 mesmo.

Depois de escolher a porta, falta configurá-la. Como o código exemplo desse tutorial foi escrito para configurar a comunicação do microcontrolador para a velocidade de 2400 bits por segundo, vamos utilizar essa configuração também no computador. Além disso não devemos utilizar nenhum controle de fluxo, já que estamos usando um cabo Null-Modem.

Terminando o assistente o HyperTerminal já nos conecta automaticamente com o 8051. Mas antes vamos verificar algumas configurações. Para isso clique no botão propriedades na barra de ferramentas.

Na aba de Configurações precisamos alterar a emulação para o protocolo ANSI.

Finalmente clicando no botão “Configuração ASCII” da aba “Configurações”, vamos ligar o eco dos caracteres digitados para vermos na tela as teclas que estamos digitando e que estão sendo enviadas para o 8051 via serial.

Se tudo deu certo, basta digitar alguma coisa na tela principal da conexão para que ela seja enviada para o microcontrolador. Se for qualquer diferente de A maiúsculo, o 8051 responde com um ponto de interrogação, mas quando digitamos o A, aparece a letra K de volta. Desssa forma podemos constatar que a comunicação está funcionando e o 8051 está respondendo de acordo com a programação.

Conclusão

Bom, neste tutorial aprendemos como montar, programar e testar uma comunicação serial entre o computador PC e o microcontrolador 8051.

Não pude entrar em detalhes sobre “Baud Rate” que é taxa de transferência da comunicação e as diversas configurações de timers, osciladores e interrupção do microcontrolador, senão esse tutorial seria muito grande.

Agora cabe a você esmiuçar os detalhes dessa tecnologia que de nova não tem nada, mas sem o conhecimento prévio da comunicação serial não é possível partir para a comunicação via USB, pois o princípio é o mesmo, mudando apenas os protocolos e formas de comunicação.

Até a próxima!