MICROCONTROLADORES PIC PRIMEIROS PASSOS



Documentos relacionados
PIC16F628a. Pinagem do PIC16F628a:

Programação Daniel Corteletti Aula 3 Parte III Página 1/7

Curso PIC 1 Desbravando o PIC. Eng. Diego Camilo Fernandes Labtools Mosaico Didactic Division

DOUGLAS DAL POZZO DIEGO VITTI

Arquitetura de Computadores. Prof. João Bosco Jr.

Sistemas Microcontrolados

7. Técnicas de Programação

V1 5V +V. (14)Vdd (6)RB0 PIC 16F628A. (16) Clk-out. C1 33pF. C2 33pF. Figura 1 Circuito pisca-pisca.

Introdução aos Microcontroladores PIC

PIC. PeripheralInterface Controller. Prof. EngºespLuiz Antonio Vargas Pinto Prof. Vargas

Hardware Parte I. Fábio Rodrigues de la Rocha

SEMINÁRIO ASSEMBLY: Arquitetura PIC

UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI - UFSJ DEPARTAMENTO DE ENGENHARIA ELÉTRICA - DEPEL INTRODUÇÃO AOS MICROCONTROLADORES PIC

MICROCONTROLADORES O QUE É O PIC?

Servo-Motor. por. Nuno Monteiro & Gabriel Dinis Eng. Electrotécnica, UTAD Junho de nuno_monteiro@portugalmail.com gabrieldinis@portugalmail.

Programação em BASIC para o PIC Vitor Amadeu Souza

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Memórias. O que são Memórias de Semicondutores? São componentes capazes de armazenar informações Binárias (0s e 1s)

Capítulo 12. Projeto 5 Controle de Motores de Passo Circuito e Funcionamento

Sistemas Microcontrolados. Período Aula 4. 1 Saulo O. D. Luiz

PROGRAMAÇÃO DE UM MICROPROCESSADOR

5. Conjunto de Instruções do MCU PIC

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

1.1. Microprocessadores e microcontroladores Sistemas genéricos e sistemas dedicados. 2. Microcontrolador PIC:

Curso de Programação PIC Prof. Msc. Engº Getúlio Teruo Tateoki

Microcontroladores. Édilus de Carvalho Castro Penido Ronaldo Silva Trindade

Microcontrolador PIC 16F877

TEM VÁRIOS ESTADOS: 0V,0.1V,3V,3.3V,4V,5V,10V, ETC.

MICROCONTROLADORES. PIC16F87x

2. A influência do tamanho da palavra

Copyright 2011 VW Soluções

Organização de Computadores Como a informação é processada?

Organização de Computadores 1

Módulo de Desenvolvimento PIC16F877A

Manual de Instalação da Plataforma Scorpion. 1. Como conectar a Plataforma Scorpion com a Xilinx Starter-3E kit

Introdução à estrutura e funcionamento de um Sistema Informático

ULA Sinais de Controle enviados pela UC

Circuitos de Memória: Tipos e Funcionamento. Fabrício Noveletto

Introdução à Engenharia de Computação

1. SINTAXE DA LINGUAGEM ASSEMBLY

SINOPSE. Leandro Gomes Matos Diretor da RNC

Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE

R O B Ó T I C A. Sensor Smart. Ultrassom. Versão Hardware: 1.0 Versão Firmware: 1.0 REVISÃO

UNIPAC UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS FACULDADE DE CIÊNCIA DA COMPUTAÇÃO E COMUNICAÇÃO SOCIAL CURSO DE CIÊNCIA DA COMPUTAÇÃO

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ESCOLA POLITÉCNICA ENGENHARIA DE COMPUTAÇÃO MICROPROCESSADORES PROJETO PARDAL DOCUMENTAÇÃO

Sequencial Supermáquina (TEMPORIZAÇÃO SIMPLES)

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná

CE N T R AI S TELEFÔNICAS HDL

Algoritmos e Programação Aula 01 Introdução a Computação

Computador. 1982: os computadores são ferramentas que nos permitem fazer cálculos rápida e comodamente

Interrupções e timers

ARQUITETURA DE COMPUTADORES

MANUAL DE INSTRUÇÕES DEMARCADOR RODOVIÁRIO

Eder Terceiro. Programação C com o PIC16F628a. Eder Terceiro. 31 de Outubro de 2016

C:\seminario\guiao_aluno\trab6\trab6.asm

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Comunicação USB com o PIC Vitor Amadeu Souza Parte II vitor@cerne-tec.com.br

Microcontrolador PIC 16F877

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

armazenamento (escrita ou gravação (write)) recuperação (leitura (read))

MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628A

Introdução aos Computadores

BANKSEL ADCON1 clrf ADCON1 bsf ADCON1,ADFM ; seta AD para VCC, GND e entradas analogicas, setando o bit ADFM configura como justificado a direita

IDENTIFICAÇÃO MANUTENÇÃO

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

O processador é um dos elementos componentes do computador moderno, sendo responsável pelo gerenciamento de todo o computador.

Aula 2. - Elaboração de algoritmos/fluxogramas. - Gravação do programa no microcontrolador

Sistema de Memórias de Computadores

Guia do Usuário Placa de Desenvolvimento McLab1

AULA: Introdução à informática Computador Digital

Algoritmos DCC 119. Introdução e Conceitos Básicos

Entendendo as Permissões de Arquivos no GNU/Linux

Microcontroladores PIC16F84 e PIC16F628

Dispositivos de Entrada e Saída

1. CAPÍTULO COMPUTADORES

Manual MifareUSB/Serial

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Aula 14: Instruções e Seus Tipos

Problema: Solução: Vantagens da estruturação em Níveis: Introdução INTRODUÇÃO À ARQUITETURA DE COMPUTADORES. Introdução

Introdução à Engenharia de Computação

Laboratório de Microprocessadores e Microcontroladores

Entradas/Saídas. Programação por espera activa Programação por interrupções

Componentes de um computador típico

Cerne Tecnologia e Treinamento (21) (11) cerne@cerne-tec.com.br MSN: cerne-tec@hotmail.com Skipe: cerne-tec

Roteiro. MC-102 Aula 01. Hardware e dispositivos. O que é um computador? Primeiro Semestre de A linguagem C

Acetatos de apoio às aulas teóricas

Desmistificando o Programa de Computador

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

MODELIX SYSTEM SOFTWARE DE PROGRAMAÇÃO DE ROBÔS

9 Comandos condicionais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ PUC-PR CCET CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO. Luiz Renato Hey Schmidt

LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) SÃO CAETANO DO SUL - SP - CEP:

PROGRAMAÇÃO BÁSICA DE CLP

Hamtronix CONTROLE REMOTO DTMF. CRD200 - Manual de Instalação e Operação. Software V 2.0 Hardware Revisão B

Transcrição:

MICROCONTROLADORES PIC PRIMEIROS PASSOS Os microcontroladores são chips inteligentes, que tem um processador, pinos de entradas/saídas e memória. Através da programação dos microcontroladores podemos controlar suas saídas, tendo como referencia as entradas ou um programa interno. O que diferencia os diversos tipos de microcontroladores, são as quantidades de memória interna (programa e dados), velocidade de processamento, quantidade de pinos de entrada/saída (I/O), alimentação, periféricos, arquitetura e set de instruções. O QUE É O PIC? O PIC é um circuito integrado produzido pela Microchip Technology Inc., que pertence a categoria dos microcontroladores, ou seja, um componente integrado que em um único dispositivo contem todos os circuitos necessários para realizar um completo sistema digital programável. O pic pode ser visto externamente como um circuito integrado TTL ou CMOS normal, mas internamente dispõe de todos os dispositivos típicos de um sistema microprocessado, ou seja: Uma CPU (Central Processor Unit ou Unidade de Processamento Central) e sua finalidade é interpretar as instruções de programa; Uma memória PROM (Programmable Read Only Memory ou Memória Programável Somente para Leitura) na qual ira memorizar de maneira permanente as instruções do programa; Uma memória RAM (Random Access Memory ou Memória de Acesso Aleatório) utilizada para memorizar as variaveis utilizadas pelo programa; Uma serie de LINHAS de I/O (entrada e saída) para controlar dispositivos externos ou receber pulsos de sensores, chaves, etc. ; Uma serie de dispositivos auxiliares ao funcionamento, ou seja, gerador de clock, bus, contador, etc. A presença de todos estes dispositivos em um espaço extremamente pequeno, da ao projetista ampla gama de trabalho e enorme vantagem em usar um sistema microprocessado, onde em pouco tempo e com poucos componentes externos podemos fazer o que seria oneroso fazer com circuitos tradicionais.o PIC esta disponível em uma ampla gama de modelos para melhor adaptar-se as exigências de projetos específicos, diferenciando-se pelo numero de linha de I/O e pelo conteúdo do dispositivo. Inicia-se com modelo pequeno identificado pela sigla PIC12Cxx dotado de 8 pinos, até chegar a modelos maiores com sigla PIC17Cxx dotados de 40 pinos. Uma descrição detalhada da tipologia do PIC é disponível no site da Microchip ( www.microchip.com ), onde conseguimos encontrar grandes e variadas quantidades de informações técnicas, software de apoio, exemplos de aplicações e atualizações disponíveis. PIC Primeiros Passos Carlos Henrique Monteiro Página 1

O HARDWARE Dependendo do modelo, um PIC pode ter vários pinos que chamamos de PORTAS. Para nosso estudo atual, veremos um PIC de 8 s chamado PIC16F84A. Este pic é formado por portas RA e portas RB, sendo que cada porta RA ou RB pode ser uma entrada ou saída conforme determinemos no programa. O pino Vdd é a alimentação de tensão contínua +5V e o pino Vss o GND. O MCLR é um pino para reset do programa, e funciona em logica inversa, ou seja, se levado a nível lógico 0, ele faz o reset do programa, logo, devemos trabalhar com ele em nível logico 1. Os pinos 15 e 16 são para o oscilador, que poder ser um oscilador RC ou cristal. Os pinos restantes são as portas RAs e RBs, note que temos 8 portas RB e 5 portas RA. PIC16F84A Programação e desenvolvimento Como qualquer arquitetura os processadores PIC apenas aceitam linguagem de máquina (assembly). No entanto a programação pode ser feita em linguagens de alto nível utilizando-se compiladores. Existem várias alternativas pagas de compiladores. Em geral é possivel utilizá-los de modo gratuito com algumas restrições. Para as famílias PIC16 e PIC18 existe uma alternativa opensource o SDCC, que pode ser configurado para operar com o MPLAB. Existem ainda diversas IDE's disponíveis para a programação, entre elas a mais utilizada é o MPLAB, disponibilizado de modo gratuíto pela própria Microchip. Há atualmente uma versão beta de IDE baseada no Netbeans sendo desenvolvida pela Microchip: MPLABX. Esta IDE já vem com suporte para qualquer Windows, Mac e Linux. Para gravar o programa no microcontrolador é utilizado um dispositivo dedicado. É comum que tais dispositivos também possuam capacidade de debuggar o programa, que auxilia muito na fase de testes dos sistemas. É possivel ainda encontrar diversas placas de desenvolvimento que já possuem um hardware pré-montado de modo a agilizar o projeto de um produto, permitindo que se comece a desenvolver o software em paralelo com o hardware. O MPLAB é um software gratuito e pode ser baixado em http://www.microchip.com. PIC Primeiros Passos Carlos Henrique Monteiro Página 2

PIC Primeiros Passos Carlos Henrique Monteiro Página 3

O QUE É UM REGISTRADOR Um registrador é um endereço na memória, que em nosso caso são formados por 8 números, ou melhor, 8 s. Cada deste pode assumir o valor de 1 (um) ou 0 (zero). Temos então um endereço que podemos chamar de registrador. Este registrador terá 8 s. Estes s podem ser 0 (zero) ou 1 (um). Muitas vezes chamamos estes s de Flags. Flags então é um dentro de um registrador. Mas o que é um Bit? Imaginemos 8 posições: Cada posição pode ter um valor de 0 (zero) ou 1 (um). Esta posição com um valor é um, ou melhor, é o valor que há dentro da posição. Quando juntamos 8 s, como no exemplo a seguir: 00110011 _ Chamamos isto de byte. Um byte então é um conjunto de 8 s. Às vezes os s podem ser agrupados em números de 4, veja: 0101 _ Damos a isto o nome de nibble. Outras vezes os s podem se agrupar com números maiores que 8, veja: 001100110011 _ Chamamos isto de Word : Nos pics existem registradores especiais, vamos citar os três mais importantes: Intcon Option-reg Status Podemos através dos s ou flags destes registradores ajustar o funcionamento do PIC ou ler como ale está operando, para isto basta escrever ou ler os flags. PIC Primeiros Passos Carlos Henrique Monteiro Página 4

REGISTRADORES ESPECIAIS E MAIS UTILIZADOS NO PIC 16F84 O REGISTRADOR W O registrador W é extremamente útil no PIC, pois é através dele que fazemos diversas partes de um programa. O nome registrador W vem de Registrador Work, que traduzindo, quer dizer trabalho. É através dele que carregamos os outros registradores com valores diversos e corretos para um perfeito funcionamento de nosso projeto. Caso desejamos colocar um determinado valor em um registrador de uso geral (GPR), primeiro temos que carregar o registrador W e depois passar para o outro registrador. Para carregarmos o registrador W usamos as instruções: MOVLW e MOVWF. Imagine como se o registrador W fosse um elevador de carga, e que os registradores fossem um andar de um prédio. Cada seria um apartamento que pode ter apenas um morador. Este morador pode ser um 0 ou 1. PIC Primeiros Passos Carlos Henrique Monteiro Página 5

STATUS Port B Port A Tris A Tris B STATUS BANCO 0 BANCO 1 Registrador W 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 Registrador STATUS Este registrador está diretamente associado à unidade lógica Aritmética, ou a já famosa ULA. Através dele conseguimos ver o estado da ULA. Gostaria de relembrar que um registrador é um endereço na memória de dados, composta por 8 s e que cada deste recebe o nome carinhoso de flag. Perceba meu amigo leitor que de 7 até 0 teremos 8 posições, portanto 8 s. R/W quer dizer Read e Write - Leitura e escrita que tem suas versões em português para L/E. Então: L/E quer dizer leitura e escrita. Um indicado por R/W ou L/E permite que você faça a leitura de seu valor ou que escreva um valor nesta posição. Lembre-se que você só poderá escrever 0 (zero) ou 1 (um). Um ou flag indicado por R permite apenas a leitura, mas não a escrita. Com a análise destes s podemos fazer nossos programas ficarem mais rápidos e eficientes. Podemos ler ou escrever em um registrador a ou tudo de uma vez. Em minha opinião a análise separada de cada é mais eficaz. Bit 5 RP0 ->seleciona os bancos no endereçamento direto. Veja: RP0: 0 = banco 0 1 = banco 1 REGISTRADOR TRISA REGISTRADOR TRISB PIC Primeiros Passos Carlos Henrique Monteiro Página 6

COMANDOS DO PIC Operações com Registradores Instrução Argumentos Descrição ADDWF f,d Soma W e F, guardando o resultado em d. ANDWF f,d Lógica "E"entre W e f, guardando o resultado em d. CLRF f Limpa f. COMF f,d Calcula o complemento de f, guardando o resultado em d. DECF f,d Decrementa f, guardando o resultado em d. DECFSZ f,d Decrementa f, guardando o resultado em d, e pula a próxima linha se o resultado for zero. INCF f,d Incrementa f, guardando o resultado em d. INCFSZ f,d Incrementa f, guardando o resultado em d, e pula a próxima linha se o resultado for zero. IORWF f,d Lógica "OU" entre W e f, guardando o resultado em d. MOVF f,d Move f para d(copia ). MOVWF f Move W para f (copia ). RLF f,d Rotaciona f 1 para esquerda. RRF f,d Rotaciona f 1 para direita. SUBWF f,d Subtrai W de f (f - W ), guardando o resultado em d. SWAPF f,d Executa uma inversão entre as partes alta e baixa de f, guardando o resultado em d. XORWF f,d Lógica "OU exclusivo "entre W e f, guardando o resultado em d. Operações com Literais Instrução Argumentos Descrição ADDLW k Soma k com W, guardando o resultado em W. ANDLW k Lógica "E "entre k e W, guardando o resultado em W. IORLW k Lógica "OU" entre k e W, guardando o resultado em W. MOVLW k Move k para W. SUBLW k Subtrai W de k(k - W), guardando o resultado em W. XORLW k Lógica "OU exclusivo" entre k e W, guardando o resultado em W. Operações com s Instrução Argumentos Descrição BCF f,b Impõe 0(zero) ao b do registrador f. BSF f,b Impõe 1(um) ao b do registrador f. BTFSC f,b Testa o b do registrador, e pula a próxima linha se ele for 0 (zero ). BTFSS f,b Testa o b do registrador, e pula a próxima linha se ele for 1 (um ). Controles Instrução Argumentos Descrição CLRW Limpa W. NOP Gasta um ciclo de máquina sem fazer nada. CALL R Executa a rotina R. CLRWDT Limpa o registrador WDT para não acontecer o reset. GOTO R Desvia para o ponto R, mudando o PC. RETFIE Retorna de uma interrupção. RETLW k Retorna de uma rotina, com k em W. RETURN Retorna de uma rotina, sem afetar W. SLEEP Coloca o PIC em módulo Sleep( dormindo) para economia de energia. PIC Primeiros Passos Carlos Henrique Monteiro Página 7

Algumas Dicas sobre as Funções Tudo o que está escrito abaixo é baseado na prática. Instruções muito usadas em Loopings: goto call return decfsz clrwdt incfsz nop movwf movlw Instruções usadas em leitura de chaves: btfsc btfss nop Instruções usadas no cabeçalho: movlw movwf bcf bsf clrw retfie Mas, e estas letrinhas f, k, W, d, R, b o que significam? f ->é um registro que deve estar definido no campo do cabeçalho onde colocamos as variáveis. Deve ter o valor entre 0 a 127 decimal. k ->é normalmente, um valor que será carregado, normalmente de novo, no registrador de trabalho W. É um número entre 0 a 255 decimal. Pode ser chamada de constante. W ->é o registrador de trabalho, tudo ou quase tudo, que o PIC faz passar por ele. d ->o d pode ser colocado ou não, se for colocado, o resultado será salvo nele, mas se não for colocado o resultado será salvo em f. Ele especifica o destino do resultado da instrução: Se d = 0 o resultado é gravado em W; Se d = 1 o resultado é gravado no registrador indicado na operação, ou seja, f. Se não for colocado o padrão será 1, ou seja, o resultado será gravado no registrador f da operação em W. R ->é um nome que você dará há uma rotina ou a uma parte do programa. Usado com goto e call. b -> o b define um de um determinado registrador e você precisa usá-lo para que as instruções que o antecedem funcionem corretamente. Deve se um número entre 0 a 7 decimal. PIC Primeiros Passos Carlos Henrique Monteiro Página 8

Observações: Os números estão indicados em decimal, mas, podem ser em binário ou hexadecimal, basta estarem dentro dos valores apropriados. Depois de cada instrução, devemos usar o ponto e vírgula (;) para separá-lo dos comentários. E vamos começar isto logo. Os comentários ajudam. EXEMPLO DE PROGRAMA PARA ACENDER UM LED COM PIC LIGA NA PORTA RA4: PROCESSOR 16F84 ;INDICANDO QUE O PROCESSADOR A SER USADO SERÁ O PIC 16F84A #INCLUDE <P16F84A.INC> ;PARA CARREGAR A BIBLIOTECA DO REFERIDO PIC ;SETANDO QUAIS PINOS SERAO ENTRADAS E SAÍDAS BSF STATUS,5 ;MUDA PARA BANCO 1 MOVLW B'00000000' ; MOVE SEQUÊNCIA BINÁRIA PARA W: TODOS OS BITS COMO 0 MOVWF TRISA ;MOVE CONTEÚDO DE W PARA REGISTRADOR TRISA MOVLW B'00000000' ; MOVE SEQUÊNCIA BINÁRIA PARA W: TODOS OS BITS COMO 0 MOVWF TRISB ; MOVE CONTEÚDO DE W PARA REGISTRADOR TRISB BCF STATUS,5 ;VOLTA PARA BANCO 0 ;INICIO DO PROGRAMA BSF PORTA,4 ;LIGA PORTA RA4 ;FIM DO PROGRAMA END AGORA ACENDER O LED APENAS SE A CHAVE LIGADA NA PORTA RB1 FOR PRESSIONADA: PROCESSOR 16F84 ;INDICANDO QUE O PROCESSADOR A SER USADO SERÁ O PIC 16F84A #INCLUDE <P16F84A.INC> ;PARA CARREGAR A BIBLIOTECA DO REFERIDO PIC ;SETANDO QUAIS PINOS SERAO ENTRADAS E SAÍDAS BSF STATUS,5 ;MUDA PARA BANCO 1 MOVLW B'00000000' ; MOVE SEQUÊNCIA BINÁRIA PARA W: TODOS OS BITS COMO 0 MOVWF TRISA ;MOVE CONTEÚDO DE W PARA REGISTRADOR TRISA MOVLW B'00000010' ; MOVE SEQUÊNCIA BINÁRIA PARA W: 00000010 MOVWF TRISB ; MOVE CONTEÚDO DE W PARA REGISTRADOR TRISB BCF STATUS,5 ;VOLTA PARA BANCO 0 ;INICIO DO PROGRAMA INICIO BTFSS PORTB,1 ;VERIFICA SE PORTA RB1 ESTA EM 1, SE ESTIVER PULA PROXIMA GOTO INICIO ;VAI PARA A PALAVRA INICIO BSF PORTA,4 ;LIGA PORTA RA4 ;FIM DO PROGRAMA END PIC Primeiros Passos Carlos Henrique Monteiro Página 9

AGORA ACENDER O LED SE A CHAVE LIGADA NA PORTA RB1 FOR PRESSIONADA E DESLIGAR SE A CHAVE FOR DESLIGADA: PROCESSOR 16F84 ;INDICANDO QUE O PROCESSADOR A SER USADO SERÁ O PIC 16F84A #INCLUDE <P16F84A.INC> ;PARA CARREGAR A BIBLIOTECA DO REFERIDO PIC ;SETANDO QUAIS PINOS SERAO ENTRADAS E SAÍDAS BSF STATUS,5 ;MUDA PARA BANCO 1 MOVLW B'00000000' ; MOVE SEQUÊNCIA BINÁRIA PARA W: TODOS OS BITS COMO 0 MOVWF TRISA ;MOVE CONTEÚDO DE W PARA REGISTRADOR TRISA MOVLW B'00000010' ; MOVE SEQUÊNCIA BINÁRIA PARA W 00000010 MOVWF TRISB ; MOVE CONTEÚDO DE W PARA REGISTRADOR TRISB BCF STATUS,5 ;VOLTA PARA BANCO 0 ;INICIO DO PROGRAMA INICIO BTFSS PORTB,1 ;VERIFICA SE PORTA RB1 ESTA EM 1, SE ESTIVER PULA PROXIMA GOTO DESLIGA ;VAI PARA A PALAVRA DESLIGA BSF PORTA,4 ;LIGA PORTA RA4 GOTO INICIO ;VAI PARA A PALAVRA INICIO DESLIGA BCF PORTA,4 ;DESLIGA PORTA RA4 GOTO INICIO ;VAI PARA A PALAVRA INICIO ;FIM DO PROGRAMA END Variáveis As variáveis são nomes que podemos dar a registros de uso geral. Também podemos dar nomes a portas ou s das variáveis, estes são chamados defines. Lembrando que os registros do PIC são de 8s, logo o maior número que pode ser armazenado nesses registros é 255. Para criarmos uma variável, basta escolher um nome que não comece com numero nem caracter especial, seguido da diretiva equ e em seguida o endereço desta variável. Exemplo TEMPO EQU 0CH Para saber quais endereços podemos usar para as variáveis devemos olhar no datasheet e procurar pelos endereços para uso geral. Que no caso do 16F84A vão de 0CH a 4FH. PIC Primeiros Passos Carlos Henrique Monteiro Página 10

Definições de nomes Já os nomes de portas ou s ou até mesmo números são criados pelo comando #DEFINE, seguido pelo nome que se quer dar e em seguida o objeto que se quer nomear: #DEFINE LED PORTB,0 As variáveis e defines devem sempre ficar no início do programa. Rotinas de tempo As rotinas de tempo servem para contagem de tempo, e para criá-las a primeira coisa a se saber é qual será o oscilador a ser usado e sua frequência. Suponhamos que usaremos um cristal como oscilador de 4MHZ. Sabemos que o PIC faz seus ciclos internos em 4 tarefas, então podemos dizer que cada ciclo é feito em ¼ da frequência externa. Então usando um cristal de 4 MHZ, cada ciclo será de 1MHZ, ou seja, 1us(micro segundo). Assim podemos prender o pic em uma contagem de tempo que demore o tempo que precisarmos. O único problema desta forma de rotina de tempo é que o PIC fica preso a rotina, não conseguindo fazer mais nada enquanto espera o tempo da contagem terminar. Vamos então fazer uma rotina de tempo que demore 1ms(milissegundo = 1000us).... TEMPO EQU 0CH ;VARIÁVEL COM NOME TEMPO... CALL ROTMILI ;CHAMA A SUBROTINA TEMPO... ROTIMILLI MOVLW.250 ;MOVE O NUMERO DECIMAL 250 PARA W MOVWF TEMPO ;MOVE O QUE ESTIVER NO W PARA A VARIÁVEL TEMPO DL1 NOP ;ESTE COMANDO NÃO FAZ NADA, APENAS GASTA 1 CICLO DE MÁQUINA DECFSZ TEMPO,F ;DECREMENTA A VARIAVEL TEMPO E GUARDA O RESULTADO NO MESMO LUGAR GOTO DL1 ; SE A VARIÁVEL FOR 0, PULA ESTA INSTRUÇÃO SE FOR MAIOR QUE 0 VOLTA PARA DL1 RETURN ;VOLTA AO PONTO QUE A SUBROTINA FOI CHAMADA Então temos 1 ciclo para NOP, 1 Ciclo para DECFSZ e 2 ciclos para GOTO, então teremos 4 ciclos X 250 = 1000 ciclos. Ou seja, 1000 us = 1ms. Se chamarmos esta rotina 1000 vezes, teremos 1 segundo e por aí vai. Só devemos levar em conta que toda vez que utilizamos o comando CALL, o PIC guarda o local onde este comando foi chamado para poder voltar assim que encontrar o comando RETURN, e ele vai empilhando estes endereços que ele guarda. Porém ele se consegue empilhar 8 endereços se passar disto ocorre um estouro de pilha e o programa para. PIC Primeiros Passos Carlos Henrique Monteiro Página 11

Exemplo de programa com variáveis, defines e contagem de tempo Vamos fazer um programa de pisca-pisca, um led ligado a porta RA4 vai ficar piscando com intervalos de 1s. PROCESSOR 16F84 ;INDICANDO QUE O PROCESSADOR A SER USADO SERÁ O PIC 16F84A #INCLUDE <P16F84A.INC> ;PARA CARREGAR A BIBLIOTECA DO REFERIDO PIC ;VARIÁVEIS SEG2 EQU 0CH SEG EQU 1CH MILI EQU 2CH ;DEFINIÇÕES DE NOMES #DEFINE LED PORTA,4 ;SETANDO QUAIS PINOS SERAO ENTRADAS E SAÍDAS BSF STATUS,5 ;MUDA PARA BANCO 1 MOVLW B'00000000' ; MOVE SEQUÊNCIA BINÁRIA PARA W: TODOS OS BITS COMO 0 MOVWF TRISA ;MOVE CONTEÚDO DE W PARA REGISTRADOR TRISA MOVLW B'00000000' ; MOVE SEQUÊNCIA BINÁRIA PARA W: TODOS OS BITS COMO 0 MOVWF TRISB ; MOVE CONTEÚDO DE W PARA REGISTRADOR TRISB BCF STATUS,5 ;VOLTA PARA BANCO 0 ;LOOP INICIAL INICIO BSF LED ;SETA PORTA,4 CALL ROTSEG ;CHAMA SUBROTINA ROTSEG BCF LED ;LIMPA PORTA,4 CALL ROTSEG ;CHAMA SUBROTINA ROTSEG GOTO INICIO ;VOLTA PARA INICIO ;ROTINA 1 SEGUNDO ROTSEG MOVLW.5 ;COLOCA 5 NO REGISTRO W MOVWF SEG2 ;CARREGA W NA VARIÁVEL SEG2 LASEG2 CALL ROTSEG200 ;CHAMA SUBROTINA ROTSEG200 DECFSZ SEG2,F ;DECREMENTA SEG2 ATÉ CHEGAR EM 0 GOTO LASEG2 ;VOLTA AO PONTO LASEG2 ENQUANTO SEG2 NÃO FOR 0 RETURN ;SAI DA SUBROTINA ROTSEG E VOLTA AO PONTO ONDE FOI CHAMADA ROTSEG200 MOVLW.200 ;COLOCA 200 NO REGISTRO W MOVWF SEG ;CARREGA W NA VARIÁVEL SEG LASEG CALL ROTMILI ;CHAMA A SUBROTINA ROTMILI E AGUARDA ATÉ ELA ACABAR DECFSZ SEG,F ;DECREMENTA SEG ATÉ CHEGAR EM 0 GOTO LASEG ;VOLTA AO PONTO LASEG ENQUANTO NÃO FOR 0 RETURN ;SAI DA SUB ROTINA SEG ;ROTINA 1 MILISSEGUNDO ROTMILI MOVLW.250 ;COLOCA 250 NO REGISTRO W MOVWF MILI ;CARREGA W NA VARIÁVEL MILI DL1 NOP ;NÃO OPERA DECFSZ MILI, F ;DECREMENTA MILI ATÉ CHEGAR EM 0 GOTO DL1 ; VOLTA AO PONTO DL1 ENQUANTO NÃO FOR 0 RETURN END ; SAI DA SUBROTINA MILI E VOLTA AO PONTO ONDE FOI CHAMADA PIC Primeiros Passos Carlos Henrique Monteiro Página 12