Vous êtes sur la page 1sur 36

Microcontroladores PIC

 
Ricardo de Oliveira Duarte
DECOM – UFOP
                            

(baseado no curso de SE do prof. Manoel L. Anido NCE – UFRJ)

1
Sumário
 Introdução a Família PIC e fabricantes.
 Características Básicas
 Arquitetura do PIC
 Organização da Memória no PIC
 Registradores do PIC

 
 Assembly e Conjunto de Instruções do PIC.
 Endereçamento de Memória no PIC.
                            

 Estrutura das Portas de I/O


 Interrupções
 Ambientes de Desenvolvimento para o PIC.
 Contagem do Tempo no PIC.
 Lendo Chaves e Botões no PIC.
 Exercícios
2
Família PIC - Fabricante

 Developed by Arizona Microchip


• Different types available ranging from 18PIN DIP devices with 12 I/O
lines, 1 timer and limited facilities.
• We will focus on the 16F877A.
 In 1990, 20th most popular microcontroller


customer base)  
In 1997, 2nd only to Motorola (which has a huge
                            

Lots of smaller users and new users choose the PIC


 Motorola even uses the PIC in some of its mobile
phones!
 Dominam o mercado de Microcontroladores da
atualidade (2007) !! Variedade muito grande!
 Preços varíaveis: entre U$ 2,00 e U$ 20,00.
3
Sumário
 Introdução a Família PIC e fabricantes.
 Características Gerais
 Arquitetura do PIC
 Organização da Memória no PIC
 Registradores do PIC

 
 Assembly e Conjunto de Instruções do PIC.
 Endereçamento de Memória no PIC.
                            

 Estrutura das Portas de I/O


 Interrupções
 Ambientes de Desenvolvimento para o PIC.
 Contagem do Tempo no PIC.
 Lendo Chaves e Botões no PIC.
 Exercícios
4
PIC – Características Gerais

 ROM interna (varíavel dependendo  Memória de dados expansível


do modelo do PIC) (alguns PICs).
 RAM interna (varíavel dependendo  Memória de programa
do modelo do PIC) expansível (alguns PICs).
 Número de Portas de I/O variável.  Arquitetura RISC.
 Timers e counters dedicados.
 Conjunto de instruções reduzido.

 
 Interfaces serial de mais de um
tipo.  Poucas formas de

 Número e tipos de interrupção                             endereçamento diferentes.

variáveis.  On chip oscillator to generate


 Recursos e funcionalidades clock.
específicas (conversores A/D e
D/A; Comparadores; etc.)
 Harvard Architecture.
 Ciclo de máquina = 4 ciclos de
clock (1 µs per instruction at 4 MHz
clock)
5
The PIC Family: Cores
PICs come with 1 of 4 CPU ‘cores’:
 12bit cores with 33 instructions: 12C50x, 16C5x

 14bit cores with 35 instructions: 12C67x,16Cxxx

 16bit cores with 58 instructions: 17C4x,17C7xx


 
‘Enhanced’ 16bit cores with 77                            
instructions: 18Cxxx
The PIC Family: Packages
PICs come in a huge variety of packages:

8 pin DIPs, SOICs: 12C50x (12bit) and 12C67x (14bit)


18pin DIPs, SOICs: 16C5X (12bit), 16Cxxx (14bit)
28pin DIPs, SOICs: 16C5X (12bit), 16Cxxx (14bit)
40pin DIPs, SOICs: 16Cxxx (14bit), 17C4x (16bit)
44 - 68pin PLCCs*:
 
16Cxxx (14bit), 17C4x / 17Cxxx (16bit)
                            
The PIC Family: Program Memory
 PIC program space is different for each chip.

 Some examples are:

12C508 512 12bit instructions

 
16C71C 1024 (1k) 14bit instructions
16F877 8192 (8k) 14bit instructions
17C766 16384 (16k) 16bit instructions
                            
The PIC Family: Program Memory

 PICs have two different types of program


storage:
1. EPROM (Erasable Programmable Read Only Memory) (C)
• Needs high voltage from a programmer to program (~13V).


but with no window!
 
Needs windowed chips and UV light to erase.
Note: One Time Programmable (OTP) chips are EPROM chips,
                            

PIC Examples: Any ‘C’ part: 12C50x, 17C7xx, etc.


2. FLASH (F)
• Re-writable (even by chip itself)
• Much faster to develop on!
• Finite number of writes (~100k Writes)
• PIC Examples: Any ‘F’ part: 16F84, 16F87x, 18Fxxx
Low End: 12C508
 8pin package (DIP, SO)
 12bit core - 33 instructions
 1us instruction time (Tclk = 4MHz)
 512 12bit program memory
 25 8bit data memory or registers (“File
registers”)
 2 level hardware stack (no interrupts)


5 GPIO pins, 1 input only (25mA
source/sink)  
                            

Features: Internal pullups, wake up on pin


change, internal oscillator
 Peripherals: Timer, Watch Dog Timer
 $1.88(1), $1.25(100)
Mid Range: 16F876
 28pin package (DIP, SO)
 14bit core - 35 instructions
 200ns instruction time (Tclk = 20MHz)
 8,092 14bit FLASH program memory
 368 8bit data memory or registers
(“File registers”)
 256 8bit EEPROM (nonvolatile) data


registers
8 level hardware stack (interrupts
enabled)
 
                            

 22 GPIO (20mA source / 25mA 7sink)


 Peripherals: 5ch 10bit ADC,
USART/I2C/SPI, 16bit & 8bit timers
 Features: Brown out detect, In-Circuit
Debugger (ICD)
 $11.00(1), $5.89(100)
High End: 17C766
 84pin PLCC package
 16bit core - 58 instructions
 121ns instruction time (Tclk =
33MHz)
 16,384 16bit program memory
 902 8bit data memory or registers
16 level hardware stack (priority
 

interrupts)                             
 66 GPIO (20mA source / 35mA sink)
 Features: 8x8 multiply, BOD,
microprocessor mode
 Peripherals:
• 2x 16bit + 2x 8bit timer, WDT, 2x
USART, 4x CCP,
• 12ch 10bit ADC,
 $20.25(1), $10.53(100)
The PIC Family: Speed

PICs require a clock to work.


 Can use crystals, clock oscillators, or even an RC circuit.
 Some PICs have a built in 4MHz RC clock
 Not very accurate, but requires no external components!
 Instruction speed = 1/4 clock speed (Tcyc = 4 * Tclk)

12C50x
12C67x
  4MHz
                            
10MHz
16Cxxx 20MHz
17C4x / 17C7xxx 33MHz
18Cxxx 40MHz
PICs - Características Gerais

                              

14
Sumário
 Introdução a Família PIC e fabricantes.
 Características Gerais
 Arquitetura do PIC
 Organização da Memória no PIC
 Registradores do PIC

 
 Assembly e Conjunto de Instruções do PIC.
 Endereçamento de Memória no PIC.
                            

 Estrutura das Portas de I/O


 Interrupções
 Ambientes de Desenvolvimento para o PIC.
 Contagem do Tempo no PIC.
 Lendo Chaves e Botões no PIC.
 Exercícios
15
Arquitetura do PIC
 12-bit, 14-bit or 16-bit Instruction words.
 Data and Instruction areas are separate 8-bit
datapath.
 External clock is internally divided by 4. (e.g. clk
external 4 MHz = clk internal 1 MHz = 1us/instr)
  
Instructions take 1 cycle (1 us) to complete
                            

(pipeline). Sometimes take 2 cycles.


 Single interface method to Data Memory.
 8-bit, RISC processor, Harvard, memory, I/O
ports.

16
Arquitetura do PIC 1684

                              

17
Arquitetura do PIC – 16F877A

                              

18
Arquitetura do PIC
 Ponto de Vista do Programador
• Mapeamento da Memória
• Registradores
• Conjunto de Instruções
• Modos de Endereçamento
• Funções de I/O


• Interrupções
                              

Ponto de Vista do Projetista de Hardware


• Pinos
• Características Elétricas
• Temporização

19
Sumário
 Introdução a Família PIC e fabricantes.
 Características Gerais
 Arquitetura do PIC
 Organização da Memória no PIC
 Registradores do PIC

 
 Assembly e Conjunto de Instruções do PIC.
 Endereçamento de Memória no PIC.
                            

 Estrutura das Portas de I/O


 Interrupções
 Ambientes de Desenvolvimento para o PIC.
 Contagem do Tempo no PIC.
 Lendo Chaves e Botões no PIC.
 Exercícios
20
As áreas de Endereçamento de Memória do PIC 16F877A
 Memória do tipo FLASH.
 Memória de programa tem 14 bits.
 Pode ser acessada por software
dinamicamente.
 Vetor de RESET em 0000h.
 Endereços de 13 bits de tamanho.
 Capacidade de endereçamento igual a
8 Kwords.

 
 Gerenciamento de memória
complicado.
 Região da Pilha (Stack) fisicamente
                            
separada da Região de Programa.
 Interrupção vetorada (endereço de
desvio fixo 0004h para todas as
interrupções).
 Maioria dos PICs usa o mesmo
endereço para tratar interrupção.
 8 endereços de retorno. Pilha com
profundidade limitada a 8 níveis).
 15 tipos de interrupções diferentes.

Qual a capacidade máxima de armazenament.


da mem. de programa interna desse PIC?21
As áreas de Endereçamento de Memória do PIC 16F877A

 Instrução tem 14 bits de tamanho.


 Capacidade de endereçamento igual
a 8 Kwords.
 Gerenciamento de memória
complicado.
 OPCODES de tamanho variável

 
(depende do tipo da instrução).
 Instrução é carregada no PC.
                            
 PC é formado por 2 registradores
SFR: o PCL e o PCLATCH.
 Conceito de paginação de memória.

Exemplo: Instrução CALL

22
PCLATCH <4:3> - seleciona a página !
Memória de Dados do PIC 16F877A
 Memória RAM de 512 bytes.
 Armazena as Variáveis e os Registradores
usados pelo programa.
 Tamanho do dado: 8 bits.
 Organizada em 4 bancos de registradores.
 Cada banco possuí 128 bytes.
 Registradores de uso geral (GPRs) e
registradores de uso específico (SFRs).

 
 GPRs destinados às variáveis. 368 bytes.
 Os endereços mais baixos de cada banco
são sempre reservado para SFRs.                             

23
Memória de Dados do PIC 16F877A
 Organizada em 4 bancos de registradores.
 Cada banco possuí 128 bytes.
 Registradores (GPRs) e registradores de uso específico (SFRs).
 GPRs destinados às variáveis. 368 bytes.

                              

24
Memória de Dados do PIC 16F877A
 RAM de 512 bytes:  Gerenciamento de dados
• 368 bytes para GPRs; também complicado.
• 77 bytes para SFRs; • Instruções dispõem de 7 bits
• 19 bytes indisponíveis (não para endereçamento dos
implementadas pelo registradores. (Ex.: MOVF)
fabricante) – retornam ZERO • Daí a necessidade dos 4
quando lidos; bancos de memória.
• 48 bytes restantes
(espelhamento de alguns
SFRs do banco 0) – para
                              
• STATUS<RP1:RP0>
selecionam o banco desejado.

facilitar a programação.
• Algumas instruções usam 8
bits para o endereçamento:
Instruções de acesso indireto.
• STATUS <IRP> seleciona
grande banco 0 ou 1.

25
Sumário
 Introdução a Família PIC e fabricantes.
 Características Gerais
 Arquitetura do PIC
 Organização da Memória no PIC
 Registradores do PIC

 
 Assembly e Conjunto de Instruções do PIC.
 Endereçamento de Memória no PIC.
                            

 Estrutura das Portas de I/O


 Interrupções
 Ambientes de Desenvolvimento para o PIC.
 Contagem do Tempo no PIC.
 Lendo Chaves e Botões no PIC.
 Exercícios
26
Registradores do PIC
 Registradores de 8 bits cada.
 Registradores de 2 tipos:
• GPRs (General Purpose Registers): guarda variáveis e valores
temporários do programa.
• SFRs (Special Function Registers): usado pela CPU nas operações da
ALU (status). Usado para controle dos periféricos.
 Registradores de Funções Especiais (SFR).

  
• Portas, Temporizadores, Interrupções (Habilita, Prioridade), Porta Serial.
W – registrador de 8 bits (acumulador da ALU).
                            

 F – notação usada para representar qualquer registrador


da RAM.
 PC (Program Counter) – Registrador de 13 bits. Endereça
213, ou seja, 8 Kwords de memória de instruções.
 Registrador de Status do Programa.
 Instruction Register
 FSR – File Selection Register 27
Registradores do PIC 16F877A
Parte da tabela dos SFRs do 16F877A

                              

28
Registrador PC
 Program Counter (PC) – contador de programa.
 Aponta para a próxima instrução a ser buscada
na memória de programa.
 Após executar uma instrução, PC é
automaticamente incrementado para apontar


 
para a próxima instrução.
                            

Não podemos manipular PC diretamente (com


exceção da instrução de desvio incondicional).
 Não podemos ler o conteúdo de PC diretamente.

29
Registrador W (Work = Acumulador)
 Usado para operações aritméticas e MOV.
 Usado de forma implícita no opcode.
• Depende da instrução.
 Exemplo de referência implícita:
• Instrução: CLRW



Limpa o conteúdo do W.
O Acumulador está codificado
Instrução: RETLW k
  no opcode.
                            

• Retorna de uma rotina colocando k em W.


• O Acumulador está codificado no opcode.

30
Registrador de Status
(mesma função: PSW do 8051)
 Contém o status da ALU, o RESET status e o banco de memória
selecionado.

                              

31
Registrador de Instruções (Instruction Register)
 Registrador de 14 bits.
 Guarda a instrução da vez que será
decodificada e executada.
Instruction Register

                              

32
E o Registrador de End. da Pilha?
 Quando o programa é desviado para o começo
de uma rotina (CALL ou interrupção), PC´ + 1 é
armazenado na pilha (stack).

 Ao final da rotina (RETURN), o programa volta a

 
ser executado do ponto de onde parou,
recuperando o endereço na pilha (PC´ + 1).
                            

 Não há Stack Pointer Register como no 8051.


 “CALL” pushes PC onto stack, “RETURN” pops
it back off.
 Low-End PIC programmers don’t do recursion.
33
FSR – File Selection Register
 Localiza-se no Endereço: 04h.
 Usado para acesso indireto à memória.

FSR

                              

34
INDF - Indirect Data Memory Address Pointer
 Localizado no endereço 00h (banco 0).
 Não é um registrador “físico”.
 Endereçar o INDF significa endereçar
indiretamente outro endereço.
 Qualquer instrução que usa o INDF,
acessa na verdade o FSR (File
Selection Register – Endereço 04h).

                              

35
Resumo da Tabela de Registradores – PIC
16F877A
 Consulte o datasheet do dispositivo.
 Site do fabricante, em formato PDF.
 Para o 16F877 siga o link abaixo:

 
http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
                            

 Outros registradores SFR serão vistos quando


estudarmos os TIMERs e outros recursos
especiais do PIC.

36

Vous aimerez peut-être aussi