Vous êtes sur la page 1sur 17

10/30/2007

MICROCONTROLADORES PIC
GRA-Ba :: Grupo de Robotica Aplicada da Bahia
www.roboticaaplicada.zip.net

Professores
Victory Fernandes
Antonio Miranda Neto

1
10/30/2007

M ICRONTROLADORES X
M ICROPROCESSADORES RISC X CISC
¢ Microcontroladores são “computadores” em um ¢ CISC – Complex Instruction Set Computer
único chip! ¢ RISC – Reduced Instruction Set Computer
— Possuem internamente unidade lógica e aritmética, — Número reduzido de instruções (35 por exemplo)
memória de programa, memória de dados, portas de — Instruções executadas em 1 ciclo de máquina
entrada e saída serial e paralela, timers, contadores,
PWM, conversores analógicos e digitais etc.
¢O PIC é RISC!

ARQUITETURA HARVARD X V ON-NEUMANN FAMÍLIAS E M ODELOS


¢ Harvard ¢ Famílias
— Memória de dados está separada da memória de — 12
programa — 16
— Conceito mais recente que a de von-Neumann — 18
— Adveio da necessidade de trabalhar mais
rapidamente
— Separação da memória de dados da memória de
programa, faz com que as instruções possam ser
representadas por palavras de mais que 8 bits
— Normalmente são RISC

— PIC usa arquitetura HARVARD!

PIC16F628A
¢ Foco do curso é para o PIC16F628A

¢ Trabalhe sempre com o Datasheet!


¢ Há muitos livros e apostilas disponíveis sobre o tema!
— Exemplo: Desbravando o PIC – Ampliado e atualizado para
PIC16F628A

2
10/30/2007

PIC16F628A

UNIDADE DE M EMÓRIA V ETOR DE RESET


¢ Memória de Programa - Flash ¢É o primeiro endereço da memória de programa
— Vetor Reset que será executado quando o PIC começar a
— Vetor de Interrupção rodar;
— Pilha
¢ Memória de Dados - RAM ¢O reset aponta para o endereço 0x00
— Registradores Especiais
— Registradores de Uso Geral
¢ EEPROM

3
10/30/2007

V ETOR DE INTERRUPÇÃO PILHA (S TACK)


¢ Rotinasde interrupções serão armazenadas na ¢É um local totalmente separado da memória de
área de programação, juntamente com o resto do programação em que são armazenados os
programa; endereços de retorno quando são utilizadas
instruções de chamadas de rotinas;
¢ Existeum endereço que é reservado para o início
do tratamento de todas as interrupções. É ¢ Quando o programa é desviado para o começo de
denominado vetor de interrupção e se localiza na uma rotina por meio da instrução correta, o
posição 0x04. endereço seguinte ao ponto que estava sendo
rodado é armazenado na pilha para que, ao fim
da rotina, o programa possa retornar;

MEMÓRIA DE PROGRAMA -
PILHAS (S TACK) - CONTINUAÇÃO CONTINUAÇÃO
¢O tamanho da pilha determina a quantidade de ¢A memória de programa do PIC16F628A:
rotinas que podem ser chamadas ao mesmo — Tipo: 14 bits
tempo; — Tamanho: 2048 palavras

¢ Casoo número de rotinas chamadas seja maior


que o tamanho da pilha, o endereço de retorno
mais antigo é perdido.

V ETOR DE RESET M EMÓRIA DE DADOS


ORG 0x00 ;Endereço inicial da Memória ¢ RAM é a memória de dados, que é utilizada para
GOTO INICIO ;Direciona o ponteiro de execução para a guardar todas as variáveis e registradores
Sub-Rotina INICIO utilizados no programa. Armazena dados de 8
bits e é volátil (PIC desligado, as informações são
perdidas);

¢ Sãodividas em dois grupos: Registradores


especiais e Registradores de uso geral;

¢É dividida em mais de um banco. Possibilita o


acesso a endereços com o auxílio de chaves que
controlam o banco utilizado no momento;

4
10/30/2007

MEMÓRIA DE DADOS -
CONTINUAÇÃO
¢O PIC16F628A possui 4 bancos de memória para
os registradores SFRs (Special Function
Registers) e para a memória de variáveis do
sistema;

¢ Antes de acessar um registrador SFR é


necessário informar o banco onde o mesmo se
encontra. A combinação dos bits RP0 e RP1 no
registrador STATUS possibilita selecionar um
dos quatro bancos. Por default, o primeiro banco
(BANK0) é sempre selecionado;

REGISTRADORES ESPECIAIS -
REGISTRADORES ESPECIAIS CONTINUAÇÃO
¢ Encontram-setodos os registradores especiais, ¢ Osregistradores podem ser escritos/lidos tanto
denominados de SFRs; pelo usuário quanto pelo hardware;

¢ Sãoutilizados pelo PIC para execução do ¢ Sempre são armazenados na parte baixa da
programa e processamento da ULA (Unidade memória (início dos endereços) e às vezes podem
Lógica Aritmética); estar espalhados em mais de um banco de
memória.
¢ Registradores ocupam espaço na RAM e podem
ser acessados da mesma maneira que as
variáveis do sistema, mudando somente o
endereço de acesso;

REGISTRADORES DE USO GERAL EEPROM


¢ Área destinada ao armazenamento de variáveis ¢ Algunsmodelos de PICs possuem uma terceira
definidas pelo usuário para serem escritas e lidas memória que pode ser utilizada pelo usuário para
pelo programa; guardar dados;

¢ Seutamanho varia de acordo com o PIC e pode ¢ EEPROM é uma memória não volátil que
ocupar mais de um banco. consegue manter as informações mesmo sem
alimentação;

¢ Modelos que não possuem essa memória interna,


pode fazer seu acesso externamente,
interligando -a ao PIC por I/Os e com rotinas
implementadas para escrita e leitura de dados.

5
10/30/2007

UNIDADE CENTRAL DE PROCESSAMENTO BARRAMENTOS


¢ ULA – Unidade Lógica e Aritmética ¢ Dados

¢ Realiza o processamento propriamente dito ¢ Endereços

UNIDADE DE ENTRADA E S AÍDA CONTADORES E TEMPORIZADORES


¢ Portas A e B de 8 bits para I/O ¢ Permitem contar eventos e/ou contabilizar tempo
— PORTA (RA) entre eventos, intervalos de tempo predefinidos
— PORTB (RB) etc
¢ Níveis lógicos
— 0 = 0V
— 1 = 5V

PRE S CALERS WATCHDOG


¢ Permiteconfiguração e ajustes no modo de ¢ Defendecontra travamentos do microcontrolador,
operação dos timers efetuando reset automático em caso de problemas

6
10/30/2007

INTERRUPÇÕES CONVERSÃO ANALÓGICA DIGITAL


¢ Interrompea execução do programa para que a ¢ Aquisição, tratamento e uso de dados analógicos
interrupção seja tratada e então retorna ao ciclo
normal de execução

¢ Interrupções
— Timers
— Externa
— Mudança de Estado
— Fim de Escrita na EEPROM
— Comparador
— USART
— CCP

COMUNICAÇÃO S ERIAL CLOCK


¢ Comunicação USART com porta serial (RS232) ¢ Frequência de operação do microcontrolador
— f = 1/T
— Obtida através de osciladores

¢ Tipos de clock
— Interno
¢ 4MHz e 37kHz

— Externo
¢ Pode variar de 4Mhz a 20MHz

CICLO DE M ÁQUINA CICLO DE M ÁQUINA


¢ Clock é internamente dividido por 4
— Fases Q1, Q2, Q3 e Q4
¢ Para clock
externo de 4MHz temos clock interno de
operação de 1MHz (ciclo de máquina)

¢ RISC = 1 instrução executada por ciclo de máquina


— 1 instrução a cada 1µs

7
10/30/2007

PIPE LINE PIPE LINE


¢ Clock é internamente dividido por 4
— Fases Q1, Q2, Q3 e Q4
— Program Counter é incrementado em Q1
— Instrução seguinte é buscada e armazenada em Q4
— Instrução é decodificada e executada no próximo ciclo Q1 a Q4
— Permite que quase todas as instruções executem em 1 ciclo de
máquina
¢ Exceto instruções de “saltos” no Program Counter

¢O processo de buscar informação em um ciclo e executá-la


no próximo é chamado de PIPELINE

OSCILADORES EXTERNOS RC

¢ RC

¢ Ressoador ou Ressonador
¢ Cristal

¢ Híbrido ou Circuitos de oscilação

Simples e barato, porém impreciso.


Nesse caso seria melhor utilizar o RC interno do PIC.
Sem perda de uma I/O.

RESSONADOR CRISTAL

Bem mais precisos e estáveis que os RCs.


Existem dois tipos: os de 2 pinos e os de 3 pinos. O mais estável e preciso de todos e sem duvidas o mais caro.
Ambos nos obriga a perder duas I/Os. O cristal pode ser ligado diretamente aos pinos OSC1 e OSC2.
Perdemos também duas I/Os.

8
10/30/2007

INSTRUÇÕES SFRS – SPECIAL FUNCTION REGISTERS


¢ STATUS, PCON • CCP1CON, CCOR1H,
¢ OPTION CCOR1L
¢ INTCON, PIR1, PIE1 • CMCON
¢ PCL, PCLATH • VRCON
¢ TRIS • TXSTA, RCSTA
¢ PORTS • SPBRG
¢ TMR0, TMR1, TMR2 • TXREG, RCREG
¢ EEADR, EEDATA • FSR, INDF
¢ EECON1, EECON2

GERAIS 8051
¢ Status
— Relacionado a operações aritméticas, indica estouros
(C-Carry e DC-Digit Carry)

¢ PCON
— Configuração da frequência do oscilador interno
37KHz ou 4MHz

GERAIS GERAIS
¢ OPTION ¢ Configuram e identificam todas as interrupções
— Habilitação de Pull-ups do PORTB do PIC
— Configuração de Pre-scaler ¢ INTCON
— Configuração do TMR0 — Interrupções principais: Timer0, Interrupção
— Seleção de borda para interrupção externa Externa, Interrupção por mudança de estado, Chave
geral de interrupções (GIE) e Chave geral para
Interrupção de periféricos
¢ Programas se referenciam a este registrador
¢ PIR1, PIE1
como OPTION_REG pois PICs antigos tem
— Interrupção de periféricos: EEPROM, Comparadores,
instrução chamada OPTION USART, CCP, Timer1 e Timer2

9
10/30/2007

GERAIS PORTAS
¢ PCL, PCLATH ¢ Bitsdestes registradores configuram pinos da
— 8 bits menos significativos do PC (Program Counter) porta como entrada ou saída
que indica próxima instrução do programa a ser — 1 = Entrada e 0 = Saída
executada
¢ TRISA
— Configura PORTA
¢ TRISB
— Configura PORTB

PORTAS CONTADORES/TIMERS
¢ Dependendo da configuração do TRIS podemos ¢ TMR0
ler e escrever nas portas usando estes — Timer0: Contador de 8 Bits com possibilidade
incremento automático pelo clock da máquina ou por
registradores
sinal externo. Estouro gera interrupção
¢ TMR1
¢ PORTA — Timer1: Contador de 16 Bits
¢ TMR1H, TMR1L
— Leitura/Escrita na porta A
— T1CON: Configuração do Timer1
¢ PORTB
¢ TMR2
— Leitura/Escrita na porta B
— Timer1: Contador de 8 Bits. Estouro gerado por
comparação com PR2
— T2CON: Configuração do Timer2

EEPROM EEPROM
¢ EEADR ¢ EECON1
— Especifica endereço para escrita/leitura da EEPROM — Responsável por operações de escrita e leitura da
¢ EEDATA EEPROM e detecção de erro
— Nas operações de gravação armazena dado a ser ¢ EECON2
gravado na EEPROM no endereço indicado por — Registrador “virtual” (não está implementado na
EEADR memória) usado por segurança somente durante
— Nas operações de leitura armazena dado lido da inicialização do ciclo de escrita da EEPROM
EEPROM no endereço indicado por EEADR

10
10/30/2007

MÓDULO CCP MÓDULO COMPARADOR


¢ CCP = Capture, Compare e PWM ¢ CMCON

¢ CCP1CON — Configuração dos comparadores internos existentes

— Configura em qual dos 3 modos trabalhar


¢ CCPR1H e CCPR1L
— Registradores complementares de operação

MÓDULO USART ROTINAS


¢ TXSTA, RCSTA ¢2 Tipos
— Configuram e monitaram transmissão/recepção do — Rotina de Desvio
módulo USART — Rotina de Chamada
¢ SPBRG
— Configuração de BaudRate

¢ TXREG, RCREG
— Buffers de transmissão e recepção

ROTINA DE DESVIO ROTINA DE DESVIO


¢ Asrotinas de desvio são utilizadas, geralmente, MAIN
para deixar o programa mais estruturado e BTFSS CHAVE
organizado. BSF LED
BTFS CCHAVE
¢ GOTO
BCF LED
— GOTO nome ;Pula para a linha “nome”
GOTO MAIN
— GOTO $+/-3 ;Pula +/- 3 linhas

11
10/30/2007

ROTINA DE DESVIO ROTINA DE CHAMADA


MAIN ¢ Asrotinas de chamada são utilizadas quando
BTFSS CHAVE uma tarefa deve ser repetida várias vezes e não
BSF LED se deseja reescrevê-la para não gastar memória
BTFS CCHAVE
de programa.
BCF LED
¢ CALL
GOTO MAIN
— CALL nome ;chama pela função “nome”
— RETURN ;finaliza a rotina e volta o ponteiro
— RETLW k ;finaliza a rotina e volta o ponteiro e
armazena o valor de k no registrador W

DECISÕES DECISÕES
¢O PIC disponibiliza algumas instruções capazes ¢ BTFSC PORTA,1
de executar testes e tomar decisões. Essas ¢ LINHA1
instruções testam se determinado bit de um
registrador está setado(1) ou não(0). ¢ LINHA2

— btfss f,b ;Testa o bit (b) do registrador (f) e pula a ¢ BTFSS PORTA,1
próxima linha se a resposta for 1 ¢ LINHA1
— btfsc f,b ;Testa o bit (b) do registrador (f) e pula a
próxima linha se a resposta for 0 ¢ LINHA2

DECISÕES DECISÕES
¢ BTFSC PORTA,1 ¢ #DEFINE CHAVE, PORTA,1
¢ LINHA1 ;Passa por esta linha se f,b=1
¢ LINHA2 ;Passa por esta linha se f,b=0 ¢ BTFSC CHAVE
¢ LINHA1 ;Passa por esta linha se f,b=1
¢ BTFSS PORTA,1 ¢ LINHA2 ;Passa por esta linha se f,b=0
¢ LINHA1 ;Passa por esta linha se f,b=0
¢ LINHA2 ;Passa por esta linha se f,b=1 ¢ BTFSS CHAVE
¢ LINHA1 ;Passa por esta linha se f,b=0
¢ LINHA2 ;Passa por esta linha se f,b=1

12
10/30/2007

ROTINA DE DESVIO TRABALHANDO COM BITS E FLAGS


#DEFINE CHAVE PORTA,1
¢ Setando e Zerando bits
— BSF f,b ;seta (=1) o bit (b) do registrador (f)
MAIN
— BCF f,b ;zera (=0) o bit (b) do registrador (f)
BTFSS CHAVE
BSF LED
BTFSC CHAVE
BCF LED
GOTO MAIN

ROTINA DE DESVIO
#DEFINE CHAVE PORTA,1 MAIN
#DEFINE LED PORTA,0 BTFSS CHAVE ;Se Chave em estado lógico 1 (Não Acionada), pule 1 linha

BSF LED ;Chave em estado lógico 0 (Acionada), Seta o estado lógico do LED para 1 (Ligado)

MAIN BTFSC CHAVE ;Chave em estado lógico 1 (Não Acionada), Se Chave em estado lógico 0
(Acionada), pule 1 linha
BTFSS CHAVE
BCF LED ;Chave em estado lógico 1 (Não Acionada), Seta o estado lógico do LED para 0
BSF LED (Desligado)

BTFSC CHAVE GOTO MAIN


BCF LED
GOTO MAIN

TRABALHANDO COM PORTAS TRABALHANDO COM PORTAS


¢ Leitura de uma Porta ¢ MOVF PORTB,W

¢ Escrita em uma Porta ¢ MOVWF DADO

¢ Bit a Bit
¢ Byte Completo

13
10/30/2007

OPERANDO COM BANCOS

OPERANDO COM BANCOS OPERANDO COM BANCOS


BCF STATUS,RP0 ; SETA Banco 0 DE MEMORIA #DEFINE BANK0 BCF STATUS,RP0
BSF STATUS,RP0 ; SETA Banco 1 DE MEMORIA #DEFINE BANK1 BSF STATUS,RP0

INICIO
BANK1 ; Seta Banco 1 Ativo
(...)
BANK0 ; Seta Banco 0 Ativo
(...)

#INCLUDE<P16F628A.INC>
__CONFIG _WDT_OFF & _INTRC_OSC_NOCLKOUT &
TRABALHANDO COM PORTAS _MCLRE_OFF

INICIO ; Rotina de configuração do PIC #DEFINE BANK0 BCF STATUS,RP0


CLRF PORTA ; Limpa a Porta A #DEFINE BANK1 BSF STATUS,RP0
#DEFINE LED PORTA,0
BANK1 ; Seta Banco 1 Ativo #DEFINE CHAVE PORTA,1
MOVLW B'11111110' ; Move para o WORK o byte
MOVWF TRISA ; Move W p/ TRISA (RA.0=Saída e ORG 0x00
o demais pinos como Entrada GOTO INICIO
BANK0 ; Seta Banco 0 Ativo
MOVLW B'00000111' ; Passa o Byte para o Work
MOVWF CMCON ; Desabilita comparadores

14
10/30/2007

INICIO
CLRF PORTA
ADIÇÃO - ADDLW K
BANK1
MOVLW B'11111110'
MOVWF TRISA ¢ Flags Afetados: Z, DC e C

BANK0
¢ Exemplo:
MOVLW B'00000111'
MOVWF CMCON ADDLW 0x20
Soma 20h em W
MAIN
BTFSS CHAVE Guarda o valor em W
BSF LED
BTFSC CHAVE
BCF LED
GOTO MAIN
end

ADIÇÃO - ADDLW K ADIÇÃO – ADDWF F,D

¢ Exemplo: ¢ Flags Afetados: Z, DC e C


ADDLW 0x20
¢ Exemplo:

¢ OBS.: Considere: INTCON = 7h e W=20h;


Caso o valor de W somado com 20h ADDWF INTCON, F
ultrapasse FFh, o Bit C do STATUS será setado. Soma 7h em W
Caso o valor de W seja 0h, o bit Z será Guarda valor em INTCON (F)
setado. INTCON = 27h e W = 20h

ADIÇÃO – ADDWF F,D SUBTRAÇÃO - SUBLW K

¢ Flags Afetados: Z, DC e C
¢ Exemplo 2:
Considere: INTCON = 7h e W=20h;
¢ Exemplo:
ADDWF INTCON, W
Considere: W = 01h;
W = 27h e INTCON=7h
SUBLW 0x20 (20h-01h)
Subtrai W de 20h
¢ OBS .:
Guarda 19h em W
Em ambos exemplos os flags foram zerados.

15
10/30/2007

SUBTRAÇÃO - SUBLW K SUBTRAÇÃO - SUBWF F,D

¢ Exemplo 2: ¢ Flags Afetados: Z, DC e C


Considere: W = 02h;
SUBLW 0x00 (00h-02hh) ¢ Exemplo:
W = -02h Considere: W = 20h e INTCOM = 0x07;
¢ Flags.:
SUBWF INTCON, F (07h-20h)
Z=0 (Resultado diferente de 0)
Subtrai W de “f” e guarda em “d”
C=0 (Resultado negativo)
C e Z são zerados, e DC é setado
DC=0 (Houve emprestimo do 4º para o
terceiro Bit de W)

OPERAÇÕES LÓGICAS - ANDLW K OPERAÇÕES LÓGICAS - ANDWF F,D

¢ Flags Afetados: Z ¢ Flags Afetados: Z

¢ Exemplo: Considere: W = 95h ¢ Exemplo:

ANDLW 0x0F Considere: W = 77h e PORTA = FFh


W 10010101 ANDWF PORTA, W
W 01110111
AND
AND
k 00001111
PORTA 11111111
W 00000101 W 01110111
Z será zerado indicando resultado não nulo Z será zerado indicando resultado não nulo

OPERAÇÕES LÓGICAS - IORLW K OPERAÇÕES LÓGICAS - IORWF F, D

¢ Flags Afetados: Z ¢ Flags Afetados: Z

¢ Exemplo: Considere: W = 95h ¢ Exemplo:

IORLW 0x0F Considere: W = 77h e PORTA = FFh


W 10010101 IORWF PORTA, W
OR W 01110111
k 00001111 OR
W 10011111 PORTA 11111111
Z será zerado indicando resultado não nulo W 11111111
Z será zerado indicando resultado não nulo

16
10/30/2007

OPERAÇÕES LÓGICAS - XORLW K OPERAÇÕES LÓGICAS - XORWF F,D

¢ Flags Afetados: Z ¢ Flags Afetados: Z

¢ Exemplo: ¢ Exemplo:

Considere: W = 77h e k = FFh Considere: W = 22h e PORTA = 22h


XORLW 0x0F XORWF PORTA, W
W 00100010
W 01110111
XOR
XOR
PORTA 00100010
k 11111111
PORTA 00000000
W 10001000
Z será setado indicando resultado nulo
Z será zerado indicando resultado não nulo

OPERAÇÕES LÓGICAS - COMF F,D

¢ Flags Afetados: Z

¢ Exemplo:

Considere: PORTA = FFh


COMF PORTA, W

PORTA 01111111
W 10000000
Z será zerado indicando resultado não nulo

17

Vous aimerez peut-être aussi