24
Cícero Lima.

Apostila de pic basic

Embed Size (px)

DESCRIPTION

Destinado ao treinamento em GCGB

Citation preview

Page 1: Apostila de pic basic

Cícero Lima.

Page 2: Apostila de pic basic

- 1 -

ÍNDICE Introdução............................................................................................. 01 Hardware............................................................................................... 02 Softwares.............................................................................................. 04 O Programador..................................................................................... 10 O Porgramador JDM........................................................................... 10 Circuito de alimetação......................................................................... 11 Programa nº 1 Pisca-pisca com LED.................................................. 13 Gravar um programa no Microcontrolador........................................ 14 Instalar um simulador......................................................................... 16 Testar um programa no Simulador.................................................... 16 Programa nº 2 Botão............................................................................ 19 Programa nº 3 Interruptores ou sensores............................................ 19 Programa nº 4 Criar uma melodia....................................................... 20 Programa nº 5 LCD’s............................................................................ 20 Programanº 6 Sequêncial..................................................................... 21 Lista de Comandos............................................................................... 22 Bibliografia............................................................................................ 23 Introdução

Um microcontrolador (uC) é um computador em um chip, contendo um processador, memória e periféricos de entrada e saída. É um microprocessador que pode ser programado para funções específicas, em contraste com outros microprocessadores de propósito geral. Eles são embarcados no interior de diversos dispositivos elétricos e eletrônicos para que possam controlar as funções e ações do aparelho.

Os microcontroladores se diferenciam dos processadores, porque além dos componentes lógicos e aritméticos de um microprocessador, o microcontrolador integra elementos adicionais em sua estrutura interna, como memória de leitura e escrita para armazenamento de dados, memória somente de leitura para armazenamento de programas, EEPROM para armazenamento permanente de dados, dispositivos periféricos como conversores analógico/digitais (ADC), conversores digitais/analógicos (DAC) em alguns casos; e, interfaces de entrada e saída de dados.

Page 3: Apostila de pic basic

- 2 -

Os PIC16F627 e PIC16F628 são microcontroladores produzidos pela Microchip Technology e que pertencem à sua família PIC de microcontroladores. Ambos possuem características semelhantes diferindo apenas na sua capacidade de memória flash disponível para o software. O PIC16F627 possui 1024 palavras de 14 bits enquanto que o PIC16F628 dispõe de 2048 palavras de 14 bits sendo compatíveis em todos os outros aspectos. Ambos possuem 224 bytes de Memória RAM e 128 bytes de memória EEPROM.

Distribuição do hardware interno de um uC-PIC

Não entraremos em detalhes de arquiteturas e outros elementos concernentes ao estudo do Microcontroladores, pois o objetivo aqui é fazer uma introdução prática ao Hardware e Software, bem como, Programação, gravação e montagem dos circuitos utilizando os uC-PIC’s. Hardware Na hora de montar o circuito, devemos saber o que queremos que ele faça, pois é apartir desse ponto que podemos ter uma idéia de como será o programa que vamos gravar no PIC. Os uC’s-PIC não são componentes com grandes vulnerabilidades relacionadas as grandezas elétricas; no entanto, devemos obedecer aos critérios específicos da marca e modelo, para que além de funcionar corretamente, o uC não seja danificado antes de sair da bancada de montagem.

Não se assuste, pois com o tempo você se familiarizará com os diversos conceitos utilizados no trabalho com os Microcontroladores. Para facilitar, olhe para o PIC como um conjunto de portas-lógicas com um interruptor em cada entrada em cada saída; sendo que, basta ligar ou desligar os interruptores que forem convenientes para a finalidade do circuito projetado.

Page 4: Apostila de pic basic

- 3 -

A figura abaixo, nos mostra como deve ser montado o PIC 18F452. Mas não se preocupe, pois se utilizar outros modelos, poderá consultar o banco de DataSheet’s na Web. O PIC será alimentado apartir de uma fonte de tensão +5VCC, GND nos seus respectivos pinos, mais o pino MCLR , se o mesmo estiver ativo. Ainda aconselho que utilize uma fonte de alimentação estabilizada. Isso pode ser conseguido com o CI-7805. DESENHO FEITO NO KI-CAD

No decorrer da Apostila, você verá em diagrama esquemático estes modelos de ligação. Observe que a distribuição dos componentes ficará por conta do projetista, bem como a integração ou não da fonte de alimentação no circuito do uC-PIC. Os valores dos componentes deverão ser respeitados, pois do contrário o uC-PIC será danificado. Na figura abaixo, você tem os valores padrão para os circuitos mais utilizados. Obs:. O Software utilizado para desenhar a PCI é o KI-Cad. Trata-se de um Software Livre, Free.

Page 5: Apostila de pic basic

- 4 -

Softwares Existem muitos Softwares de programação para uC’s-PIC, no entanto a maioria deles está sendo comercializada; isto é um problema para quem está começando ou não pode investir em um Software confiável. Para além disso tudo, você ainda tem que escolher com que linguagem de programação vai trabalhar e existem muitas. Por exemplo: C; Basic; Jar; Pascal; Assembler; Ld; entre outras... A lLinguagem de programação desta Apostila, será o Basic. Trata-se de uma linguagem de alto nível, ou seja; é de bom entendimento. No entanto, aconselho que, com o passar do tempo, tente programar em Assembler, pois por ser uma linguagem de montagem, pode dar acesso a raízes de programação no uC-PIC que com uma linguagem de alto nível ocuparia muito espaço, sem falar na possibilidade de problemas de execução do programa já em funcionamento. O Software que usaremos é um Freeware-GNU e pode ser descarregado na Web. GCGB; Great Cow Graphical Basic. Veja na figura abaixo. Como podemos ver e mesmo pelo seu nome, trata-se de um compilador de duas plataformas; uma gráfica e outra textual. Vamos dar uma olhada rápida em nosso compilador.

Page 6: Apostila de pic basic

- 5 -

O menu File , administra os Arquivos do Compilador. Vejamos: New => Clique em New para começar um novo programa. Open => Clique em Open para abrir um programa já existente. Save => Clique em Save para salvar um programa novo. Save As => Clique em Save As para salvar um arquivo em outra pasta.

Edit é um menu de edição. Cut => Se você selecionar um objeto gráfico ou de texto na janela de trabalho e clicar em Cut, o objeto será deletado. Copy => Copia textos ou elementos selecionados para outros locais. Paste => Cola ou faz aparecer o objeto copiado. Undo => Desfaz a ultima ação do compilador. Redo => Inverte a ação de Undo. Preferences... => Abre uma outra janela de configuração.

Em View podemos alternar entre os modos de programação; gráfico ou texto. No Sub-Comando Window , podemos alternar entre vários programas dentro do compilador.

O menu Program , será estudado com mais detalhes mais oportunamente.

Page 7: Apostila de pic basic

- 6 -

A seguir, será mostrado uma série de palhetas contendo diferentes elementos gráficos de programação.

No menu Tools , podemos compilar o programa, visualizar o codigo que ao ser compilado gera um codigo em assembler. Veja os comandos: View Assembly; View Program Summary; Compile; Compile and Download...

Neste Sub-menu, podemos escolher o Software de gravação. Mais adiante estudaremos este comando em detalhes.

Esta é a palheta de escolha dos diferentes elementos gráficos de programação.

Page 8: Apostila de pic basic

- 7 -

Para programar no modo gráfico, basta clicar sobre o símbolo escolhido, arrastar e soltar na janela de edição. Veja no exemplo.

Page 9: Apostila de pic basic

- 8 -

Agora, vá ao menu View e clique em View as text para mudar para o modo de programação em Basic. Observe que a única linha existente na janela de edição é referente ao símbolo que foi colocado na janela gráfica. Por agora, podemos deixar o Compilador de lado e vamos conhecer o Software de gravação. O Software que vamos utilizar é o Win-PIC800, que também é Freeware e pode ser descarregado da Web. Vamo para uma breve explicação, passo a passo para criar um programa, compilar e gravar no uC-PIC.

1- Criar uma pasta-Arquivo com o nome que iremos dar ao nosso programa;

2- Abrir o Compilador GCGB; 3- Escrever o programa; 4- Clicar em Tools=> Compile; 5- Clicar em File=> Save e salvar dentro da pasta-Arquivo com o nome do

programa; 6- Abrir o Software de gravação e no mesmo, clicar em File=> Open: pasta-

Arquivo escolhido e abrir o arquivo com a extensão.HEX, Ex: Led.HEX ; 7- Escolher o modelo de gravador de uC-PIC; 8- Clicer em gravar e pronto.

Page 10: Apostila de pic basic

- 9 -

Na figura abaixo, podemos ver o Win-PIC800. Não iremos entrar em detalhes com relação a este Software, pois o mesmo possui a opção de alteração do idioma; portanto é muito intuitivo. Uma obseração é que a grande maioria dos softwares de gravação, foram criados para sistemas operacionais não atuais. Por exemplo: No máximo até ao Windows XP. Entretanto, existem alguns outros softwares com as mesmas características e com o mesmo visual... (PIC-Prog, Ic-Prog...) e todos são Freeware e podem ser descarregados da Web. Outro Software interessante é o de simulação, pois sem uma PCI para teste ou um programador sofisticado, o projetista fica sem saber qual a ação dinâmica do circuito. O Proteus/ISIS é uma poderosa ferramenta para projetar do início ao fim qualquer circuito eletrônico e muito mais. Além disso tudo, possibilita que o projetista de embarcados descarregue arquivos.HEX e simule-os no PC sem ônus. Na figura abaixo, podemos ver a aparência visual do ISIS. Ao contrário dos softwares apresentados até o momento, o Proteus é pago; portanto, poderá descarregar o Demonstrativo na Web. No exemplo da figura abaixo, temos o diagrama de um voltímetro, implementado com o PIC-16F627A em conjunto com os demais periféricos a sua volta. Mais a frente, iremos ver o código fonte para este circuito. Também, por não se tratar de uma apostila sobre Proteus, não entraremos em detalhes sobre o uso deste software; somente mostraremos o necessário.

Page 11: Apostila de pic basic

- 10 -

O Programador O programador é uma PCI apropriada para a gravação e teste preliminar dos uC’s-PIC, bem como uC’s de outros fabricantes. O programador é uma PCI apropriada para que possamos descarregar o codigo fonte para o uC e tambem nela podermos realizar alguns testes preliminares. No Win-PIC800, você irá encontrar uma janela onde poderá escolher o tipo de programador que utilizará pra gravação do codigo fonte. No nosso caso, utilizaremos o programador JDM, que é fácil de construir e suporta diferentes tipos de uC’s de diferentes marcas. O programador JDM grava sem necessidade de uma fonte de alimentação externa; ou seja, utiliza a tensão proveniente da porta de comunicação serial do PC. Veja um exemplo na figura a seguir. Para quem quiser, poderá utilizar Uma Proto-Lab em vêz de montar seu programador JDM. Vejamos o diagrama esquemático na página seguinte.

Page 12: Apostila de pic basic

- 11 -

Eis aqui mais uma idéia de como utilizar o programador JDM. Nesta figura, podemos observar um canal ICSP, apartir do qual podemos conectar através de um cabo apropriado o programador JDM a uma Proto-Lab.

Existem muitos modelos que são comercializado na Net e podem ser adquiridos por um baixo custo.

Circuito de Alimentação Eis um diagrama do circuito da fonte de alimentação para os uC’s-PIC: Programa nº 1 Pisca-pisca com LED Apartir desse ponto, já temos alguma base para partir para o foco principal da nossa apostila; escrever codigos fontes em Basic. Então, mãos à obra! Para o efeito, vamos utiliza em primeiro lugar, os objetos gráficos e somente depois, veremos como fica em linha de texto na linguagem basic. Vamos iniciar o GCGB, escolher o modelo do uC-PIC e na palheta Category, selecionar Imput/Output=> clicar e arrastar o ícone “Set” para a janela de programação.

Page 13: Apostila de pic basic

- 12 -

Depois de feitos estes passos, o nosso programa fica como na figura abaixo. Agora clique no menu View e mude a vista do programador para o modo texto. Observe que aínda não existem ações definidas para o programa. Apenas está definido o modelo do uC-PIC e o comando Set.

Page 14: Apostila de pic basic

- 13 -

Observe que para uma ação em janela gráfica, temos uma em modo de texto. Agora vamos terminar de escrever o codigo fonte em modo de texto e veremos como fica em modo gráfico. Programa nº 1 Pisca-pisca com LED ;Chip Settings ;Toda linha precedida por ponto r vírgula é somente

;um comentário. #chip 16F627A, 4 ;O #chip 16F627A, 4 define o modelo do PIC e a

;frequência. Inicio: ;Inicio é uma label; um ponto de referencia... Set PORTB.0 On ;Coloca em nível alto o pino RB0 Wait 1 s ;Faz uma pausa de 1 segundo Set PORTB.0 Off ;Coloca em nível baixo o pino RB0 Wait 1 s Goto Inicio ;Salta para o label inicio e executa novamente o

;codigo. End ;Aqui termina o programa. Agora vá ao menu View e mude para a vista gráfica. Veja como fica. Depois, vá ao menu Tools , clique em Compile e salve em uma pasta que você escolheu.

Page 15: Apostila de pic basic

- 14 -

Gravar um programa no Microcontrolador Supondo que você já possui o seu Gravador JDM, ligue-o a porta serial do seu PC, através de um cabo apropriado. Observe que você deve antes de conectar o gravador ao PC, colocar o uC-PIC no seu devido slot. O modelo que escolhemos, foi o 16F627A, portanto esse uC-PIC possui 18 pinos. Atente para a posição correta de encaixe. A identificação dos pinos pode ser vista no respectivo Data-Sheet do componente. Agora vamos abrir o Win-PIC800, => clique em configurações,=> Hardware,=> escolha o programador JDM e a porta COM1,=> clique em OK e pronto! Clique no menu Ficheiro/Arquivo,=> abrir e vá até a pasta onde salvou o codigo fonte feito no GCGB, abra o arquivo com a extenção *.HEX. Veja como ficará no Win-PIC800.

Page 16: Apostila de pic basic

- 15 -

Page 17: Apostila de pic basic

- 16 -

Observe que no momento em que o uC-PIC está sendo gravado, o led do JDM pisca e após concluir a gravação o led para de piscar. Pode retirar o uC-PIC e coloca-lo no circuito de destino. Parabéns, já fizeste o teu primeiro programa! Simulando o programa em Proteus Abrimos o ISIS do Proteus e vamos simular o hrdware em ambiente virtual.

Page 18: Apostila de pic basic

- 17 -

Abrir a palheta dos componentes. Para escolher um componente, basta dar um duplo clique na referência desejada. Depois de escolhido todos os componentes necessarios para a montagem, feche a palheta de componentes e inicie a montagem.

Page 19: Apostila de pic basic

- 18 -

Para configurar os componentes, clique com o botão direito do mouse em cima do componente a ser configurado; ele ficará vermelho, então clique com o botão esquerdo do mouse em cima do componente, no caso em cima do uC-PIC. Veja como fica. Clique na pequena pasta amarela, escolha o arquivo com a extensão.HEX e abra-o. Configure a frequência para 4 MHz e clique em OK. Na parte inferior da janela do proteus, exitem botões de Play, Pause, Stop..., use-os para iniciar a simulação. Vejamos como ficou o nosso circuito.

Page 20: Apostila de pic basic

- 19 -

Programa – 2 Botão ;Este é mais um programa para controle de saídas apartir de uma entrada ;Chip Settings #chip 16f627a,4 ;Defines (Constants) #define BUTTON PORTA.4 #define light PORTB.4 dir BUTTON in dir light out DO UNTIL BUTTON = 1 SET light ON WAIT 1 s SET light OFF WAIT 1 s LOOP

Programa nº 3 Interruptores ou sensores ;Este programa trabalha com entradas e saidas digitais ;Por exemplo: um Botão, um fim de curso... ;Chip Settings #chip 16F627a,64 ;Defines (Constants) #define LCD_IO 0 Dir PORTA.0 In Dir PORTA.1 In Dir PORTA.2 In Dir PORTB.0 Out Dir PORTB.1 Out Dir PORTB.2 Out cc: If porta.0 = 1 then portb.0 = 1 end if if porta.0 = 0 then portb.0 = 0 end if If porta.1 = 1 Then portb.1 = 1 end If

Page 21: Apostila de pic basic

- 20 -

if porta.1 = 0 then portb.1 = 0 end if if porta.2 = 1 then portb.2 = 1 end if if porta.2 = 0 then portb.2 = 0 end if Goto cc End

Programa nº 4 Criar uma melodia ;Este programa gera um tom sonoro de acordo com o nível analógico ;lido no potenciômetro ;Chip Settings #chip 16F627A,0 ;Defines (Constants) #define Adjust PORTB.0 #define LDR PORTB.1 #define SoundOut PORTB.2 dir SoundOut out Main: POT Adjust, Threshold POT LDR, LightLevel if LightLevel > Threshold then Tone 1000, 100 end if goto Main

Programa nº 5 LCD’s ;Este programa lê uma entrada analógica e escreve uma mensagem em ;um display de cristal líquido ;Chip Settings #chip 16F877A,20 ;Defines (Constants) #define LCD_IO 8 #define LCD_DATA_PORT PORTC #define LCD_RS PORTD.0 #define LCD_RW PORTD.1 #define LCD_Enable PORTD.2

Page 22: Apostila de pic basic

- 21 -

;Variables Dim cicero(1) Dim Temp1 As byte 'Show intro message PRINT "VOLTIMETRO:" Locate 1,2 PRINT "CICERO,CLAUDIA" Wait 500 ms cls Print "MARTA" Locate 1, 2 Print "FRANCISCO" wait 500 ms 'Main loop Main: 'Take two measurements, so the average can be calculated Temp1 = ReadAD(AN0) 'wait 25 ms 'Temp2 = ReadAD(AN0) 'Display measurements cls Print "NL:" LCDInt Average(Temp1, Temp2) 'Delay to avoid flickering of screen wait 20 ms goto Main Programa – 6 Sequêncial ;Este é um programa para sequencial ;Chip Settings #chip 16F627A,20 #config HS_OSC, WDT_OFF, LVP_OFF ;Defines (Constants) #define LED1 PORTB.1 #define LED2 PORTB.2 #define LED3 PORTB.3 #define LED4 PORTB.4 #define FlashDelay 125 ms dir B1 out

Page 23: Apostila de pic basic

- 22 -

dir B2 out dir B3 out dir B4 out start: set LED4 OFF set LED1 ON wait FlashDelay set LED1 OFF set LED2 ON wait FlashDelay set LED2 OFF set LED3 ON wait FlashDelay set LED3 OFF set LED4 ON wait FlashDelay goto start Lista de comandos Output high, low, toggle, pulsout, let pins = Input if...then, pulsin, button ADC readadc RAM peek, poke Sound/Tone sound Serial serin, serout Program Flow goto, gosub, return, branch Loops for...next Mathematics let (+, -, *, **, /, //, max, min, &, |, ^, &/, |/, ^/ ) Variables if...then, random, lookdown, lookup Data memory eeprom, write, read Delays pause, wait, nap, sleep, end Miscellaneous symbol, debug Interrupt setint Servo Control servo Infrared infrain Temperature readtemp 1-wire Serial No readowsn Keyboard keyin, keyled Input count, if portA….then ADC readadc10 Portc config. let dirsc = Portc output high portc, low portc, let pinsc = I2C readi2c, writei2c, i2cslave Temperature readtemp12 PWM pwmout

Page 24: Apostila de pic basic

- 23 -