Você está na página 1de 40

Introdução ao PIC

Guilherme Luiz Moritz1


1 DAELT - Universidade Tecnológica Federal do Paraná

6 de novembro de 2013

Moritz, G.L. Introdução ao PIC


Características do PIC

Arquitetura Harvard RISC, 35 instruções


8 a 84 pinos
Mais de 180 modelos
Vários periféricos

Moritz, G.L. Introdução ao PIC


Panorâmica do PIC 16F877A

Arquitetura RISC
Apenas 35 instruções para aprender
Todas as instruções são executadas em um ciclo, exceto os
saltos

Frequência de operação de até 20 MHz


33 pinos de I/O
Alta corrente para acionar LEDs diretamente
Interrupção quando há mudança no estado lógico dos
pinos de entrada
Conversor A/D
8 canais
10 bits de resolução

Moritz, G.L. Introdução ao PIC


Panorâmica do PIC 16F877A

3 Temporizadores / Contadores independentes

Temporizador Watch-dog

Saída por PWM

Modo USART melhorado

Suporta RS-232 e RS-485

Detecção automática de baudrate

Porta série assíncrona

Suporta os modos I2 C e SPI

Moritz, G.L. Introdução ao PIC


CPU

Acumulador: registrador especial, sempre um dos


operandos da ULA
Decodificador de intruções: interpreta as instruções
Unidade lógica aritmética (ULA): executa as operações
Status Register (PSW): registrador de estado da ULA

Moritz, G.L. Introdução ao PIC


Programação de microcontroladores

Um programa de microcontrolador é uma sequência de


comandos da CPU (instruções) que realiza operações sobre a
memória (registradores e memória de uso geral) ou
periféricos.

Moritz, G.L. Introdução ao PIC


Memórias Internas
Esse microcontrolador tem três tipos de memórias:
Memória ROM (8 kbytes):
Memória de programa Usada para armazenar o
programa ser executado
Feita com tecnologia FLASH seu conteúdo pode ser
alterado com o auxílio de um programador externo
O chip pode ser reprogramado cerca de 100.000 vezes
Memória EEPROM (256 bytes):
Memória de dados assim como ROM, seu conteúdo não
se apaga quando a alimentação é desligada
Pode ser alterada durante a execução do programa
Pode ser escrita cerca de 1.000.000 vezes
Memória RAM (368 bytes):
Registradores de função geral (GPR)
Registradores de função especial (SFR)

Moritz, G.L. Introdução ao PIC


Memória de Programa do PIC

Moritz, G.L. Introdução ao PIC


Memória e Registradores

Registradores são memórias internas do microcontrolador


que tem funções específicas
Registradores de memória: Armazenam dados
SFRs: Cumprem funções específicas dentro do
microcontrolador (Ex: Acionar uma porta)

Moritz, G.L. Introdução ao PIC


Registradores do PIC (Memória de dados)

Moritz, G.L. Introdução ao PIC


SFRs)

Moritz, G.L. Introdução ao PIC


SFRs) - Exemplos

Como saber a função de cada bit dos registradores? -


Datasheet

Moritz, G.L. Introdução ao PIC


Periféricos do PIC - PORTS

O 16F628a possui duas portas que são comandadas pelos


registradores PORTA, PORTB, TRISA, TRISB

Moritz, G.L. Introdução ao PIC


Periféricos do PIC - PORTS

Vamos estudar o funcionamento dos registradores!

Porque alguns pinos do processador têm mais de um nome?

Moritz, G.L. Introdução ao PIC


TRISX

Moritz, G.L. Introdução ao PIC


Entrada/Saída

Moritz, G.L. Introdução ao PIC


Debouncing

Moritz, G.L. Introdução ao PIC


Instruções

Instrução de máquina: Um comando codificado de


maneira compreensível pelo decoder de instruções
Linguagem de máquina: Conjunto de instruções
reconhecidas pela CPU
Tipo de instruções:
Transferência: copia dados de uma localização para outra
Aritmética e lógica: Comanda a ULA
Controle: direciona a execução do programa

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções

O conjunto de instruções da arquitetura compreende todas


as operações que a CPU é implementada para executar

1 Carrega y no registrador R1
2 Carrega z no registrador R2
3 Se R2 = 0, pule para instrução 6
4 Comande a ULA a dividir R1 por R2, armazenando o
resultado em R3
5 Armazena R3 em x
6 Pare

Moritz, G.L. Introdução ao PIC


Estrutura Básica de um Programa em Assembly

Moritz, G.L. Introdução ao PIC


Diretivas

Diretivas: independente do processador característica


da própria linguagem Assembly

Exemplos:

PROCESSOR: deve ser escrita no início de TODOS os


programas. Define o tipo do microcontrolador

Processor 16f877

#INCLUDE: possibilita incluir um arquivo na compilação

#include <p16f877.inc>

Moritz, G.L. Introdução ao PIC


Diretivas

Exemplos:
EQU: atribui um nome a uma posição específica da
memória RAM. Cria uma VARIÁVEL

MAXIMUM EQU 0x25

CBLOCK e ENDC: cria uma série de variáveis

CBLOCK 0x20
(tab) START ; endereço da memória 0x20
(tab) RELE ; endereço da memória 0x21
(tab) STOP ; endereço da memória 0x22
(tab) LEFT ; endereço da memória 0x23
(tab) RIGHT ; endereço da memória 0x24
ENDC

Moritz, G.L. Introdução ao PIC


Diretivas

Exemplos:
ORG: especifica uma posição da memória para o
PROGRAMA

ORG 0x100
START ...
...
ORG 0x1000
TABLE ...
...

END: todo programa deve obrigatoriamente ser terminado


por essa diretiva

...
END ; Fim de programa

Moritz, G.L. Introdução ao PIC


Subrotina

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC

Grupos de Instruções
Transferência de dados
MOVWF

Lógica e Aritmética
Soma, Subtração, Incremento, E, OU, XOR, ...

Operação com bits

Direcionadores de programa
BTFSC, CALL

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

Ações:
MOV (Move): Move um byte de origem para destino
ADD: Soma dois valores
SUB (Subtract): Subtrai
AND: Faz um “E” lógico
IOR (Inclusive OR): Faz um “OU” lógico
XOR (Exclusive OR): Faz um “XOR” lógico
CLR (Clear): Zera um byte
COM (Complement): Inverte os bits de um byte
DEC (Decrement): Subtrai 1
INC (Increment): Soma 1
SWAP: Inverte os nibbles de um byte

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

Ações (continuação):
RR (Rotate Right): Rotaciona os bits de um byte uma
posição à direita (o carry participa da rotação)
RL (Rotate Left): Rotaciona os bits de um byte uma
posição à esquerda (o carry participa da rotação)
BC (Bit Clear): Zera um bit
BS (Bit Set): Seta um bit
BT (Bit Test): Testa o bit (se é 0 ou 1)
GOTO: Vai para um endereço determinado
CALL: Vai para um endereço determinado (mas memoriza
posição atual para retornar)
RETURN: Retorna ao local onde havia o CALL

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

Ações (continuação):

SLEEP: Entra em estado de dormência (poupa energia)

CLRWDT (Clear Watchdog): Restaura contagem do


watchdog

NOP (No Operation): Não faz nada, usado para pequenos


ajustes de tempo

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

Especificadores:

L (Literal): número constante

F (File): endereço da RAM interna

W (Working register): acumulador

Referências:

f: refere-se ao endereço de um file

d: refere-se ao destino (W ou F apenas)

b: refere-se ao número do bit de um file

k: refere-se a um número constante

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

Ação Condicional:

S (Skip): pula a próxima instrução

Condições:

S (if set): se o bit testado for 1

C (if cleared): se o bit testado for 0

Z (if zero): se o byte for zero

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

EXEMPLOS:

“Move Literal to Work”


Move (copia) o valor 0x1B para o acumulador

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

EXEMPLOS:

“Move Work to File”


Move (copia) o valor do acumulador para o file localizado
no endereço 0x1B da RAM

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

EXEMPLOS:

“Bit Set File”


Seta o bit 3 do file 0x21

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

EXEMPLOS:

“Bit Test File Skip if Cleared”


Testa o bit 3 do file 0x21; se o bit for zero, pula a próxima
instrução

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16
EXEMPLOS:

“Decrement File”
Decrementa o valor do file 0x1C e coloca o resultado no
próprio file

Moritz, G.L. Introdução ao PIC


Conjunto de Instruções PIC16

EXEMPLOS:

“Decrement File Skip if Zero”


Decrementa o valor do file 0x1C e coloca o resultado no
próprio file; se o byte for zero, pula a próxima instrução

Moritz, G.L. Introdução ao PIC


Fluxogramas

Elementos gráficos utilizados para estabelecer uma sequência


a uma tarefa a ser realizada. Possuem três elementos básicos:

Moritz, G.L. Introdução ao PIC


Exemplo: Contador

a) Faça o programa que realize a contagem de 0 a 9 na


variável CONT, retornando novamente a 0 e reiniciando a
contagem.
Moritz, G.L. Introdução ao PIC
Exemplo: Contador

Programação Assembly

L2 MOVLW 0x00 ; W=0


MOVWF CONT ; W -> CONT

L1 INCF CONT,F ; CONT+1 -> CONT

MOVF CONT,W ; CONT -> W


SUBLW 0x09 ; 0x09-W -> W
BTFSS STATUS,Z ; Deu zero?
GOTO L1 ; não
GOTO L2 ; sim

Moritz, G.L. Introdução ao PIC


Exemplo: Contador

b) Modificar o programa anterior de forma que a contagem


seja regressiva de 9 até 0.

Moritz, G.L. Introdução ao PIC

Você também pode gostar