Você está na página 1de 12

Programao em BASIC para o PIC

Os microcontroladores da famlia PIC esto cada dia mais presentes nos projetos eletrnicos. Em mdia, cada um de ns tm acesso a nove chips todos os dias. Aprender a trabalhar e programar estes computadores em um s chip se torna praticamente imperativo para o profissional do campo tecnolgico. Aplicaes como robtica, domtica, automao e entretenimento so alguns dos campos de utilizao destes chips.

Existem diversas linguagens nas quais o PIC pode ser programado. Dentro dessas possibilidades abordarei a linguagem BASIC com base no compilador mikroBASIC desenvolvido pela mikroE- lektronika. Este artigo ser baseado no livro Programao em BASIC para o microcontrolador PIC18F1220 (Editora rica 2006) que pode ser observado na figura 1.

Para quem ir acompanhar esta srie ser necessrio baixar o compilador no site do fabricante (www.mikroe.com). A verso disponvel para download chamada de verso DEMO. Nesta verso, o cdigo mximo que o compilador ir gerar de 2 kB e nos projetos apresentados no iremos ultrapassar este limite. O kit de desenvolvimento utilizado para testes a placa PICLAB18F1220 que emprega o microcontrolador PIC18F1220 e pode ser verificado na figura 2. Este kit foi desenvolvido pelaCerne Tecnologia e Treinamento.

O PIC Os microcontroladores da famlia PIC18 apresentam-se com grandes vantagens frente a famlia PIC16. Aspectos como memria de programa e dados so apenas alguns dos vrios itens que fazem a famlia PIC18 ser superior PIC16. Observe atabela 1, onde demonstrado um quadro comparativo entre estas duas famlias.

Note que a famlia PIC18 superior famlia PIC16. Outro detalhe importante que, mesmo sendo melhor, o custo de ambas as famlias est muito prximo. O microcontrolador utilizado neste artigo para demonstrar os aspectos da famlia PIC ser o PIC18F1220, onde a pinagem deste componente pode ser observada na figura 3.

Observe que como nas famlias tradicionais de 18 pinos, este microcontro- lador possui dois PORTs denominados PORTA e PORTB. O PORTA est ligado aos pinos 1 (RA0), 2 (RA1), 3 (RA4), 4 (RA5), 6 (RA2), 7 (RA3), 15 (RA6) e 16 (RA7). J os pinos do PORTB esto ligados aos pinos 8 (RB0), 9 (RB1), 17 (RB2), 18 (RB3), 10 (RB4), 11 (RB5), 12 (RB6) e 13 (RB7). Este microcontrolador funciona com uma tenso de 2 V at 5,5 V. Em todos os exemplos a alimentao ser de 5 V.

Veja algumas caractersticas importantes deste microcontrolador na tabela 2. Este microcontrolador est instalado na placa didtica PICLAB18F1220 e nesta placa poderemos testar praticamente todos os seus recursos.

O mikroBASIC Para criar qualquer programa neste ambiente, necessrio primeiramente criar um projeto. Para isso, aps o download e instalao do mikroBASIC, inicialize o mesmo e v no menu Project -> New Project. Posteriormente a tela apresentada na figura 4 surgir. No campo Project Name informado o nome do

projeto. Neste campo, digite, por exemplo, experimento1. No campo Project Path definimos a pasta onde os arquivos referentes ao projeto ficaro salvos. Escolha, neste caso, a pasta de sua preferncia. O campo description opcional e serve para fazermos alguma descrio referente ao projeto, sobre o que o mesmo faz, por exemplo.

Em device escolhido o microcontrolador utilizado no projeto. Clique neste campo e note quantos microcontroladores o mikroBASIC suporta em sua lista. Como estamos estudando o PIC18F1220, escolha este microcontrolador. Em device flags so ajustados os configurations bits do microcontrolador. No vamos nos preocupar sobre estes agora, pressione o boto default desta janela para que o mesmo seja configurado desta forma. Ja podemos clicar sobre o boto ok e prosseguir com o projeto. Assim que voc pressionar o ok, a tela da figura 5 surgir.

Note que a parte branca que est apresentada onde voc dever criar o seu programa. Um programa em BASIC segue a forma exibida no box 1.

Em definies de entrada e definies de sada so informados quais pinos do microcontrolador so utilizados para funes de I/O (entrada e sada). J em definies de variveis, podemos declarar as variveis que venham a ser usadas pelo programa. A partir do main: comeamos a escrever o programa que ir rodar no microcontrolador. Finalmente, o programa finalizado atravs do end. Aps desenvolver todo o programa da forma apresentada, ser necessrio compilar o seu projeto. Compilar significa traduzir o cdigo que est em BASIC para um cdigo que o microcontrolador consiga entender. Para iniciar a compilao, pressione junto CTRL+ F9, ou v no menu Project -> Build. Neste momento inicia-se a compilao e, caso haja algum erro, o mikroBASIC solicitar o ajuste do mesmo para iniciar uma nova etapa de compilao.

Primeiro exemplo prtico no mikroBASIC Neste ponto j temos subsdios suficientes para desenvolver o primeiro projeto no PIC. Para isso, a placa didtica PICLAB18F1220 dever estar conectada ao gravador GPPIC PRO (desenvolvido pela Cerne Tecnologia), e este dever estar conectado porta paralela do PC. Este primeiro exemplo consistir em ler o estado de um boto e dependendo do seu estado, acionar ou no um LED conectado a uma sada do microcontrolador. O esquema eltrico deste projeto pode ser verificado nafigura 6.

Observe que o microcontrolador alimentado em 5 V atravs dos pinos 5 e 14. O boto est conectado em lgica negativa ao pino RB0. Isto quer dizer que, quando o boto est solto, o nvel presente na entrada RB0 1, e quando o mesmo fica pressionado, este nvel vai a 0. O LED est conectado ao pino RB3 e este j

acionado em lgica positiva. O ressonador conectado aos pinos RA6 e RA7 geram a freqncia para funcionamento interno do microcontrolador. Note que no pino RA5 existe um resistor ligado a VCC. Este resistor chamado de pull up e sua funo garantir o nvel alto na entrada RA5, evitando desta forma que o microcontrolador venha a resetar. Como nos PCs, o PIC tambm a sua entrada de reset que fica no pino RA5. Quando este pino levado ao nvel lgico 0, o microcontrolador resetado, e quando fica em 1, o mesmo opera normalmente. Neste exemplo onde a funo de reset no empregada, este pino foi mantido em nvel alto. O programa que far o efeito desejado est apresentado no box 2.

Agora especificaremos melhor como o programa funciona. A linha program experimento1 informa o nome do projeto definido. Em seguida, temos o label main: onde a partir deste ponto poderemos criar o programa. O PORTB do microcontrolador possui 8 pinos que so chamados de pinos de I/O (entrada e sada). A definio destes pinos, ou seja, se eles sero de entrada e sada, feita no registrador TRISB. O bit 0 do registrador TRISB referente ao RB0, enquanto o bit 1 ao RB1 e assim sucessivamente. Como no RB0 est ligado um boto que para o sistema uma entrada, este pino foi configurado como entrada atravs do comando trisb.0=1. Quando algum destes bits recebe 1, significa que ele est configurado como entrada, e quando recebe 0, como sada. Note que na linha abaixo est definido o trisb.3 como sada, pois ele recebe 0. Definida a direo dos pinos, necessrio testar o PORTB para saber o estado atual deles. Isto feito atravs da declarao if. Observe o trecho if portb.0 = 0 then. A traduo literal ficaria: se o portb.0 est em nvel baixo ento. Ele testa o nvel lgico presente na entrada RB0 e se o boto estiver pressionado, este teste ser verdadeiro e o comando associado ao if ser executado que neste caso para ligar o LED atravs de portb.3=1. Caso o boto no esteja pressionado, o else (seno) ser tratado, deixando neste caso o LED desligado atravs do comando portb.3=0. Finalmente o if encerrado atravs do end if (fim do se). Este bloco fica se repetindo continuamente, pois logo

em seguida observamos o uso do goto main, que faz com que o programa volte para o label main e fique testando o estado do boto e tomando determinada ao, caso o boto esteja pressionado ou no. O programa agora encerrado atravs de end. Aps a digitao deste cdigo no mikroBASIC, compile o mesmo e neste ponto poderemos transferir o programa para a placa didtica. Existem vrios softwares que podem ser usados para este fim. Neste exemplo, o software icprog foi utilizado. Este software pode ser baixado gratuitamente no site do desenvolvedor, que www.ic-prog.com. Aps o download deste software, inicialize o mesmo. Surgir uma janela solicitando que voc escolha o tipo de gravador utilizado. Deixe esta janela conforme apresentado na figura 7.

Caso o seu Windows seja o XP, 2000 ou NT, ser preciso liberar o acesso a porta paralela do seu PC. V no site da Cerne Tecnologia e veja na seo tutoriais o guia Liberando o acesso da porta paralela.

Aps esta configurao, pressione o boto ok. Ser aberta agora a janela normal do Ic-Prog, como apresentado na figura 8.

Neste momento, ser necessrio escolher o microcontrolador utilizado para gravao, neste caso o PIC18F1220. Para isso v em Settings -> Device -> Microchip PIC e procure na lista apresentada o microcontrolador PIC18F1220. Podemos tambm trocar o idioma empregado pelo Ic-Prog para o Portugus. V em Settings -> Options e abra a aba Language. Escolha no combo presente neste aba, o idioma Portuguese e pressione ok.

Agora podemos abrir o arquivo a ser gravado no microcontrolador. Sempre que o mikroBASIC compila um arquivo e no h nenhum erro de compilao, o compilador gera um arquivo com o mesmo nome do projeto, porm com a extenso hex. este arquivo que deve ser gravado no microcontrolador. Para abri-lo, v em Arquivo -> Abrir e veja na pasta onde voc criou o seu projeto o arquivo com a extenso hex. Clique duas vezes sobre o mesmo e pressione a tecla F5. Agora uma janela como a apresentada na figura 9 surgir.

Aps a gravao, teste o seu programa recm-gravado na placa didtica. Pressione o boto que fica ligado ao RB0 e veja se o LED acende de acordo com o pressionar dele.

A funo de uma minuteria manter ligada uma sada durante um intervalo de tempo. Nos dias de hoje, nos quais a demanda por energia eltrica alta, obter formas de economiz-la uma das aplicaes nas quais um microcontrolador pode ser utilizado. Normalmente a minuteria utilizada em corredores ou garagens, por exemplo, e ao detectar a presena humana, a iluminao acionada por um perodo de tempo e logo em seguida desligada automaticamente.

Os sensores que informam ao circuito de controle a presena de uma pessoa so chamados de sensores de infravermelho PIR, como pode ser observado na figura 1.

Na parte interna desses sensores, j fica instalado o circuito de minuteria e o tempo em que o mesmo ficar acionado aps receber o sinal de presena ajustado atravs de um trimpot. Apesar deste projeto poder ser desenvolvido por um microcontrolador e nada impede a utilizao lgica discreta para o desenvolvimento deste circuito. Esta mais uma aplicao onde o microcontrolador pode ser utilizado.

Recursos de Hardware Para o desenvolvimento deste projeto, utilizaremos a placa didtica PICLAB18F1220 desenvolvido pela Cerne Tecnologia. Para simular o sensor de infravermelho, usaremos um boto e para simular a sada de um rel o LED que fica instalado na prpria placa. O circuito eltrico pode ser observado na figura 2.

Carta de Tempos O exemplo funcionar da seguinte forma: Quando for detectado a presena de uma pessoa (ao pressionar o boto, no nosso caso) a sada ficar acionada durante o intervalo de 10 segundos. Este tempo pode ser alterado atravs de parmetros de software como ser visto em breve. Desta forma, a carta de tempos do nosso exemplo ser a apresentada na figura 3.

Fluxograma O fluxograma que ir reger o funcionamento deste software pode ser apreciado na figura 4. Note que enquanto no verificada nenhuma presena o sistema fica preso em loop, testando ciclicamente a entrada

do sensor. No entanto assim que este estado se altera, a sada ligada e logo em seguida entra em uma rotina que faz com fique durante o intervalo de 10 segundos neste estado. A seguir a mesma desligada e volta-se a verificar a entrada do sensor.

Recursos de Software Para execuo deste exemplo, precisaremos de uma funo que permita um retardo no programa. Para isso, utilizaremos a funo da linguagem BASIC chamada delay_ms(parmetro). Esta funo faz com que o programa fique parado durante um intervalo de tempo em funo de parmetro. Desta forma, se chamarmos delay_ms(1000), o programa ficar preso durante o intervalo de 1 segundo nesta rotina, causando o retardo necessrio que precisamos. importante salientar que o parmetro mximo que pode ser passado para esta funo de 65535.

Software O software final, que permitir que construamos a nossa minuteria pode ser observado no box 1. Observe que o leitor deve criar antes um projeto, de acordo com o primeiro artigo desta srie e ento digitar o cdigo abaixo.

Vamos agora analisar melhor o cdigo-exemplo. Primeiramente, o nome do programa informado atravs de program Minuteria. Note que neste caso o projeto foi chamado de minuteria. Logo em seguida o programa comea atravs do label main. Na prxima linha encontramos a declarao adcon1=%01111111. Isto foi feito pois os pinos RA0, RA1, RA2, RA3, RB0, RB1e RB4 ficam configurados automaticamente como pinos de funo analgica e como no exemplo proposto esta funo no utilizada, foi necessrio deslig-la atravs deste comando. Mais detalhes sobre os pinos de funo analgica sero explorados nos prximos artigos. O comando trisb=%00000001 faz com que o pino RB0 fique configurado como entrada e o restante como sada (observe o esquema eltrico na figura 2). Aps estas configuraes, inicia-se o teste do pino RB0 e caso o mesmo fique ativo (neste caso em nvel lgico 0) o LED conectado na sada RB3 ser acionado e ficar neste estado durante o intervalo de 10 s atravs da funo delay_ms(10000). Passado este intervalo, o LED desligado e o sistema volta a testar o sensor (boto) a fim de detectar algum evento e acionar novamente a sada. Observe que ao lado de alguns comandos do programa, existe um texto explicativo que inicia-se por (apstrofo). Todo o texto que iniciado por este caracter chamado de comentrio e o compilador, no momento da compilao, no trata este texto, tornando o seu uso livre. Aps o desenvolvimento deste programa, compile-o e transfira o arquivo hex para a placa didtica para validar o exerccio. Concluso Os microcontroladores so encontrados hoje em diversos encapsulamentos e apresentam preos muito baixos. A Microchip, por exemplo, lanou recentemente a famlia PIC10 que possui 6 pinos e excelente para aplicaes como esta, na qual no necessrio grande poder de processamento.

Você também pode gostar