Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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ções8 a 84 pinosMais de 180 modelosVá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 ossaltos
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 dospinos 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 I2C e SPI
Moritz, G.L. Introdução ao PIC
CPU
Acumulador: registrador especial, sempre um dosoperandos da ULADecodificador de intruções: interpreta as instruçõesUnidade lógica aritmética (ULA): executa as operaçõesStatus 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 decomandos da CPU (instruções) que realiza operações sobre amemória (registradores e memória de uso geral) ouperifé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 oprograma ser executadoFeita com tecnologia FLASH seu conteúdo pode seralterado com o auxílio de um programador externoO 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ãose apaga quando a alimentação é desligadaPode ser alterada durante a execução do programaPode 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 microcontroladorque tem funções específicasRegistradores de memória: Armazenam dadosSFRs: Cumprem funções específicas dentro domicrocontrolador (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 pelosregistradores 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 demaneira compreensível pelo decoder de instruçõesLinguagem de máquina: Conjunto de instruçõesreconhecidas pela CPUTipo de instruções:
Transferência: copia dados de uma localização para outraAritmética e lógica: Comanda a ULAControle: 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 todasas operações que a CPU é implementada para executar
1 Carrega y no registrador R12 Carrega z no registrador R23 Se R2 = 0, pule para instrução 64 Comande a ULA a dividir R1 por R2, armazenando o
resultado em R35 Armazena R3 em x6 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ísticada própria linguagem Assembly
Exemplos:
PROCESSOR: deve ser escrita no início de TODOS osprogramas. 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 damemó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 0x24ENDC
Moritz, G.L. Introdução ao PIC
Diretivas
Exemplos:ORG: especifica uma posição da memória para oPROGRAMA
ORG 0x100START ...
...ORG 0x1000
TABLE ......
END: todo programa deve obrigatoriamente ser terminadopor 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 dadosMOVWF
Lógica e AritméticaSoma, Subtração, Incremento, E, OU, XOR, ...
Operação com bits
Direcionadores de programaBTFSC, 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 umaposição à direita (o carry participa da rotação)
RL (Rotate Left): Rotaciona os bits de um byte umaposiçã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 memorizaposiçã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 dowatchdog
NOP (No Operation): Não faz nada, usado para pequenosajustes 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 localizadono 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óximainstruçã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 nopró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 nopró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ênciaa 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 navariável CONT, retornando novamente a 0 e reiniciando acontagem.
Moritz, G.L. Introdução ao PIC
Exemplo: Contador
Programação Assembly
L2 MOVLW 0x00 ; W=0MOVWF CONT ; W -> CONT
L1 INCF CONT,F ; CONT+1 -> CONT
MOVF CONT,W ; CONT -> WSUBLW 0x09 ; 0x09-W -> WBTFSS STATUS,Z ; Deu zero?GOTO L1 ; nãoGOTO L2 ; sim
Moritz, G.L. Introdução ao PIC
Exemplo: Contador
b) Modificar o programa anterior de forma que a contagemseja regressiva de 9 até 0.
Moritz, G.L. Introdução ao PIC