Microcontroladores 8051 com linguagem BASIC Guia Prático para Iniciantes 1ª Edição Marcio Andrade Silva 2012 Sobre o método O método adotado nesta publicação foi pensado em extrair o máximo possível sem a necessidade de absorver informações muito complexas. Por isso ele pode atender desde engenheiros, técnicos ou hobbysta que queiram ingressar no mundo dos microcontroladores com aprendizado voltado à experimentação. Não falaremos sobre registradores, endereçamentos de memória, Bits endereçáveis ou qualquer outro aspecto de modo que complique o aprendizado. O foco será experimentar e analisar o que foi feito. Naturalmente, os detalhes omitidos são de grande importância, mas a ideia deste livro é permitir o ingresso no mundo dos microcontroladores de modo rápido e fácil, e tratar destes assuntos seria na verdade um grande complicador. Aqui o leitor aprenderá a criar um programa, compilar, gravar e testar em seus dispositivos de modo realmente simples, mas altamente funcional. Ao fim da leitura, e quando já estiver apto a programar e desenvolver seus próprios dispositivos, o leitor pode se deparar com necessidades de conhecimentos mais profundos sobre cada elemento do microcontrolador ou seu compilador. Temas estes que fogem do escopo desta publicação, que é na verdade um Guia Prático. NB: Vários conteúdos de suporte a este livro estarão permanentemente disponíveis em http://www.todavia.com.br/destro 8051 para Iniciantes, por Marcio Andrade Silva [4] 8051 para Iniciantes, por Marcio Andrade Silva Índice Primeiros passos.......................................................................11 Como a coisa funciona?.................................................................11 Material necessário.........................................................................12 Pinagem.........................................................................................17 Alimentação...................................................................................17 Reset..............................................................................................18 Clock..............................................................................................21 EA..................................................................................................22 ALE................................................................................................22 PSEN..............................................................................................23 Porta paralela P0............................................................................23 Porta paralela P1............................................................................23 Porta paralela P2............................................................................24 Porta paralela P3............................................................................24 Memória de dados (RAM).............................................................25 Memória de programa (Flash)........................................................25 Memória de armazenamento (EEPROM).......................................26 Montagem Padrão..........................................................................26 O BASCOM-8051....................................................................28 Como obter uma cópia...................................................................28 Interface do BASCOM...................................................................29 Área de programação (editor).........................................................32 Simulador.......................................................................................32 Compilando um programa..............................................................32 O Software de gravação.................................................................33 A Placa de gravação.......................................................................35 O cabo de gravação........................................................................44 Gravando um programa..................................................................45 Erros durante a gravação. Como resolver.......................................45 Princípios da linguagem.........................................................47 [5] 8051 para Iniciantes, por Marcio Andrade Silva Sintaxe...........................................................................................48 Sub Rotinas....................................................................................49 Como criar uma sub rotina.............................................................51 Marcadores ou Labels....................................................................53 Variáveis, Strings e Arrays.....................................................55 Variáveis Numéricas.......................................................................56 Strings............................................................................................57 Constantes......................................................................................57 Arrays.............................................................................................58 Dimensionando as variáveis...........................................................60 Operadores..............................................................................62 Operadores aritméticos...................................................................62 Operadores relacionais...................................................................63 Operadores Lógicos.......................................................................64 Condicionais e Controle.........................................................65 If-then.............................................................................................65 Select Case.....................................................................................69 Ciclos ou Laços..............................................................................70 Do-Loop.........................................................................................71 For-Next.........................................................................................72 While-Wend...................................................................................75 Prática 1 – Led pisca-pisca.....................................................77 Prática 2 - Teclas......................................................................84 Prática 3 – Sequencial.............................................................96 Prática 4 – Relógio com display LCD..................................109 Prática 5 – Display 7 segmentos...........................................125 [6] 8051 para Iniciantes, por Marcio Andrade Silva Prática 6 – Comunicação Serial...........................................137 Prática 7 – Comunicação USB..............................................146 Prática 8 - Interrupções........................................................150 Prática 9 – Memória EEPROM...........................................157 Prática 10 – Teclado Matricial..............................................167 Prática 11 – Voltímetro Digital.............................................181 Apêndice: Comandos e Funções...........................................189 Apêndice: Diretivas de Compilação.....................................219 Apêndice: Soluções................................................................221 Apêndice: Mensagens de erro/Bascom................................228 E agora? Como prosseguir?..................................................233 Referências Bibliográficas....................................................235 [7] 8051 para Iniciantes, por Marcio Andrade Silva [8] 8051 para Iniciantes, por Marcio Andrade Silva A Deus, e à cada pessoa da minha família. Aos que estão e também aos que se foram. Há muito de cada um deles em tudo que sou hoje . [9] 8051 para Iniciantes, por Marcio Andrade Silva [ 10 ] 8051 para Iniciantes, por Marcio Andrade Silva Primeiros passos Como a coisa funciona? Um microcontrolador possui internamente um programa produzido por você, e este programa é que vai determinar o que o microcontrolador fará. Imagine que você quer irrigar seu jardim automaticamente. Você distribui sensores de umidade pelo solo, um sensor de iluminação voltado para céu, válvulas elétricas para abertura e fechamento da água e liga tudo isso no microcontrolador. Em seguida, você cria um programa que manda o microcontrolador fazer o seguinte: Aguardar os sinais do sensor de umidade, e se o solo estiver seco abrir a válvula. Mas se o céu estiver escuro (noite) manter a válvula fechada. Depois de pronto, você compila o programa (torna ele apropriado para ser executado pelo microcontrolador) e grava ele no interior do chip. Seu irrigador está pronto para ser colocado em funcionamento. Sempre que formos produzir algo microcontrolado, devemos seguir este roteiro. Escreva seu programa . Salve seu programa. Compile seu programa. Grave seu programa no microcontrolador. Execute-o no dispositivo. Tudo isso será explicado mais adiante e fique certo de que é muito simples. [ 11 ] 8051 para Iniciantes, por Marcio Andrade Silva Material necessário Componentes Cada tema ou prática inclui a lista de materiais necessários para o experimento, no entanto você vai notar que alguns itens se repetem em todas as experiências. A base de todos os trabalhos pode ser uma Matriz de Contatos (protoboard). Tenha em mãos alguns Leds, chaves tácteis, resistores de valores usuais como 470Ω e 1KΩ, transistores BC558 (PNP) e BC548 (NPN), 1N4148 (diodos de uso geral). Algumas experiências incluem componentes poucos comuns nos laboratórios domésticos, mas que são fartos e baratos no comércio especializado. Dica: Dê uma folheada nas listas de cada capítulo e antecipe a aquisição destes componentes. Assim você executa suas experiencias mais rapidamente. Computador Você vai precisar também de um computador com sistema operacional Windows e que possua uma porta serial no padrão DB-9. Atualmente são raros os laptops que possuem esta porta. Se este é seu caso, será preciso adquirir um cabo adaptador USB-Serial. Seu computador pode ter as versões do Windows 98SE, XP, Vista, 7 ou 8. Softwares Você precisará de 2 softwares que deverão ser instalados em seu computador. BASCOM-8051 GRAVA ATMEL. [ 12 ] 8051 para Iniciantes, por Marcio Andrade Silva Ambos podem ser obtidos gratuitamente e explicamos em detalhes nas páginas seguintes. Placa de gravação. Esta placa será construída por você e será com ela que gravaremos nossos programas no microcontrolador. É uma placa simples de ser produzida e há explicações detalhadas sobre como construil-a em um capitulo mais adiante. Há ainda material adicional no website www.todavia.com.br/destro [ 13 ] 8051 para Iniciantes, por Marcio Andrade Silva O 8051 Vamos primeiro explicar como operar com o 8051 e depois detalhar cada item dele, ok? Essencialmente, o 8051 é composto por 4 portas, de 8 bits cada. Essas portas na verdade são um conjunto de 8 pinos (terminais), e cada um destes conjuntos se chama Porta Paralela. São estes pinos (ou terminais) que usamos para enviar ou receber sinais. Podemos ligar um botão em um pino, e um relé em outro. E quando pressionarmos o botão, atracar o relé. Ou seja, os pinos podem ser usados para entrada (o sinal que vem do botão) ou saída (o sinal que aciona o relé). Podemos usar estes pinos isoladamente, como no exemplo acima, ou em conjunto. Por exemplo: Ligamos nos 8 pinos de uma porta, os 8 pinos de uma conversor analógico/digital, que transmite números binários. Assim podemos ler na porta qualquer valor entre 00000000 (0) ou 11111111 (255). Podemos usar todos os pinos individualmente como entrada ou saída, e podemos usar os conjuntos de pinos – as portas – do mesmo modo. Estas 4 portas tem nomes e características próprias. Elas se chamam P0, P1, P2 e P3. Cada um dos 8 pinos destas portas recebe um número específico. Por exemplo: P1.4 ; P3.0; P2.7, etc. Você deve saber que os microcontroladores trabalham com eletrônica digital. Ou seja, quando falamos em sinais, estamos nos referindo aos níveis 0 e 1, que são na verdade 0V e 5V (esta é a tensão de trabalho do 8051). Estes níveis são tratados como: Nome Outros nomes Valor Nível 1 1 – H – High - Alto - Positivo 5 Volts Nível 0 0 – L – Load - Baixo - Negativo 0 Volts [ 14 ] 8051 para Iniciantes, por Marcio Andrade Silva Por que o 8051? Existe no mercado uma infinidade de tipos e modelos de microcontroladores e discutir qual deles é o melhor é um imenso desperdício de tempo. Cada um possui suas características, arquitetura, velocidade e são destinados para os mais diversos fins. Nossa escolha é o 8051 por diversos motivos, e aqui estão alguns deles: É a arquitetura usada como base acadêmica nos países orientais como China, Índia, etc. Altamente robusto e seguro. O mesmo chip realiza as mais diversas funções. Facilmente encontrado no comércio especializado no Brasil. Desenvolvido originariamente por uma gigante do setor: a Intel. Atualmente há diversos fabricantes que oferecem no mercado seus microcontroladores da família 8051, e nossos estudos são baseados nos que são fabricados pela americana ATMEL, que desde 1984 fabrica dispositivos desta ordem. A Família AT89S Trabalharemos aqui com os modelos da ATMEL mais comuns no mercado brasileiro. Os da família AT89S. Os modelos disponíveis são: AT89S51 AT89S52 AT89S8253 Eles tem o aspecto da imagem ao lado, com encapsulamento DIP-40, e diferem entre si apenas em suas capacidades internas, mas mantendo sempre os atributos que discutimos a partir de agora. Há também as versões SMD da famila AT89S, mas em nossos estudos falaremos apenas da versão DIP, que vemos acima. Baixe os datasheets de cada um deles em www.atmel.com [ 15 ]