31

Apostila de Pic-basic

Embed Size (px)

Citation preview

Page 1: Apostila de Pic-basic

Cícero Lima.

Page 2: Apostila de Pic-basic
Page 3: Apostila de Pic-basic

Í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

- 1 -

Page 4: Apostila de Pic-basic

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.

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

- 2 -

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

Page 5: Apostila de Pic-basic

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.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

- 3 -

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

Page 6: Apostila de Pic-basic

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.

- 4 -

Page 7: Apostila de Pic-basic

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

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.

- 5 -

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.

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

Page 8: Apostila de Pic-basic

- 6 -

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

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

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

Page 9: Apostila de Pic-basic

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

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

- 7 -

Page 10: Apostila de Pic-basic

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.

- 8 -

Page 11: Apostila de Pic-basic

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.

Na figura abaixo, podemos ver o Win-PIC800.

- 9 -

Page 12: Apostila de Pic-basic

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.

- 10 -

Page 13: Apostila de Pic-basic

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á utilizarUma Proto-Lab em vêz de montarseu programador JDM.Vejamos o diagrama esquemático na página seguinte.

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.

- 11 -

Page 14: Apostila de Pic-basic

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.

Depois de feitos estes passos, o nosso programa fica como na figura abaixo.

- 12 -

Page 15: Apostila de Pic-basic

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.

Observe que para uma ação em janela gráfica, temos uma em modo de texto.

- 13 -

Page 16: Apostila de Pic-basic

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 RB0Wait 1 s ;Faz uma pausa de 1 segundoSet PORTB.0 Off ;Coloca em nível baixo o pino RB0Wait 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.

- 14 -

Page 17: Apostila de Pic-basic

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.

- 15 -

Page 18: Apostila de Pic-basic

- 16 -

Page 19: Apostila de Pic-basic

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.

Abrir a palheta dos componentes.

- 17 -

Page 20: Apostila de Pic-basic

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.

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.

- 18 -

Page 21: Apostila de Pic-basic

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.

Programa – 2 Botão

;Este é mais um programa para controle de saídas apartir de uma entrada

;Chip Settings#chip 16f627a,4

;Defines (Constants)

- 19 -

Page 22: Apostila de Pic-basic

#define BUTTON PORTA.4#define light PORTB.4

dir BUTTON indir light outDO UNTIL BUTTON = 1

SET light ONWAIT 1 sSET light OFFWAIT 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 InDir PORTA.1 InDir PORTA.2 InDir PORTB.0 OutDir PORTB.1 OutDir PORTB.2 Outcc:If porta.0 = 1 then

portb.0 = 1end ifif porta.0 = 0 then

portb.0 = 0end ifIf porta.1 = 1 Then

portb.1 = 1end Ifif porta.1 = 0 then

portb.1 = 0end ifif porta.2 = 1 then

portb.2 = 1end ifif porta.2 = 0 then

portb.2 = 0end ifGoto cc

- 20 -

Page 23: Apostila de Pic-basic

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 outMain:POT Adjust, ThresholdPOT LDR, LightLevelif LightLevel > Threshold then

Tone 1000, 100end ifgoto 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

;VariablesDim cicero(1)Dim Temp1 As byte

'Show intro messagePRINT "VOLTIMETRO:"Locate 1,2PRINT "CICERO,CLAUDIA"

- 21 -

Page 24: Apostila de Pic-basic

Wait 500 msclsPrint "MARTA"Locate 1, 2Print "FRANCISCO"wait 500 ms

'Main loopMain:

'Take two measurements, so the average can be calculatedTemp1 = ReadAD(AN0)

'wait 25 ms'Temp2 = ReadAD(AN0)'Display measurementsclsPrint "NL:"LCDInt Average(Temp1, Temp2)

'Delay to avoid flickering of screenwait 20 msgoto 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 outdir B2 outdir B3 outdir B4 outstart:set LED4 OFFset LED1 ONwait FlashDelayset LED1 OFF

- 22 -

Page 25: Apostila de Pic-basic

set LED2 ONwait FlashDelayset LED2 OFFset LED3 ONwait FlashDelayset LED3 OFFset LED4 ONwait FlashDelaygoto 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, keyledInput 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

- 23 -

Page 26: Apostila de Pic-basic

- 24 -