Este documento fornece uma introdução aos microcontroladores PIC. Resume os principais conceitos sobre PICs, incluindo sua arquitetura Harvard, características do PIC16F84, organização de memória e registradores. Também discute brevemente a diferença entre arquiteturas CISC e RISC.
1. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Curso de Introdução ao
Microcontrolador PIC
Microchip
Carlos Alberto Cunha
2. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Pré-requisitos: Conhecimentos básicos em Eletrônica Digital e Analógica
Abordagem:
Conceitos básicos
A pergunta que não quer calar: PIC ou 8051?
Arquitetura Harvard RISC x CISC
O PIC16F84:
Características, Pinagem
Organização das memórias:
Memória de programa, Memória de dados
Vetores, Pilha (Stack), Registradores
Introdução às Interrupções
Bits de Configuração, Circuitos de Clock e Reset
Introdução ao Assembler do PIC - SET de Instruções
Introdução ao MPLAB
3. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Conceitos:
Microcontrolador: É um computador dentro de um circuito integrado. Devido à
evolução tecnológica e à miniaturização é possível integrar num único chip todos os
componentes de um computador. Podemos defini-lo como um chip dotado de uma
“inteligência programável”, embora seja limitada a quantidade de informações e
instruções que pode executar, normalmente as limitações de aplicações são limitações
da imaginação, criatividade e experiência do projetista e programador.
Microprocessador x Microcontrolador: Um microprocessador é um circuito muito
complexo, em forma de circuito integrado, que pode conter entre alguns milhares (Z80)
até 7 milhões de transistores (Pentium II), constituindo os mais diversos circuitos
lógicos. O microcontrolador integra num único componente os três elementos
principais na arquitetura de um computador: CPU, memória e I/O.
I/O: Pinos físicos de entrada ou saída de dados para ou proveniente do mundo
exterior, podem ser digitais ou analógicas.
Memória: Registros físicos onde são armazenados os dados e programas, os
microcontroladores normalmente possuem duas: Memória de dados e Memória de
programa, alguns microcontroladores possuem ainda EEPROM.
4. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
A pergunta que não quer calar: PIC ou 8051?
Todo iniciante na programação de microcontroladores enfrenta um dilema na escolha
de uma linha para adoção e dedicação, há defensores ferrenhos de todos os lados: 8051, PIC,
AVR, COP, Hitachi e muitos outros.
É necessário admitir que a linha base da Microchip PIC (Linhas 12, 16 e 17)
apresentam algumas limitações em relação ao 8051 devido ao número reduzido de instruções, por
exemplo, operações aritméticas de multiplicação e divisão não estão contempladas no SET de
instruções do PIC, caso se necessite dessas operações, elas deverão ser implementadas através de
algoritmos e sub-rotinas.
Contudo podemos apontar algumas vantagens da família Microchip:
Utiliza Arquitetura Harvard - Memória e Barramentos separados para dados e programas.
Registradores de propósitos gerais, conectados diretamente a ULA.
Timer/counters flexíveis, com prescaler e modos de comparação.
Interrupções internas e externas.
Watchdog Timer programável com oscilador interno.
Instruções executadas em dois estágios de pipeline, enquanto uma instrução está sendo
executada, o pre-fetch da próxima instrução na memória de programas é realizado.
Todas as instruções são single word.
Bastante flexibilidade na configuração das I/Os e pinos com funções multiplexadas.
5. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Arquitetura Harvard RISC x CISC
CISC (Complex Instruction Set Computers)
RISC (Reduced Instruction Set Computers)
Um CISC tende a ter um grande número de instruções, cada uma executando uma
permutação diferente da mesma operação.
Um RISC tem um número mínimo de instruções que permite ao utilizador desenhar as
suas próprias instruções, em vez de usar as que o desenhador do processador oferece.
Como resultado de um pedido do governo dos EUA, as Universidades de Princeton e de Harvard
criaram arquiteturas de computadores para serem usadas no cálculo das tabelas de artilharia
naval.
CISC - Arquitetura de Princeton (Von Neumann)
Em 1945 Von Neumann estabeleceu as bases para a construção de computadores.
Desenhou uma máquina em que existia uma unidade de controle, capaz de decodificar um
conjunto de instruções. Um processador que realiza as operações que as instruções implicam. Um
bloco de memória para guardar as instruções dos programas e dos dados. Uma unidade de
interface de memória que é responsável pela gestão do acesso à memória. Um último bloco
permitia a transferência de informação aos periféricos exteriores.
6. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
A vantagem é a simplicidade de acesso à memória. Possui um barramento único para
acessar a memória (endereços, dados e controle)
O grande inconveniente é o fato de a memória de programa e de dados serem comuns,
pois impede que se possa acessar ao programa e aos dados simultaneamente e muitas vezes o
tamanho dos dados é diferente do tamanho das instruções.
CPU
Memory
(Program
& Data)
RISC - Arquitetura de Harvard
Existem duas memórias diferentes e independentes, uma para as instruções e outra
para os dados. Isto permite realizar acessos simultâneos a ambas as memórias. Esta arquitetura
tende a executar as instruções em menos ciclos de relógio, melhorando a taxa de uso dos
barramentos. As duas memórias podem também ter palavras de comprimento diferentes. No caso
do PIC16F84 a memória de programa é Flash e possui 1024 posições de 14 bits cada. A memória
de dados tem uma capacidade muito menor e um tamanho típico de 8 bits.
Memory
(Data)
CPU
Memory
(Program)
7. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Princenton x Harvard
8. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Pipeline de instruções em dois estágios:
Fase de busca (fetch) – Procura-se o código binário da instrução na memória do
programa.
Fase de execução – Interpreta-se o código, buscam-se os operandos e executa-se a
operação.
Enquanto executa a fase de execução de uma instrução, executa a fase de busca da instrução
seguinte. Cada uma das fases é realizada em 4 ciclos de relógio, porém as instruções de
salto demoram 8 ciclos de relógio.
Desta forma consegue-se executar cada instrução em quatro ciclos de relógio.
Em um PIC16F84 a 4Mhz, o período de um ciclo de clock é (1/4.000.000) = 0.25us, logo, o
tempo de execução de uma instrução comum é 4*0.25us = 1us e de uma instrução com salto é
8*0.25us = 2us.
Pipeline de instruções sobrepõe no tempo a busca e a execução de instruções, fazendo com que a
execução destas seja em “single cicle”.
9. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Relação entre o sinal de clock e o ciclo de instrução:
Exemplo de execução de uma instrução:
10. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
O PIC16F84
Fabricado com a tecnologia CMOS
Capaz de trabalhar até 10 Mhz. PIC16F84A Capaz de trabalhar até 20 Mhz
Pequeno, só tem 18 pernas devido à multiplexação de função dos pinos.
Barato. O PIC16F84A custa aproximadamente R$7,00.
Memória de programa de 1K palavras de 14 bits FLASH, em que em cada uma cabe uma
instrução. Pode ser regravada cerca de 10.000 vezes com toda a segurança
Memória de dados RAM de 68 Bytes
Memória de dados EEPROM de 64 Bytes, não volátil
8 níveis de stack (pilha)
35 instruções de 14 bits
Tempo de execução das instruções normais: 4xTosc
Tempo de execução das instruções de salto: 8xTosc
4 tipos de interrupções (External RB0/INT pin, TMR0 timer overflow, PORTB<7:4>
interrupt-on-change, Data EEPROM write complete)
13 linhas de entradas/saída digitais
1 timer
1 watch-dog
Alimentação de 2V a 6 V
Gravação de 12V a 14V
Encapsulamento DIP de 18 pernas (SOIC)
Proteção de código , SLEEP, PWRT
11. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Pinagem do PIC16F84
RA0-RA4 – PORTA
RB0-RB7 – PORTB
MCLR – Master Clear
OSC1/CLKIN – Conexão do oscilador
externo ou entrada de clock
OSC2/CLKOUT – Conexaõ do oscilador
externo ou saída de clock
RA4/TOCKI – I/O RA4 ou entrada de
clock externo para contador TMR0.
RB0/INT – I/O RB0 ou entrada para
interrupção externa
VDD – Alimentação +5V (2-6V)
VSS – Terra do CI
12. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Arquitetura do PIC16F84
13. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Organização da memória de programa do PIC 16F84
O PIC16F84 dispõe de um contador de programa
com 13 bits capaz de endereçar 8K posições de
memória de 14 bits. Neste µC só se encontra
implementado 1K com endereços de 0000h a 03FFh.
A estrutura de stack apresenta um máximo de 8
níveis o que impõe uma limitação em termos de
chamadas a subrotinas dentro de outras subrotinas.
O vetor de reset corresponde à posição de memória
0000h enquanto que o vetor de interrupção se
encontra na posição 0004h.
14. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Organização da memória de dados do PIC 16F84
A memória de dados do 16F84 encontra-se dividida
em duas áreas. A primeira é a área correspondente aos
Registros de Função Especial (SFR) enquanto que a
segunda diz respeito aos Registros de Uso Geral. Os
SFRs são utilizados para o controle do µC.
Uma das particularidades desta memória é a sua
divisão em dois Bancos (Banco 0 e Banco 1) sendo o
acesso a cada um destes bancos controlado a partir do
bit 5 do registro STATUS (RP0).
No que diz respeito aos registros de uso geral, o
banco 1 destes registos encontra-se mapeado no banco
0 o que quer dizer que qualquer acesso ao banco 1 é
feito na realidade sobre o banco 0.
15. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Registros de Uso Geral
Cada registro de uso geral tem uma largura de 8 bits e pode ser acedido diretamente ou
indiretamente através do registro FSR (ver mais à frente).
Registros de Função Especial
Os Registros de Função Especial são utilizados pelo CPU e pelos periféricos para o controle do
µC. Estes registros são implementados em RAM estática.
16. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
17. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Registro STATUS
O registro STATUS contém as flags ligadas à ALU, os flags de RESET e os bits de seleção
do banco da memória de dados.
18. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Registro OPTION_REG
Trata-se de um registro que permite escrita e leitura e que contém vários bits de controle para a
configuração do divisor de frequência (prescaler) do TMR0 / WDT, da interrupção externa
INT, do TMR0 e das polarizações (pull-ups) do PORTB.
19. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Registro INTCON
O registro INTCON contém os diferentes bits que permitem configurar o sistema de interrupções
(enable /disable) e os flags de pedido de interrupção. Este registro pode ser lido ou escrito.
20. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Registros PCL e PCLATH
O contador de programa (PC) especifica o endereço da instrução a ser pesquisada (‘fetch’) da
memória de programa para ser executada. No PIC16F84 o PC tem uma largura de 13 bits,
estando os 8 bits menos significativos no registro PCL. Este registro pode ser lido ou escrito por
software. O byte mais significativo do PC é designado por PCH e contém os bits 12:8 do
contador de programa. Este registro não pode ser escrito ou lido diretamente. Todas as operações
que seja necessário efetuar sobre ele são feitas indiretamente sobre o registro PCLATH.
STACK
A estrutura de Pilha (stack) implementada no PIC16F84 permite a ocorrência de combinações de
até 8 chamadas de subrotinas ou interrupções, permitindo armazenar os respectivos endereços de
retorno. A utilização desta estrutura é da exclusiva responsabilidade da unidade de controle do
µC, não havendo por isso qualquer instrução de software que a permita manipular. Como possui
8 níveis de profundidade (8 deep level Stack), significa que se forem chamadas 8 subrotinas uma
dentro da outra, a chamada de uma nona subrotina fará com que o endereço de retorno da
primeira seja definitivamente perdida (memória tipo FILO).
21. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Endereçamento indireto: registros INDF e FSR
O registro INDF (endereço 00h / 80H) não é um registro físico. O acesso a este registro (leitura
ou escrita) conduz realmente ao registro cujo endereço se encontra no registro FSR. Este último
registro é o ponteiro para as operações com endereçamento indireto.
22. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Periféricos de Interfaceamento
Timers/Counters;
Watchdog timers (WDT);
On-chip Oscillator Start-up Timer (OST)/ Power-up Timer (PWRT)
Portas paralelas
Coversores A/D
Módulos CCP (Capture/Compare/PWM)
Módulos I2C
Módulos SSP (Synchronous serial port)
Addressable USART
Conversor A/D
23. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Temporizador / Contador TMR0
O periférico TMR0 apresenta as seguintes características principais:
• Funções de temporizador ou contador de 8 bits
• Possibilidade de leitura e de escrita do registro
• Possibilidade de seleção de relógio interno ou externo
• Divisor de freqüência de 8 bits programável por software (Prescaler)
• Permite gerar uma interrupção quando ocorrer um overflow (passagem de FFh a 00h)
O Timer0 pode funcionar como temporizador ou como contador. A seleção do modo de
funcionamento é feita através do bit T0CS ( Timer0 Clock Sourse, bit 5 do OPTION_REG).
No modo temporizador, T0CS=0, o registro TMR0 incrementa em cada ciclo de instrução
desde que não seja utilizado o Prescaler (divisor de freqüência).
No modo contador, T0CS=1, o registro TMR0 incrementa em cada borda de subida ou de
descida do sinal presente no pino exterior RA4/T0CKI. O bit T0SE (Timer0 Source Edge, bit 4
do OPTION_REG), determina se será na borda de subida ou descida: T0SE=0 TOSE=1
24. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Prescaler
O prescaler é um divisor de freqüência programável e é constituído por um contador de 8 bits
associado a um multiplexador de 8÷1, como se mostra na figura 16. Este prescaler é partilhado
pelo Timer0 e pelo Watchdog Timer, não podendo contudo ser usado simultaneamente pelos dois
periféricos. Sendo assim, a atribuição do prescaler ao Timer0 significa que o Watchdog Timer
funciona sem prescaler, e vice-versa.
25. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Watchdog Timer (WDT)
WDT permite a recuperação funcional da CPU em caso de perda do fluxo de execução (ex.
loops infinitos)
Overflow do WDT reseta o chip
O temporizador Watchdog é constituído por um oscilador interno RC, não necessitando de
quaisquer outros componentes externos. Este oscilador é totalmente independente do
oscilador do µC. Isto quer dizer que, mesmo que o oscilador principal não funcione (por
exemplo no caso do µC se encontrar no estado de SLEEP), o WDT continuará em
funcionamento.
26. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Portas de I/O
Alguns dos pinos das portas de I/O apresentam funções alternativas (Multiplexadas) para a
utilização com alguns periféricos do µC. Geralmente, quando essas funções são utilizadas, o
respectivo bit não pode ser utilizado como I/O.
PORTA e TRISA
O registro PORTA implementa uma porta de I/O bidirecional com 5 bits, estando ligado aos
pinos exteriores do µC, RA0:RA4. O registro onde se define, para cada bit, se se trata de entrada
ou saída de dados é o TRISA.
Colocando um bit do registro TRISA a 1 permite programar o respectivo bit do PORTA como
entrada de dados. A escrita de um 0 num bit do registro TRISA programa o respectivo bit do
PORTA como saída de dados. Após uma operação de reset, qualquer um dos bits de I/O fica
programado como entrada de dados.
A leitura do registro PORTA permite fazer a leitura do estado dos pinos exteriores enquanto
que uma operação de escrita sobre o mesmo registro coloca os valores de escrita nas ‘Data
Latch’ de saída.
27. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
RA0 – RA3 RA4
Exemplo de Configuração da PORTA
clrf PORTA ;Zera o ‘Data Latch’ da PORTA
bsf STATUS,RP0 ;Muda para o banco 1
movlw b’00011100’ ;Configura pinos RA0 e RA1 como saídas
movwf TRISA ;e RA2, RA3 e RA4 como entradas
bcf STATUS,RP0 ;Volta para o banco 0
28. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
PORTB e TRISB
PORTB é uma porta bidirecional de 8 bits que, como acontece com o PORTA, dispõe também de
um registro TRISB para a configuração dos bits como entrada ou saída de dados.
Cada um dos bits do PORTB dispõe de um pull-up interno que é controlado pelo bit 7 do
registro OPTION (RBPU). Quando este bit é igual a 0, todos os pull-ups estão ativados. A
configuração de um bit como saída de dados provoca automaticamente a desativação do
respectivo pull-up. Quando é feito o power-on reset, os pull-ups são desativados.
Quatro dos bits do PORTB, RB7:RB4, permitem gerar uma interrupção sempre que há uma
mudança de estado em qualquer um deles, desde que estejam programados como entrada de
dados. Os bits de entrada são permanentemente comparados com o último valor lido.
Desde que seja encontrada uma diferença em qualquer um desses bits, é ativado o flag RBIF
de pedido de interrupção.
29. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
RB0 – RB3 RB4 – RB7
Exemplo de Configuração da PORTB
clrf PORTB ;Zera o ‘Data Latch’ do PORTB
bsf STATUS,RP0 ;Muda para o banco 1
movlw b’11110000’ ;Configura pinos RB0 a RB3 como saídas
movwf TRISA ;e RA4 a RA7 como entradas
bcf STATUS,RP0 ;Volta para o banco 0
30. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Modo SLEEP
Execução da instrução Sleep;
A CPU entra no modo de Power down;
Consumo de 60uA (7mA operação normal)
Características:
WDT é resetado, mas continua operando;
Bit PD é sinalizado (Status Register);
Oscilador interno é desligado;
TMR0 desligado
Modos de saída do estado sleep:
Reset externo (MCLR);
Time-out do WDT;
Interrupção externa (RB0/INT);
Interrupção de fim de escrita na EEPROM
31. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Interrupções
O PIC16F84A dispõe de um único nível de interrupção com 4 fontes de interrupção:
Interrupção externa através do pino RB0/INT
Interrupção provocada pelo overflow do TMR0
Interrupção provocada pela mudança de estado do PORTB (RB7:RB4)
Interrupção provocada pelo fim da operação de escrita na E2PROM de dados
O registro de controle das interrupções (INTCON) contém as diferentes flags de pedido de
interrupção e os bits que permitem ativar ou desativar individualmente ou globalmente as
diferentes interrupções.
Na situação de reset, todos os bits correspondentes à autorização individual ou global das
interrupções encontram-se desativados (T0IE = INTE = RBIE = EEIE = GIE = 0).
Quando o µC responde a um pedido de interrupção, o bit GIE é colocado em 0 para não
permitir mais nenhuma interrupção, o endereço de retorno é colocado na stack e o PC é
carregado com o valor 0004h que é o vetor de interrupção para este µC.
A rotina de serviço de qualquer interrupção deve terminar sempre com a instrução RETFIE
(RETurn From Interrupt Enable) que, além de fazer o sistema retornar ao programa no local
onde se verificou a interrupção, coloca também GIE = 1 permitindo de novo o acesso dos
periféricos às interrupções.
32. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Gerador de relógio – oscilador
O circuito do oscilador é usado para fornecer um relógio (clock), ao microcontrolador. O clock é
necessário para que o microcontrolador possa executar um programa ou as instruções de um
programa.
Tipos de osciladores
O PIC16F84 pode trabalhar com quatro configurações de oscilador. Uma vez que as
configurações com um oscilador de cristal e circuito RC são as mais freqüentemente usadas, elas
são as únicas que vamos mencionar aqui.
Quando o oscilador é de cristal, a designação da configuração é de XT, se o oscilador for
constituído apenas por uma associação em série de um resistor e um capacitor, tem a designação
RC. Isto é importante, porque há necessidade de se optar entre os diversos tipos de oscilador,
quando se escolhe um microcontrolador, e no caso do PIC essa opção é configurada via software.
Oscilador XT
O oscilador de cristal está contido num envólucro de metal com dois pinos onde foi escrita a
frequência a que o cristal oscila. Dois capacitores cerâmicos devem ligar cada um dos pinos do
cristal à massa. Quando o cristal e os capacitores estão contidos no mesmo encapsulamento, é
chamado de ressonador cerâmico. Este elemento tem três pinos com o pino central ligado à
massa e os outros dois pinos ligados aos pinos OSC1 e OSC2 do microcontrolador.
33. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Reset
O reset é usado para pôr o microcontrolador num estado conhecido. Na prática isto significa
que às vezes o microcontrolador pode comportar-se de um modo inadequado em determinadas
condições indesejáveis. A fim de que o seu funcionamento normal seja reestabelecido, é preciso
fazer o reset do microcontrolador, isto significa que todos os seus registos vão conter valores
iniciais pré-definidos, correspondentes a uma posição inicial. O reset não é usado somente
quando o microcontrolador não se comporta da maneira que nós queremos, mas, também pode
ser usado, quando ocorre uma interrupção por parte de outro dispositivo, ou quando se quer que o
microcontrolador esteja pronto para executar um programa .
O microcontrolador PIC16F84, admite várias formas de reset:
a) Reset quando se liga a alimentação, POR (Power-On Reset)
b) Reset durante o regime de SLEEP (dormir).
c) Reset durante o funcionamento normal, quando se põe a nível lógico baixo o pino MCLR .
d) Reset quando o temporizador do watchdog (WDT) transborda (passa para 0 depois de atingir o
valor máximo).
e) Reset quando o temporizador do watchdog (WDT) transborda estando no regime de SLEEP.
34. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Oscilador RC
Em aplicações em que a precisão da temporização não é um fator crítico, o oscilador RC torna-se
mais econômico. A frequência de ressonância do oscilador RC depende da tensão de
alimentação, dos valores de RC e da temperatura de funcionamento.
35. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Set de instruções Completo
36. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Sintaxe Descrição Microchip Operação equivalente
ADDLW k Add Literal and W W = W + k
ADDWF f,d Add W and f d = W + f (onde d pode ser W ou f)
ANDLW k AND Literal with W W = W AND k
ANDWF f,d AND W with f d = W AND f (onde d pode ser W ou f)
BCF f,b Bit Clear f f(b) = 0
BSF f,b Bit Set f f(b) = 1
BTFSC f,b Bit Test f, Skip if Clear f(b) = 0 ? Se é, salta uma instrução
BTFSS f,b Bit Test f, skip if Set f(b) = 1 ? Se é, salta uma instrução
CALL k Subroutine Call Chamada a uma subrotina no endereço k
CLRF f Clear f f = 0
CLRW Clear W Register W = 0
CLRWDT Clear Watchdog Timer Watchdog timer = 0
COMF f,d Complement f d = not f (onde d pode ser W ou f)
DECF f,d Decrement f d = f -1 (onde d pode ser W ou f)
DECFSZ f,d Decrement f, Skip if 0 d = f -1 (onde d pode ser W ou f) se d = 0 salta
37. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Sintaxe Descrição Microchip Operação equivalente
GOTO k Go to address salta para o endereço k
INCF f,d Increment f d = f +1 (onde d pode ser W ou f)
INCFSZ f,d Increment f, Skip if 0 d = f +1 (onde d pode ser W ou f) se d = 0 salta
IORLW k Inclusive OR Literal with W W = W OR k
IORWF f,d Inclusive OR W with f d = f OR W (onde d pode ser W ou f)
MOVLW k Move literal to W W = k
MOVF f,d Move f d = f (onde d pode ser W ou f)
MOVWF f Move W to f f = W
NOP No Operation Nenhuma operação
OPTION Load Option Register OPTION = W
RETFIE Return from Interrupt Retorna de uma interrupt handler
RETLW k Return Literal to W Retorna de uma subrotina com W = k
RETURN Return from Subroutine Retorna de uma subrotina
RLF f,d Rotale Left f through Carry d = f << 1 (onde d pode ser W ou f)
RRF f,d Rotale Right f through Carry d = f >> 1 (onde d pode ser W o f)
38. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Sintaxe Descrição Microchip Operação equivalente
SLEEP Go into Standby Mode Coloca o PIC em standby
SUBLW k Subtract W from Literal W = k - W
SUBWF f,d Subtract W from f d = f - W (onde d pode ser W ou f)
SWAPF f Swap f f = Swap do bit 0123 com 4567 de f
TRIS f Load TRIS Register TRIS di f = W
XORLW k Exclusive OR Literal with W W = W XOR k
XORWF f,d Exclusive OR W with f d = f XOR W (onde d pode ser W ou f)
39. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - ADDLWInstruções - ADDLW
ADDLW Soma um literal a W
Sintaxe: [label] ADDLW k
Operandos: 0 k 255
Operação: : (W) + (k)==> (W)
Flags afectadas: C, DC, Z
Código OP: 11 111x kkkk kkkk
Descrição: Soma o conteúdo do registo W e k, guardando o resultado em
W.
Exemplo: ADDLW 0xC2
Antes: W = 0x17
Depois: W = 0xD9
40. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - ADDWFInstruções - ADDWF
ADDWF W + F
Sintaxe: [label] ADDWF f,d
Operandos: d [0,1], 0 f 127
Operação: (W) + (f) ==> (dest)
Flags afectadas: C, DC, Z
Código OP: 00 0111 dfff ffff
Descrição: Soma o conteúdo do registo W com o registo f. Se d é 0, o
resultado armazena-se em W, Se d é 1 armazena-se em f.
Exemplo: ADDWF REG,0
Antes: W = 0x17, REG = 0xC2
Depois: W = 0xD9, REG = 0xC2
41. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - ANDLWInstruções - ANDLW
ANDLW W AND literal
Sintaxe: [label] ANDLW k
Operandos: 0 k 255
Operação: : (W) AND (k)==> (W)
Flags afectadas: Z
Código OP: 11 1001 kkkk kkkk
Descrição: Realiza a operação lógica AND entre o conteúdo do registo W
e k, guardando o resultado em W.
Exemplo: ADDLW 0xC2
Antes: W = 0x17
Depois: W = 0xD9
42. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - BCFInstruções - BCF
BCF Apaga um bit
Sintaxe: [label] BCF f,b
Operandos: 0 f 127, 0 b 7
Operação: : 0 ==> (f<b>)
Flags afectadas: nenhum
Código OP: 01 00bb bfff ffff
Descrição: Apaga o bit b do registo f
Exemplo: : BCF REG,7
Antes: REG = 0xC7
Depois: REG = 0x47
43. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - BSFInstruções - BSF
BSF Activa um bit
Sintaxe: [label] BSF f,b
Operandos: 0 f 127, , 0 b 7
Operação: 1 ==> (f<b>)
Flags afectadas: nenhum
Código OP: 01 01bb bfff ffff
Descrição: Activa o bit b do registo f
Exemplo: BSF REG,7
Antes: REG = 0x0A
Depois: REG = 0x8A
44. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - BTFSCInstruções - BTFSC
BTFSC Testa o bit e salta se for 0
Sintaxe: [label] BTFSC f,d
Operandos: d [0,1], 0 f 127
Operação: Salto Se (f<b>) = 0
Flags afectadas: nenhum
Código OP: 01 10bb bfff ffff
Descrição: Se o bit b do registo f é 0, salta uma instrução e continua
com a execução. Em caso de salto, ocupará dois ciclos de relógio.
Exemplo: BTFSC REG,6
GOTO NO_ES_0
SI_ES_0 instrução
NO_ES_0 instrução
45. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - BTFSSInstruções - BTFSS
BTFSS Testa o bit e salta se for 1
Sintaxe: [label] BTFSS f,d
Operandos: d [0,1], 0 f 127
Operação: Salto Se (f<b>) = 1
Flags afectadas: nenhum
Código OP: 01 11bb bfff ffff
Descrição: Se o bit b do registo f é 1, salta uma instrução e continua
com a execução. Em caso de salto, ocupará dois ciclos de relógio.
Exemplo: BTFSS REG,6
GOTO NO_ES_0
SI_ES_0 instrução
NO_ES_0 instrução
46. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - CALLInstruções - CALL
CALL Salta para subrotina
Sintaxe: [label] CALL k
Operandos: 0 k 2047
Operação: PC ==> pilha; k ==> PC
Flags afectadas: nenhum
Código OP: 10 0kkk kkkk kkkk
Descrição: Salta para uma subrotina. A parte baixa de k é carregada em
PCL, e a alta em PCLATCH. Ocupa 2 ciclos de relógio.
Exemplo: ORIGEM CALL DESTINO
Antes: PC = ORIGEM
Depois: PC = DESTINO
47. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - CLRFInstruções - CLRF
CLRF Apaga um registo
Sintaxe: [label] CLRF f
Operandos: 0 f 127
Operação: : 0x00 ==> (f), 1 ==> Z
Flags afectadas: Z
Código OP: 00 0001 1fff ffff
Descrição: O registo f é carregado com 0x00. A flag Z é activada.
Exemplo: : CLRF REG
Antes: REG = 0x5A
Depois: REG = 0x00, Z = 1
48. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - CLRWInstruções - CLRW
CLRW Apaga o registo W
Sintaxe: [label] CLRW
Operandos: nenhum
Operação: : 0x00 ==> W, 1 ==> Z
Flags afectadas: Z
Código OP: 00 0001 0xxx xxxx
Descrição: O registo de trabalho W é carregado com 0x00. A flag Z é
activada.
Exemplo: : CLRW
Antes: W = 0x5A
Depois: W = 0x00, Z = 1
49. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - CLRWDTInstruções - CLRWDT
CLRWDT Apaga o WDT
Sintaxe: [label] CLRWDT
Operandos: nenhum
Operação: 0x00 ==> WDT, 1 ==> /TO
1 ==> /PD
Flags afectadas: /TO, /PD
Código OP: 00 0000 0110 0100
Descrição: Esta instrução apaga tanto o WDT como o seu preescaler. Os
bits /TO e /PD do registo de estado são colocados a 1.
Exemplo: : CLRWDT
Depois: Contador WDT = 0,
Preescales WDT = 0,
/TO = 1, /PD = 1
50. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - COMFInstruções - COMF
COMF Complemento de f
Sintaxe: [label] COMF f,d
Operandos: d [0,1], 0 f 127
Operação: : (/ f), 1 ==> (dest)
Flags afectadas: Z
Código OP: 00 1001 dfff ffff
Descrição: O registo f é complementado. A flag Z é activada se o
resultado é 0. Se d é 0 o resultado é armazenado em W. Se d é 1 é
armazenado em f.
Exemplo: : COMF REG,0
Antes: REG = 0x13
Depois: REG = 0x13, W = 0XEC
51. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - DECFInstruções - DECF
DECF Decremento de f
Sintaxe: [label] DECF f,d
Operandos: d [0,1], 0 f 127
Operação: : (f ) - 1 ==> (dest)
Flags afectadas: Z
Código OP: 00 0011 dfff ffff
Descrição: Decrementa conteúdo de f. Se d é 0, o resultado é
armazenado em W, Se d é 1 é armazenado em f.
Exemplo: : DECF CONT,1
Antes: CONT = 0x01, Z = 0
Depois: CONT = 0x00, Z = 1
52. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - DECFSZInstruções - DECFSZ
DECFSZ Decremento e salta se 0
Sintaxe: [label] DECFSZ f,d
Operandos: d [0,1], 0 f 127
Operação: (f) -1 ==> d; Salto Se R=0
Flags afectadas: nenhum
Código OP: 00 1011 dfff ffff
Descrição: Decrementa o conteúdo do registo f. Se d é 0, o resultado é
armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0
salta uma instrução e ocuparia 2 ciclos.
Exemplo: DECFSZ REG,0
GOTO NO_ES_0
SI_ES_0 instrução
NO_ES_0 Salta instrução anterior
53. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - GOTOInstruções - GOTO
GOTO Salto incondicional
Sintaxe: [label] GOTO k
Operandos: 0 k 2047
Operação: k ==> PC <8:0>
Flags afectadas: nenhum
Código OP: 10 1kkk kkkk kkkk
Descrição: Trata-se de um salto incondicional. A parte baixa de k é
carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de relógio.
Exemplo: ORIGEM GOTO DESTINO
Antes: PC = ORIGEM
Depois: PC = DESTINO
54. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - INCFInstruções - INCF
INCF Incremento de f
Sintaxe: [label] INCF f,d
Operandos: d [0,1], 0 f 127
Operação: : (f ) + 1 ==> (dest)
Flags afectadas: Z
Código OP: 00 1010 dfff ffff
Descrição: Incrementa o conteúdo de f. Se d é 0, o resultado é
armazenado em W. Se d é 1 é armazenado em f.
Exemplo: : INCF CONT,1
Antes: CONT = 0xFF, Z = 0
Depois: CONT = 0x00, Z = 1
55. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - INCFSZInstruções - INCFSZ
INCFSZ Incremento e salta se 0
Sintaxe: [label] INCFSZ f,d
Operandos: d [0,1], 0 f 127
Operação: (f) -1 ==> d; Salto Se R=0
Flags afectadas: nenhum
Código OP: 00 1111 dfff ffff
Descrição: Incrementa o conteúdo do registo f. Se d é 0, o resultado é
armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0
salta a instrução seguinte, em cujo caso demoraria 2 ciclos.
Exemplo: INCFSC REG,0
GOTO NO_ES_0
SI_ES_0 instrução
NO_ES_0 Salta instrução anterior
56. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - IORLWInstruções - IORLW
IORLW W OR literal
Sintaxe: [label] IORLW k
Operandos: 0 k 255
Operação: : (W) OR (k)==> (W)
Flags afectadas: Z
Código OP: 11 1000 kkkk kkkk
Descrição: Realiza a operação lógica OR entre o conteúdo do registo W
e k, guardando o resultado em W.
Exemplo: IORLW 0x35
Antes: W = 0x9A
Depois: W = 0xBF
57. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - IORLWFInstruções - IORLWF
IORWF W OR F
Sintaxe: [label] IORWF f,d
Operandos: d [0,1], 0 f 127
Operação: (W) OR (f) ==> (dest)
Flags afectadas: Z
Código OP: 00 0100 dfff ffff
Descrição: Realiza a operação lógica OR entre os registos W e f. Se d
é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f.
Exemplo: : IORWF REG,0
Antes: W = 0x91, REG = 0x13
Depois: W = 0x93, REG = 0x13
58. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - MOVLWInstruções - MOVLW
MOVLW Carregar literal em W
Sintaxe: [label] MOVLW f
Operandos: 0 f 255
Operação: (k) ==> (W)
Flags afectadas: nenhum
Código OP: 11 00xx kkkk kkkk
Descrição: O literal k passa ao registo W.
Exemplo: MOVLW 0x5A
Depois: REG = 0x4F, W = 0x5A
59. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - MOVFInstruções - MOVF
MOVF Mover f para W
Sintaxe: [label] MOVF f,d
Operandos: d [0,1], 0 f 127
Operação: (f) ==> (dest)
Flags afectadas: Z
Código OP: 00 1000 dfff ffff
Descrição: O conteúdo do registo f é movido para o destino dependendo
de d. Se d é 0, o resultado é armazenado em W. Se d é 1 é
armazenado em f. Quando d é 1 permite verificar o registo, já que
afecta a Z.
Exemplo: MOVF REG,0
Depois: W = REG
60. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - MOVWFInstruções - MOVWF
MOVWF Mover W para f
Sintaxe: [label] MOVWF f
Operandos: 0 f 127
Operação: W ==> (f)
Flags afectadas: nenhum
Código OP: 00 0000 1fff ffff
Descrição: O conteúdo do registo W passa para o registo f.
Exemplo: MOVWF REG,0
Antes: REG = 0xFF, W = 0x4F
Depois: REG = 0x4F, W = 0x4F
61. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - NOPInstruções - NOP
NOP Não operação
Sintaxe: [label] NOP
Operandos: nenhum
Operação: No operar
Flags afectadas: nenhum
Código OP: 00 0000 0xx0 0000
Descrição: Não realiza nenhuma operação. Na realidade consome um ciclo
de instrução sem fazer nada.
Exemplo: NOP
62. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - RETFIEInstruções - RETFIE
RETFIE regresso de interrupção
Sintaxe: [label] RETFIE
Operandos: nenhum
Operação: : 1 ==> GIE; TOS==>PC
Flags afectadas: nenhum
Código OP: 00 0000 0000 1001
Descrição: o PC é carregado com o conteúdo de cima da pilha (TOS):
direcção de regresso. Consome 2 ciclos. As interrupções voltam a
ser habilitadas.
Exemplo: : RETFIE
Depois: PC = direcção de regresso
GIE = 1
63. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - RETLWInstruções - RETLW
RETLW regresso de uma subrotina, com o valor em W
Sintaxe: [label] RETLW k
Operandos: 0 k 255
Operação: : (k)==> (W); TOS==>PC
Flags afectadas: nenhum
Código OP: 11 01xx kkkk kkkk
Descrição: O registo W é carregado com a constante k. O PC é carregado
com o conteúdo de cima da pilha (TOS): direcção de regresso.
Consome 2 ciclos.
Exemplo: : RETLW 0x37
Depois: PC = direcção de regresso
W = 0x37
64. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - RETURNInstruções - RETURN
RETURN regresso de rotina
Sintaxe: [label] RETURN
Operandos: nenhum
Operação: : TOS ==> PC
Flags afectadas: nenhum
Código OP: 00 0000 0000 1000
Descrição: O PC é carregado com o conteúdo de cima da pilha (TOS):
direcção de regresso. Consome 2 ciclos.
Exemplo: : RETURN
Depois: PC = direcção de regresso
65. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - RLFInstruções - RLF
RLF roda f para a esquerda
Sintaxe: [label] RLF f,d
Operandos: d [0,1], 0 f 127
Operação: Rotação a a esquerda
Flags afectadas: C
Código OP: 00 1101 dfff ffff
Descrição: O conteúdo de f é rodado para a esquerda. O bit de menor
peso de f passa para o carry (C), e o carry é colocado no de maior
peso. Se d é 0, o resultado é armazenado em W. Se d é 1 é
armazenado em f.
Exemplo: RLF REG,0
Antes: REG = 1110 0110, C = 0
Depois: REG = 1110 0110,
W = 1100 1100, C = 1
66. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - RRFInstruções - RRF
RRF roda f para a direita
Sintaxe: [label] RRF f,d
Operandos: d [0,1], 0 f 127
Operação: Rotação a a direita
Flags afectadas: C
Código OP: 00 1100 dfff ffff
Descrição: O conteúdo de f é rodado para a direita. O bit de menos
peso de f passa para o carry (C), e o carry é colocado no de maior
peso. Se d é 0, o resultado é armazenado em W. Se d é 1 é
armazenado em f.
Exemplo: RRF REG,0
Antes: REG = 1110 0110, C = 1
Depois: REG = 1110 0110,
W = 1111 0011, C = 0
67. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - SLEEPInstruções - SLEEP
SLEEP Modo baixo consumo
Sintaxe: [label] SLEEP
Operandos: nenhum
Operação: 0x00==>WDT, 1 ==> / TO
0 ==> WDT Preescaler, 0 ==> / PD
Flags afectadas: / PD, / TO
Código OP: 00 0000 0110 0011
Descrição: O bit de energia é colocado a 0, e a 1 o de descanso. O WDT
e o seu preescaler são apagados. o micro pára o oscilador, ficando
adormecido.
Exemplo: : SLEEP
Preescales WDT = 0,
/TO = 1, /PD = 1
68. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - SUBLWInstruções - SUBLW
SUBLW Subtrai W ao literal
Sintaxe: [label] SUBLW k
Operandos: 0 k 255
Operação: ( k ) - (W) ==> (W)
Flags afectadas: Z, C, DC
Código OP: 11 110x kkkk kkkk
Descrição: Mediante o método do complemento para dois o conteúdo de W
é subtraído ao literal. O resultado é armazenado em W.
Exemplos: SUBLW 0x02
Antes:W=1,C=?. Depois: W=1, C=1
Antes:W=2,C=?. Depois: W=0, C=1
Antes:W=3,C=?.Depois:W=FF,C=0
(o resultado é negativo)
69. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - SUBLWFInstruções - SUBLWF
SUBWF Subtrai W ao f
Sintaxe: [label] SUBWF f,d
Operandos: d [0,1], 0 f 127
Operação: ( f ) - (W )==> (dest)
Flags afectadas: C, DC, Z
Código OP: 00 0010 dfff ffff
Descrição: Mediante o método do complemento para dois o conteúdo de W
é subtraído ao de f. Se d é 0, o resultado é armazenado em W. Se d
é 1 é armazenado em f.
Exemplos: SUBWF REG,1
Antes: REG = 0x03, W = 0x02, C = ?
Depois:REG=0x01, W = 0x4F, C=1
Antes: REG = 0x02, W = 0x02, C = ?
Depois:REG=0x00, W =0x02, C= 1
Antes: REG= 0x01, W= 0x02, C= ?
Depois:REG=0xFF, W=0x02, C= 0
(Resultado negativo)
70. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - SWAPFInstruções - SWAPF
SWAPF Troca de f
Sintaxe: [label] SWAPF f,d
Operandos: d [0,1], 0 f 127
Operação: : (f <3: 0>) (f <7:4>)
Flags afectadas: nenhum
Código OP: 00 1110 dfff ffff
Descrição: Os 4 bits de maior peso e os 4 de menor são trocados. Se d
é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f.
Exemplo: SWAPF REG,0
Antes: REG = 0xA5
Depois: REG = 0xA5, W = 0x5A
71. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - XORLWInstruções - XORLW
XORLW W XOR literal
Sintaxe: [label] XORLW k
Operandos: 0 k 255
Operação: : (W) XOR (k)==> (W)
Flags afectadas: Z
Código OP: 11 1010 kkkk kkkk
Descrição: Realiza a operação lógica XOR entre o conteúdo do registo W
e k, guardando o resultado em W.
Exemplo: : XORLW 0xAF
Antes: W = 0xB5
Depois: W = 0x1A
72. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Instruções - XORLWInstruções - XORLW
XORWF W XOR F
Sintaxe: [label] XORWF f,d
Operandos: d [0,1], 0 f 127
Operação: (W) XOR (f) ==> (dest)
Flags afectadas: Z
Código OP: 00 0110 dfff ffff
Descrição: Realiza a operação lógica XOR entre os registos W e f. Se d
é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f.
Exemplo: : XORWF REG,0
Antes: W = 0xB5, REG = 0xAF
Depois: W = 0xB5, REG = 0x1A
73. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Esquema Eletrônico da Placa Experimental PICLAB1
74. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
75. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Bits de configuração
Os bits de configuração podem ser programados de maneira a selecionar diferentes tipos de
configuração do microcontrolador.
76. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Diretivas de controle
#DEFINE Troca de uma porção de texto por outra
Sintaxe:
#define<nome> [< texto atribuído a nome > ]
Descrição:
De cada vez que a palavra <nome> aparece no programa, vai ser substituída por <texto atribuído
a nome>.
Exemplo1:
#DEFINE banck0 bcf STATUS,RP0 ;Seta BANCK0 de memória
#DEFINE banck1 bsf STATUS,RP0 ;Seta BANCK1 de memória
77. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
#INCLUDE Incluir um ficheiro adicional num programa
Sintaxe:
#include <<nome_do_ficheiro>>
#include “<nome_do_ficheiro>”
Descrição:
A aplicação desta diretiva faz com que um ficheiro completo seja copiado para o local em que a
diretiva “include” se encontra. Se o nome do ficheiro estiver entre aspas, estamos lidando com
um ficheiro do sistema, se não estiver entre aspas, mas sim entre os sinais < >, trata-se de um
ficheiro do utilizador. A diretiva “include”, contribui para uma melhor apresentação do programa
principal.
Exemplo:
#INCLUDE <P16F84A.INC> ;Arquivo Padrão Microchip para PIC16F84A
78. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
ORG Define o endereço a partir do qual o programa é armazenado na memória do
microcontrolador
Sintaxe:
<rótulo> org <valor>
Descrição:
Esta é a diretiva mais frequentemente usada. Com esta diretiva nós definimos em que parte na
memória de programa o programa vai começar.
Exemplo:
Inicio org 0x00
movlw 0xFF
movwf PORTB
Estas duas instruções a seguir à directiva 'org', são guardadas a partir do endereço 00.
79. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
END Fim do programa
Sintaxe:
end
Descrição:
No fim do programa, é necessário colocar a diretiva 'end', para que o tradutor do assembly
(assembler), saiba que não existem mais instruções no programa.
Exemplo:
.
.
movlw 0xFF
movwf PORTB
end
80. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
Directivas de Dados
4.16 CBLOCK Definir um bloco para as constantes nomeadas
Sintaxe:
Cblock [< termo >]
<rótulo> [:<incremente>], <rótulo> [:<incremente>]......
endc
Descrição:
Esta directiva é usada para atribuir valores às constantes a seguir nomeadas. A cada termo
seguinte, é atribuído um valor superior em uma unidade ao anterior. No caso de <incremente>
estar preenchido, então é o valor de <incremente> que é adicionado à constante anterior.
O valor do parâmetro <termo>, é o valor inicial. Se não for dado, então, por defeito, é
considerado igual a zero.
Exemplo:
cblock 0x02
primeiro, segundo ; primeiro = 0x02, segundo = 0x03
terceiro ;terceiro = 0x04
endc
81. 2006 UPE – POLI – Escola Politécnica de Pernambuco – Carlos Alberto Cunha – Engenharia Eletrônica
Introdução aos MicrocontralodoresIntrodução aos Microcontralodores
PICPIC
__CONFIG Estabelecer os bits de configuração
Sintaxe:
__config<termo> ou __config <endereço>, <termo>
Descrição:
São definidos o tipo de oscilador, e a utilização do watchdog e do circuito de reset interno. Antes
de usar esta diretiva, tem que declarar o processador através da directiva PROCESSOR.
Exemplo:
__CONFIG _CP_OFF & _WDT_OFF & PWRTE_ON & _XT_OSC
PROCESSOR Definindo o modelo de microcontrolador
Sintaxe:
processor <tipo_de_microcontrolador>
Descrição:
Esta diretiva, estabelece o tipo de microcontrolador em que o programa vai correr.
Exemplo:
processor 16f84