Você está na página 1de 158

19/2/2008 1

Microcontrolador PIC
Alexandre Cunha Oliveira
Petrolina Abril de 2007
19/2/2008 2
Microcontrolador PIC
X
Microcontrolador x Microprocessador
19/2/2008 3
Microcontrolador PIC
Microcontrolador PIC Descrio Geral
Utiliza arquitetura Harvard (RISC);
Permite interrupes de origem interna e externa;
O pipeline permite execues de instrues em um
ciclo, exceto os desvios;
Possui 35 instrues;
Possui blocos perifricos internos.
19/2/2008 4
Microcontrolador PIC
Arquiteturas
Os microcontroladores com arquitetura Havard so
chamados de RISC (Reduced Instruction Set
Computer)
Os microcontroladores com a arquitetura de Von
Neumann so tambm chamados CISC (Complex
Instruction Set Computer)
19/2/2008 5
Microcontrolador PIC
Arquitetura Havard
Capacidade de processamento maior, sem
necessidade de elevar a freqncia de clock da CPU.
Separao das memrias de dados e programa:
Possibilidade de representar instrues por palavras
de mais que 8 bits (Ex 14bits PIC)
Busca e execuo simultnea de instrues.
19/2/2008 6
Microcontrolador PIC
Diagrama de
Blocos
19/2/2008 7
Microcontrolador PIC
Unidade Central de Processamento
Realiza a extrao das instrues, decodificao e
execuo.
19/2/2008 8
Microcontrolador PIC
Unidade Lgica Aritmtica
Executa as operaes de adio, subtrao, desloca-
mento e operaes lgicas. O PIC 16F877 possui uma
ULA de 8bits.
19/2/2008 9
Microcontrolador PIC
Registrador de Status (Estado)
bit 0 C (Carry) Transporte
bit 1 DC (Digit Carry) Transporte de dgito
bit 2 Z (bit Zero) Indicao de resultado igual a zero
bit 3 PD (Bit de baixa de tenso Power Down)
19/2/2008 10
Microcontrolador PIC
Registrador de Status (Estado)
bit 4 TO Time-out (transbordo do Watchdog)
bits 5 e 6 RP1:RP0 (bits de seleo de banco de registros
da RAM) Endereamento direto.
11 = banco de registros 3
10 = banco de registros 2
01 = banco de registros 1
00 = banco de registros 0
bit 7 IRP (Bit de seleo de banco de registros) -
Endereamento indireto.
1 = bancos 2 e 3 (endereos de 100h a 1FFh)
0 = bancos 0 e 1 (endereos de 00h a FFh)
19/2/2008 11
Microcontrolador PIC
Registrador Option
bits 0 a 2 PS0, PS1, PS2 (bits de seleo do divisor
Prescaler) - Estes trs bits definem o fator de diviso do
prescaler.
19/2/2008 12
Microcontrolador PIC
Registrador Option
bit 3 PSA (Bit de Atribuio do Prescaler) Atribuio
do prescaler.
1 = prescaler atribudo ao watchdog;
0 = prescaler atribudo ao temporizador TMR0.
19/2/2008 13
Microcontrolador PIC
Registrador Option
19/2/2008 14
Microcontrolador PIC
Registrador Option
bit 4 T0SE (bit de seleo de borda ativa em TMR0)
Sinal atravs do pino RA4/TOCK1.
1 = borda de descida;
0 = borda de subida.
bit 5 TOCS (bit de seleo da fonte de clock em TMR0)
1 = sinais externos (RA4/TOCKI);
0 = do clock interno.
19/2/2008 15
Microcontrolador PIC
Registrador Option
bit 6 INDEDG (bit de seleo da borda de interrupo)
Interrupo atravs do pino RB0/INT.
1 = borda de subida;
0 = borda de descida.
bit 7 RBPU (Habilitao dos pull-up nos bits da porta B)
1 = resistncias de pull-up desligadas;
0 = resistncias de pull-up ligadas.
19/2/2008 16
Microcontrolador PIC
Portas A, B, C, D e E
Bit do registrador TRISx = 1 pino da porta x ser uma
entrada;
Bit do registrador TRISx = 0 pino da porta x ser uma sada;
onde x =A, B, C, D, E, para o PIC 16F877.
19/2/2008 17
Microcontrolador PIC
Configurao da Porta A
Pinos 0, 1, 2, 3 e 4 da porta A so declarados como entradas.
Resumo dos registradores associados a porta A
19/2/2008 18
Microcontrolador PIC
Timer
19/2/2008 19
Microcontrolador PIC
Timer 0
Contador/Timer de 8 bits;
Registrador de contagem de escrita e leitura;
Pr-escalonador (divisor de freqncia)
programvel;
Utiliza sinal de clock interno ou externo;
Gera interrupo quando a contagem muda de FF
para 00;
Permite selecionar o tipo de transio quando usa
clock externo (Borda de subida ou descida).
19/2/2008 20
Microcontrolador PIC
Timer 0
# Modos de contagem
Modo timer - Incrementa a cada ciclo de instruo
(sem pr-escalonador).
Modo de contagem - Incrementar a cada subida
ou descida do sinal no pino RA4/TOCKL (borda
definida pelo bit T0SE - bit 4 do Reg. OPTION).
Registradores associados:
19/2/2008 21
Microcontrolador PIC
Diagrama de Blocos Timer 0
19/2/2008 22
Microcontrolador PIC
Timer 1
Contador/Timer 16 bits (dois registradores de 8
bits (TMR1H e TMR1L);
O par de registradores (TMR1H e TMR1L)
incrementa de 0000h a FFFFh e retorna a 0000h
(overflow).
# Modos de Operao:
Como timer: Timer 1 incrementa a cada ciclo de
instruo;
Como contador: Timer 1 incrementa a cada
transio do sinal de clock externo.
19/2/2008 23
Microcontrolador PIC
Timer 1
O modo de operao determinado pelo bit de
seleo de clock, TMR1CS (bit 1 do Reg. T1CON).
Bit 0 (bit TMR1ON bit de ativao do Timer 1)
1 = Timer 1 ativado
0 = Timer 1 desativado;
19/2/2008 24
Microcontrolador PIC
Timer 1
Bit 1 (bit TMR1CS bit que seleciona a fonte de
clock do Timer 1)
1 = Sinal de clock externo (pino RC0/T1OSO/T1CKI
(contagem ocorre na borda de subida do sinal)
0 = Sinal interno de clock (Fosc/4).
Bit 2 (bit T1SYNC bit de sincronizao do clock
externo)
TMR1CS =1
1 = No sincroniza sinal de clock externo
0 = Sincroniza sinal de clock externo.
TMR1CS =0
No tem efeito
19/2/2008 25
Microcontrolador PIC
Timer 1
Bit 3 (bit T1OSCEN bit de habilitao do oscilador
interno do Timer 1) configura-se o PIC para operar
com oscilador interno. O mesmo gera um sinal com
uma freqncia de 200KHz (a 4MHz a depender do
PIC).
1 = oscilador habilitado
0 = oscilador desligado (elimina consumo de energia)
Bits 5-4 (bits de seleo do pr-escalonador do
sinal da entrada de clock)
11 = Escalonamento de 1:8
10 = Escalonamento de 1:4
01 = Escalonamento de 1:2
00 = Escalonamento de 1:1
19/2/2008 26
Microcontrolador PIC
Timer 1
Bits 7-6 (bits no usados lidos como 0)
19/2/2008 27
Microcontrolador PIC
Timer 1
Registradores associados ao Timer 1 (modos
Timer/Contador)
19/2/2008 28
Microcontrolador PIC
Timer 2
Timer de 8 bits com um pr-escalonador e ps-
escalonador.
Pode ser usado como a base de tempo no modo PWM
dos mdulos CCP.
TMR2 um registra-
dor de escrita e leitura
e apagado em qual-
quer evento de reset.
19/2/2008 29
Microcontrolador PIC
Timer 2
Bits 1-0 (bit T2CKPS1 e T2CKPS0 bit de seleo
do pr-escalonador) 00 = Escalonamento de 1
01 = Escalonamento de 4
1x = Escalonamento de 16
Registrador de Controle do Timer 2 T2CON
(endereo 12h)
19/2/2008 30
Microcontrolador PIC
Timer 2
Bit 2 (bit TMR2ON bit de ativao do Timer 2).
1 = Timer 2 ativado
0 = Timer 2 desativado;
Bits 6-3 (bits TOUTPS3:TOUTPS0 bits de seleo
do ps-escalonador)
0000 = Escalonamento de 1
0001 = Escalonamento de 2
0010 = Escalonamento de 3

1110 = Escalonamento de 15
1111 = Escalonamento de 16
19/2/2008 31
Microcontrolador PIC
Timer 2
Bit 7 (bit no usado lido como 0)
Registradores associados com o Timer 2 (modos
Timer/Contador)
19/2/2008 32
Microcontrolador PIC
Captura/Comparao/PWM
Os mdulos CCP (Captura/Comparao/PWM) so
formados por um registrador de 16 bits que pode operar
como:
Registrador de captura de 16 bits;
Registrador de comparao de 16 bits
Registrador de duty-cycle no modo PWM
Mestre/Escravo.
19/2/2008 33
Microcontrolador PIC
Captura/Comparao/PWM
Mdulo CCP1
O registrador CCP do mdulo CCP1 (CCPR1)
formado por dois registradores de 8 bits: CCPR1L e
CCPR1H.
O registrador CCP1CON controla a operao do CCP1.
Special Event Trigger gerado quando no modo
comparao ocorre a igualdade entre o CCPR1 e o
registrador de comparao.
No Special Event Trigger o contedo do Timer 1
resetado.
19/2/2008 34
Microcontrolador PIC
Captura/Comparao/PWM
Mdulo CCP2
O registrador CCP do mdulo CCP2 (CCPR2)
formado por dois registradores de 8 bits: CCPR2L e
CCPR2H.
O registrador CCP2CON controla a operao do CCP2.
O special event trigger gerado no modo comparao
quando o contedo do registrador de contagem do
Timer 1 iguala ao contedo do registrador de
comparao.
Special Event Trigger reseta o Timer 1 e pode iniciar
uma converso A/D.
19/2/2008 35
Microcontrolador PIC
Captura/Comparao/PWM
Modo de operao do mdulo CCP e recursos de Timer
necessrios
Interao entre os mdulos CCP
19/2/2008 36
Microcontrolador PIC
Captura/Comparao/PWM
Registradores de Controle CCP1CON e CCP2CON
(endereos 17h e 1Dh)
Bits 3-0 (bit CCPxM3: CCPxM0 bits de seleo de
modo de operao) Estes bits selecionam o modo
como operaro os blocos CCP1 e CCP2.
0000 = Modos Captura/Comparao/PWM desligados
(reseta mdulo CCPx )
19/2/2008 37
Microcontrolador PIC
Captura/Comparao/PWM
0100 = Modo captura, a cada 1 transio negativa
(10);
0101 = Modo captura, a cada 1 transio positiva (01);
0110 = Modo captura, a cada 4 transies positivas
(10);
0111 = Modo captura, a cada 16 transies positivas
(10);
1000 = Modo comparao, seta pino de sada (bit
CCPxIF setado);
1001 = Modo comparao, reseta pino de sada (bit
CCPxIF setado);
1010 = Modo comparao, gera interrupo (bit CCPxIF
setado, pino CCPx no afetado);
19/2/2008 38
Microcontrolador PIC
Captura/Comparao/PWM
1011 = Modo comparao, ativa Special Event
trigger(bit CCPxIF seta, pino CCPx no afetado);
CCP1 reseta TMR1; CCP2 reseta TMR1 e inicia uma
converso A/D (se mdulo A/D habilitado);
11xx = Modo PWM.
Bits 5-4 (bits CCPxX:CCPxY bits menos
significativos do PWM) Estes bits representam os
dois bits menos significativos do valor de duty-cycle do
sinal PWM.
Modo Captura: No usado
Modo Comparao: No usado
Modo PWM: Dois bits LSB do duty-cycle do sinal PWM.
Os oito MSBs so gravados no registrador CCPRxL.
19/2/2008 39
Microcontrolador PIC
Captura/Comparao/PWM
Modo Captura
O valor de 16 bits do registrador TMR1 copiado para
os registradores CCPR, quando um dos eventos ocorre
no pino RC2/CCP1 e/ou RC1/CCP2 (PIC16F877) :
A cada borda de descida do sinal no pino RC2, RC1
(PIC 16F877);
A cada borda de subida do sinal no pino RC2, RC1
(PIC 16F877);
A cada 4 bordas de subida do sinal no pino RC2, RC1
(PIC 16F877);
A cada 16 bordas de subida do sinal no pino RC2,
RC1 (PIC 16F877);
19/2/2008 40
Microcontrolador PIC
Captura/Comparao/PWM
Modo Captura
Quando ocorre o evento de captura, o flag CCP1IF (bit
2 do Reg. PIR1) setado;
Se uma outra captura ocorrer antes que o valor no
registrador CCPR1 for lido, o valor anterior ser perdido;
No modo captura os pinos RC2/CCP1, RC1/CCP2
devem ser configurados como uma entrada, setando o
bit 1 e 2 do registrador TRISC;
O Timer 1 deve estar operando no modo timer ou no
modo contador com sincronizao do sinal de clock
externo com o clock interno.
19/2/2008 41
Microcontrolador PIC
Captura/Comparao/PWM
Modo Captura Diagrama de Blocos
19/2/2008 42
Microcontrolador PIC
Captura/Comparao/PWM
Modo Comparao
O valor do registrador CCPR1 (16 bits) e/ou CCPR2 (16
bits) (so) constantemente comparado(s) com o valor
do registrador TMR1.
Quando os valores se igualam, o pino RC2/CCP1 e/ou
RC1/CCP2 (so):
Ativado(s);
Desativado(s);
Permanece(m) inalterado(s).
Simultaneamente o flag CCP1IF setado, gerando uma
interrupo, se habilitada.
19/2/2008 43
Microcontrolador PIC
Captura/Comparao/PWM
Modo Comparao
No modo comparao os pinos RC2/CCP1, RC1/CCP2
e RB3/CCP1 devem ser configurados como sadas.
No modo de comparao pode ser gerado um Special
Event Trigger.
No mdulo CCP1, reseta o par de registradores que
forma o TMR1;
No mdulo CCP2 reseta o par de registradores que
forma o TMR1 e pode iniciar uma converso A/D (se o
mdulo A/D est habilitado).
19/2/2008 44
Microcontrolador PIC
Captura/Comparao/PWM
Modo Comparao
19/2/2008 45
Microcontrolador PIC
Captura/Comparao/PWM
Registradores associados com o Capture, Compare e
Timer 1
19/2/2008 46
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
O bloco CCPx produz um sinal PWM com uma
resoluo de at 10 bits.
Um sinal PWM caracterizado pelo seu perodo e o
duty-cycle, que corresponde ao tempo em que o sinal
permanece em nvel alto.
O perodo do sinal PWM especificado pelo registrador
PR2:
Perodo PWM = [(PR2) + 1] 4 TOSC (TMR2 prescale
value).
19/2/2008 47
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
Quando TMR2 igual a PR2, os seguintes eventos
ocorrem:
O TMR2 apagado;
O pino CCP1 setado (exceto se o duty-cycle do
PWM = 0%, quando o CCP1 no ser setado);
O PWM duty-cycle copiado de CCPR1L para
CCPR1H.
O duty-cycle do PWM definido escrevendo para o
registrador CCPR1L (bits mais significativos) e para os
bits 5 e 4 do registrador CCP1CON.
19/2/2008 48
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
Determinao do duty-cycle em termos de tempo:
Duty Cycle do PWM = (CCPR1L:CCP1CON<5:4>)
Tosc (TMR2 prescale value)
O novo valor de duty-cycle s atualizado no CCPR1H,
quando os valores dos registradores PR2 e TMR2
coincidirem (ao fim do perodo PWM).
No modo PWM CCPR1H um registrador apenas de
leitura.
19/2/2008 49
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
Passo para ajustar o mdulo CCP para funcionar no
modo PWM:
Ajustar o perodo do sinal PWM, escrevendo um valor adequado
no registrador PR2;
Ajustar o duty-cycle do sinal PWM, escrevendo um valor
adequado para o registrador CCPR1L e para os bits 5 e 4 do
registrador CCP1CON;
Configurar o pino RC2/CCP1, RC1/CCP2 como uma sada;
Ajustar o valor do pr-escalonador e habilitar o Timer 2
configurando o registrador T2CON;
Configurar o mdulo CCP1 e/ou CCP2 para operao no modo
PWM;
19/2/2008 50
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
19/2/2008 51
Microcontrolador PIC
Captura/Comparao/PWM
Registradores associados com o PWM e Timer 2
19/2/2008 52
Microcontrolador PIC
CONVERSOR A/D
O mdulo do conversor A/D possui 8 entradas
analgicas;
Um sample-and-hold conectada a entrada do
conversor A/D a partir de um multiplex 8 x 1;
O conversor A/D gera uma palavra binria de 10 bits;
O mdulo A/D tem duas entradas de tenso de
referncia (alta e baixa), selecionadas por software;
O mdulo conversor A/D pode operar com o PIC
estando no modo SLEEP (utiliza oscilador RC interno.
19/2/2008 53
Microcontrolador PIC
CONVERSOR A/D
O conversor A/D possui quatro registradores:
Registrador do byte mais significado do resultado da
converso (ADRESH);
Registrador do byte menos significado do resultado da
converso (ADRESL);
Registrador de controle 0 (ADCON0);
Registrador de controle 1. (ADCON1).
Quando a converso concluda, o resultado
carregado em ADRES, o bit GO/DONE (bit 2 do Reg.
ADCON0) resetado e o flag de interrupo, bit ADIF,
setado.
19/2/2008 54
Microcontrolador PIC
CONVERSOR A/D
Os canais de entrada analgicos devem ter seus
correspondentes bits TRIS ajustados para que os
pinos das portas A e E se comportem como entradas.
Aps o perodo de aquisio a converso A/D pode ser
iniciada conforme os seguintes passos:
Configure o mdulo A/D;
Configure os pinos de entrada analgica, as
tenses de referncia e os pinos de I/O digital
(ADCON1);
Selecione o canal de entrada analgica (ADCON0);
Selecione a freqncia do sinal de clock do
conversor A/D (ADCON0);
Ative o mdulo A/D;
19/2/2008 55
Microcontrolador PIC
CONVERSOR A/D
Configure a interrupo do mdulo A/D (se desejado);
Reset o bit ADIF;
Sete o bit ADIE;
Sete o bit GIE;
Aguarde o tempo de aquisio requerido;
Inicie a converso;
Sete o bit GO/DONE (ADCON0);
Aguarde o tempo de converso ter transcorrido;
Realize um POLLING no bit GO/DONE, verificando se
o seu valor zero (indicativo de fim de converso
A/D);
ou aguarde pela interrupo gerada pelo mdulo A/D
ao fim da converso;
19/2/2008 56
Microcontrolador PIC
CONVERSOR A/D
Leia o par de registradores (ADRESH:ADRESL),
resete o bit ADIF se a interrupo do conversor A/D
est sendo utilizada;
Para realizar uma nova converso retorne ao passo 1
ou 2 (antes de uma nova converso ser iniciada, deve
ser aguardado um tempo de 2TAD, que o tempo de
converso por bit, cujo valor definido na tabela 1).
19/2/2008 57
Microcontrolador PIC
CONVERSOR A/D
O conversor A/D necessita de no mnimo 12 TAD para
realizar uma converso de 10 bits. A fonte do clock do
conversor A/D selecionada por software entre as
possibilidades abaixo:
2Tosc;
8Tosc;
32Tosc;
Oscilador RC interno.
Para uma converso correta, o clock do conversor A/D
deve ser selecionado para garantir um TAD mnimo
de 1.6s.
19/2/2008 58
Microcontrolador PIC
CONVERSOR A/D
TAD x Mxima freqncia de converso
19/2/2008 59
Microcontrolador PIC
CONVERSOR A/D
O par de registradores ADRESH:ADRESL comporta 16
bits, assim, o valor convertido de 10 bits pode ser
justificado a direita ou esquerda (bit ADFM).
Os bits extras no utilizados so carregados com 0
(zeros).
Quando o mdulo A/D no estiver sendo utilizado, os
registradores ADRESH:ADRESL podem ser usados
como dois registradores de propsito geral de 8 bits.
19/2/2008 60
Microcontrolador PIC
CONVERSOR A/D
Justificao do resultado da converso A/D
19/2/2008 61
Microcontrolador PIC
CONVERSOR A/D
Diagrama de
blocos do
conversor
A/D
19/2/2008 62
Microcontrolador PIC
CONVERSOR A/D
Registrador ADCON0 - Controla a operao do mdulo
A/D (endereo 1Fh).
Bit 0 (bit ADON bit que ativa o conversor A/D) Este
bit ativa a operao do conversor A/D.
1 = conversor A/D ativado
0 = conversor A/D desligado
Bit 1 (bit no usado lido como 0)
19/2/2008 63
Microcontrolador PIC
CONVERSOR A/D
Bit 2 (bit GO/ bit de status de converso) Este bit
indica se uma converso iniciada j foi concluda.
Se ADON =1
1 = converso A/D em andamento
0 = no h converso A/D em andamento (esse bit
automaticamente resetado quando a converso A/D
concluda).
Bits 5-3 (bits CHS2:CHS0 bits de seleo de canal)
Estes bits selecionam a entrada analgica cujo sinal
ser convertido.
000 = canal 0, (RA0/AN0)
001 = canal 1, (RA1/AN1)
010 = canal 2, (RA2/AN2)
19/2/2008 64
Microcontrolador PIC
CONVERSOR A/D
011 = canal 3, (RA3/AN3)
100 = canal 4, (RA5/AN4)
101 = canal 5, (RE0/AN5)
110 = canal 6, (RE1/AN6)
111 = canal 7, (RE2/AN7)
Bits 7-6 (bits ADCS1:ADCS0 bits de seleo de
clock) Estes bits selecionam a fonte do sinal de
clock para o conversor A/D.
00 = FOSC/2
01 = FOSC/8
10 = FOSC/32
11 = FRC (clock derivado de um oscilador RC)
19/2/2008 65
Microcontrolador PIC
CONVERSOR A/D
Registrador ADCON1 Configura a funo dos pinos das
portas (A e E) (endereo 9Fh)
Bits 3-0 (bits PCFG3:PCFG0 bits de controle de
configurao ps portas A/D) Este bits configuram
os pinos analgicos das Portas A e E.
19/2/2008 66
Microcontrolador PIC
CONVERSOR A/D
19/2/2008 67
Microcontrolador PIC
CONVERSOR A/D
Bits 6-4 (bits no usados lido como 0)
Bit 7 (bit ADFM bit de seleo de formato do
resultado da converso A/D) Este bit seleciona o
formato de justificao do resultado gerado pelo
conversor A/D.
1 = Justificao direita. Os 6 bits mais significativos de
ADRESH sero iguais a 0.
0 = Justificao esquerda. Os 6 bits menos
significativos de ADRESL sero iguais a 0.
19/2/2008 68
Microcontrolador PIC
CONVERSOR A/D
Registradores associados com o mdulo do conversor
A/D
19/2/2008 69
Microcontrolador PIC
Comunicao Serial
Comunicao Serial
A transmisso bit-serial converte a mensagem em um bit
por vez atravs de um canal.
Os bits individuais so ento rearranjados no destino
para compor a mensagem original.
Taxa de Transferncia (Baud Rate)
Velocidade com que os dados so enviados atravs de
um canal e medido em transies eltricas por
segundo (Hz).
Na norma EIA232, ocorre uma transio de sinal por bit,
e a taxa de transferncia e a taxa de bit (bit rate) so
idnticas.
19/2/2008 70
Microcontrolador PIC
Comunicao Serial
Transmisso Assncrona x Transmisso Sncrona
Sistemas sncronos - Canais separados so usados para
transmitir dados e informao de tempo.
O canal de temporizao transmite pulsos de clock para
o receptor, que indica o instante de leitura do canal de
dados.
Sincronizao garantida.
19/2/2008 71
Microcontrolador PIC
Comunicao Serial
Transmisso Assncrona x Transmisso Sncrona
Em sistemas assncronos, a informao trafega por um
canal nico.
Um oscilador preciso no receptor ir gerar um sinal de
clock interno que igual (ou muito prximo) ao do
transmissor.
Para o protocolo serial mais comum, os dados so
enviados em pequenos pacotes de 10 ou 11 bits, dos
quais 8 constituem a mensagem.
Quando o canal est em repouso, o sinal correspondente
no canal tem um nvel lgico 1.
19/2/2008 72
Microcontrolador PIC
Comunicao Serial
Transmisso Assncrona x Transmisso Sncrona
Um pacote de dados sempre comea com um nvel
lgico 0 (start bit) para sinalizar ao receptor que um
transmisso foi iniciada.
O start bit inicializa um temporizador interno no receptor
avisando que a transmisso comeou e que sero
necessrios pulsos de clocks.
Seguido do start bit, 8 bits de dados de mensagem so
enviados na taxa de transmisso especificada.
O pacote concludo com os bits de paridade e de
parada (stop bit).
19/2/2008 73
Microcontrolador PIC
Comunicao Serial
Transmisso Assncrona x Transmisso Sncrona
19/2/2008 74
Microcontrolador PIC
Comunicao Serial
Checksum e Paridade
Rudos e distrbios eltricos momentneos podem
causar mudanas nos dados quando esto trafegando
pelos canais de comunicao.
Se o receptor falhar ao detectar isso, a mensagem
recebida ser incorreta.
Se um erro pode ser sinalizado, pode ser possvel
pedir que o pacote com erro seja reenviado, ou
prevenir que os dados sejam considerados corretos.
Se uma redundncia na informao for enviada, 1 ou
2 bits de erros podem ser corrigidos pelo hardware no
receptor antes que o dado chegue ao seu destino.
19/2/2008 75
Microcontrolador PIC
Comunicao Serial
Checksum e Paridade
O bit de paridade adicionado ao pacote de dados
com o propsito de deteco de erro.
Paridade-par (even-parity): Bit de paridade
escolhido de modo que o nmero total de dgitos 1
dos dados + bit de paridade seja um nmero par.
Na recepo recalcula-se a paridade e a compara com
o bit de paridade recebido. Se houve mudana de bit,
a paridade no ir coincidir, e um erro ser detectado.
Se um nmero par de bits for trocado, a paridade
coincidir e o dado com erro ser validado.
19/2/2008 76
Microcontrolador PIC
Comunicao Serial
Checksum e Paridade
Outro mtodo de deteco de erro envolve o clculo
de um checksum quando mensagens com mais de
um byte so transmitidas pelo canal de comunicao.
Um nmero de checksum adicionado a seqncia
do pacote de dados de tal forma que a soma dos
dados mais o checksum zero.
Na recepo os dados so adicionados pelo
processador local. Se a soma do pacote der resultado
diferente de zero, ocorreu um erro.
Na ocorrncia de erros improvvel (mas no
impossvel) que qualquer corrupo de dados resultem
em checksum igual a zero.
19/2/2008 77
Microcontrolador PIC
Comunicao Serial
Mdulo USART do PIC
O mdulo Transmissor Receptor Sncrono Assncrono
Universal (USART) pode ser configurado como um
sistema Full Duplex e opera segundo um padro de
comunicao serial como o RS232
O mesmo mdulo pode ser configurado como um
sistema Half Duplex sncrono.
O mdulo USART pode ser configurado nos seguintes
modos:
Assncrono (Full Duplex)
Sncrono Master (Half Duplex)
Sncrono Slave (Half Duplex)
19/2/2008 78
Microcontrolador PIC
Comunicao Serial
O mdulo formado pelos seguintes blocos:
Gerador de Baud Rate;
Circuito de Amostragem;
Transmissor Assncrono;
Receptor Assncrono.
Transmissor Assncrono
19/2/2008 79
Microcontrolador PIC
Comunicao Serial
Receptor Assncrono
19/2/2008 80
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Transmisso
(End. 98H)
Bit 0 (bit TX9D nono bit do dado transmitido) Este
bit pode representar um bit de paridade
implementado por software.
19/2/2008 81
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Transmisso
(End. 98H)
Bit 1 (bit TRMT status do registrador de
deslocamento do transmissor da USART) Este
bit indica se o registrador de deslocamento do
transmissor da USART est cheio ou vazio.
1 = Registrador de deslocamento vazio
0 = registrador de deslocamento cheio
Bit 2 (bit BRGH seleo de alta taxa de
transmisso (High Baud Rate)) Este bit seleciona
uma taxa de transmisso (baud rate) alta.
No modo Assncrono
19/2/2008 82
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Transmisso
(End. 98H)
1 = Alta taxa de transmisso
0 = Baixa taxa de transmisso.
No modo Sncrono
No usado
Bit 3 (bit no usado, lido como 0)
Bit 4 (bit SYNC bit de seleo do modo de
operao da USART) Este bit seleciona como a
USART operar, no modo assncrono ou sncrono.
1 = Modo sncrono
0 = Modo assncrono.
19/2/2008 83
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Transmisso
(End. 98H)
Bit 5 (bit TXEN bit de habilitao de transmisso)
Este bit habilita o mdulo de transmisso da USART.
1 = Transmisso habilitada
0 = Transmisso desabilitada.
Nota: SREN/CREN tem prioridade sobre o bit TXEN
no modo sncrono
Bit 6 (bit TX9 bit de habilitao da transmisso do
nono bit) Este bit habilita a transmisso do nono bit
de dados.
1 = Seleciona transmisso de 9 bits
0 = Seleciona transmisso de 8 bits.
19/2/2008 84
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Transmisso
(End. 98H)
Bit 7 (bit CSRC bit de seleo da fonte de clock
para a USART) Este bit seleciona a fonte do sinal
de clock quando a USART opera no modo sncrono.
Modo assncrono
No usado
Modo Sncrono
1 = Modo Mestre (clock gerado internamente pelo RG)
0 = Modo escravo (clock externo).
19/2/2008 85
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Recepo (End.
18H)
Bit 0 (bit RX9D nono bit do dado recebido) Este bit
pode representar um bit de paridade implementado
por software.
19/2/2008 86
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Recepo (End.
18H)
Bit 1 (bit OERR bit de erro de overrun ) Setado
quando um segundo byte gravado no registrador de
recepo, antes do byte anterior ter sido lido.
1 = Erro de overrun (este bit pode ser apagado
resetando o bit CREN)
0 = No houve erro de overrun.
Bit 2 (bit FERR bit de erro de frame) Este bit
setado quando detectado um erro de frame.
1 = Erro de frame (pode ser atualizado lendo o
registrador RCREG e recepo do prximo byte
vlido
0 = No houve erro de frame.
19/2/2008 87
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Recepo (End.
18H)
Bit 3 (bit ADDEN bit que habilita a deteco de
endereo) Este bit permite utilizar o nono bit da
palavra de dados para identificao de palavras de
endereo (RX9 1).
Modo assncrono, bit 9 habilitado
1 = Habilita deteco de endereo, habilita interrupo e
faz leitura do buffer de recepo quando RSR<8>
setado
0 = Desabilita a deteco de endereo. Todos os bytes
so recebidos e o nono bit pode ser usado como bit
de paridade.
19/2/2008 88
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Recepo (End.
18H)
Bit 4 (bit CREN bit que habilita a recepo no
modo contnuo) Este bit habilita a USART a
receber de forma contnua dados seriais.
Modo Assncrono
1 = habilita recepo contnua
0 = Desabilita recepo contnua.
Modo Sncrono
1 = habilita recepo contnua at o bit CREN ser
resetado (CREN tem prioridade sobre SREN)
0 = Desabilita recepo contnua.
19/2/2008 89
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Recepo (End.
18H)
Bit 5 (bit SREN bit de habilitao de recepo byte-
a-byte) Este bit habilita o mdulo de recepo da
USART a receber dados byte a byte.
Modo Assncrono
No usado nesse modo
Modo Sncrono (Mestre)
1 = habilita recepo byte-a-byte
0 = Desabilita recepo byte-a-byte.
Nota: Esse bit resetado aps a recepo do byte
Modo Sncrono (Escravo)
No usado nesse modo
19/2/2008 90
Microcontrolador PIC
Comunicao Serial
Registrador de Controle e Status da Recepo (End.
18H)
Bit 6 (bit RX9 bit de habilitao da recepo do
nono bit) Este bit habilita a recepo do nono bit de
dados.
1 = Seleciona recepo de 9 bits
0 = Seleciona recepo de 8 bits.
Bit 7 (bit SPEN bit de habilitao da porta serial)
Este bit ativa ou desliga o bloco de comunicao
serial.
1 = Porta serial habilitada (configura os pinos
RC7/RX/DT e RC6/TX/CK como pinos da porta serial)
0 = Porta serial desabilitada.
19/2/2008 91
Microcontrolador PIC
Comunicao Serial
Registradores associados com a transmisso
assncrona
19/2/2008 92
Microcontrolador PIC
Comunicao Serial
Registradores associados com a recepo
assncrona
19/2/2008 93
Microcontrolador PIC
Interrupes
Mecanismo que torna possvel responder a estmulos
externos ou internos.
Atravs do registrador INTCOM pode-se habilitar as
interrupes de forma individual ou de forma global.
O PIC 16F87X tem as seguintes fontes de Interrupo:
Interrupo externa (RB0/INT);
Interrupo de Relgio (TM0);
Interrupo da porta B (B4-B7);
Interrupo por captura e comparao (CCP1 e 2);
Interrupo da USART (buffer sada e entrada cheio);
Interrupo CCP;

19/2/2008 94
Microcontrolador PIC
Interrupes
O PIC 16F87X tem as seguintes fontes de Interrupo:
Estouro do relgio TMR1;
Estouro do relgio TMR2;
Fim de escrita EEPROM;
Fim de Converso A/D;
Atividade na SPI ou I
2
C;
Recebimento de dados na Porta Paralela Escrava;
Coliso no barramento.

19/2/2008 95
Microcontrolador PIC
Interrupes
RB0/INT desencadeada com um impulso ascendente
ou descendente (bit INTDG no registrador OPTION) no pino
INT (RB0).
Estouro do contador TMR0 na passagem de FFh para
00h seta o bit TOIF no registrador INTCON (contador de
tempo)
Pinos 4,5,6 e 7 da porta B devem ser definidos
previamente como entradas. A variao de entrada pe 1
no bit RBIF (INTCON). A interrupo pode ser
habilitada/desabilitada pondo 1 ou 0 no RBIE (INTCON)
Interrupo por comparao Pode ser habilitada atravs
dos bits CMIE (reg PIE1<6>) e PEIE (reg INTCON<6>).
Utiliza os comparadores C1 e C2
19/2/2008 96
Microcontrolador PIC
Interrupes
Inicialmente deve-se estabelecer quais interrupes
devem estar habilitadas bem como setar o bit GIE (reg
INTCON<7>)
Comandos de retorno da interrupo:
RETURN;
RETLW;
RETFIE (pe 1 automaticamento no bit GIE,
permitindo novas interrupes).
19/2/2008 97
Microcontrolador PIC
Interrupes - Registradores
Registrador INTCON
Bit 0 Flag interrupo de mudana nos bits B4 a B7
1 Pelo menos um bit mudou de estado
0 Nenhum bit mudou de estado
Bit 1 Flag interrupo INT/RB0
1 Interrupo externa ocorreu
0 No ocorreu interrupo externa
19/2/2008 98
Microcontrolador PIC
Interrupes - Registradores
Registrador INTCON
Bit 2 Flag Timer 0 overflow
1 Contagem mudou de 00h para FFh
0 No ocorreu overflow na contagem
Bit 3 Habilita interrupo na mudana nos pinos B4 a B7
1 Habilita a interrupo
0 Desabilita a interrupo
Bit 4 Habilita interrupo no pino INT/RB0
1 Habilita a interrupo
0 Desabilita a interrupo
19/2/2008 99
Microcontrolador PIC
Interrupes - Registradores
Registrador INTCON
Bit 5 Habilita interrupo de Overflow do Timer 0
1 Habilita interrupo
0 Desabilita interrupo
Bit 6 Habilita interrupo dos perifricos
1 Habilita todas as interrupes no mascaradas de
perifricos
0 Desabilita todas as interrupes de perifricos
Bit 7 Habilita interrupo global
1 Habilita todas as interrupes no mascaradas
0 Desabilita todas as interrupes
19/2/2008 100
Microcontrolador PIC
Interrupes - Registradores
Registrador PIE1
Bit 0 Habilita interrupo de Overflow do Timer1
1 Habilita interrupo
0 Desabilita interrupo
Bit 1 Habilita interrupo por igualdade do TMR2 e PR2
1 Habilita interrupo
0 Desabilita interrupo
19/2/2008 101
Microcontrolador PIC
Interrupes - Registradores
Registrador PIE1
Bit 2 Habilita interrupo do bloco CCP1
1 - Habilita interrupo
0 Desabilita interrupo
Bit 3 Habilita interrupo da SPI
1 Habilita interrupo
0 Desabilita interrupo
Bit 4 Habilita interrupo de transmisso da USART
1 Habilita interrupo
0 Desabilita interrupo
19/2/2008 102
Microcontrolador PIC
Interrupes - Registradores
Registrador PIE1
Bit 5 Habilita interrupo de recepo da USART
1 Habilita interrupo
0 Desabilita interrupo
Bit 6 Habilita interrupo do conversor A/D
1 - Habilita interrupo
0 Desabilita interrupo
Bit 7 Habilita interrupo da porta paralela escrava
1 Habilita interrupo
0 Desabilita interrupo
19/2/2008 103
Microcontrolador PIC
Interrupes - Registradores
Registrador PIR1
Registrador PIE2
Registrador PIR2
19/2/2008 104
Microcontrolador PIC
Interrupes - Circuito
19/2/2008 105
Microcontrolador PIC
Configurao Timer 0, 1, 2 e Watch-Dog
19/2/2008 106
Microcontrolador PIC
Registrador Option
bits 0 a 2 PS0, PS1, PS2 (bits de seleo do divisor
Prescaler) - Estes trs bits definem o fator de diviso do
prescaler.
19/2/2008 107
Microcontrolador PIC
Registrador Option
bit 3 PSA (Bit de Atribuio do Prescaler) Atribuio
do prescaler.
1 = prescaler atribudo ao watchdog;
0 = prescaler atribudo ao temporizador TMR0.
19/2/2008 108
Microcontrolador PIC
Registrador Option
19/2/2008 109
Microcontrolador PIC
Registrador Option
bit 4 T0SE (bit de seleo de borda ativa em TMR0)
Sinal atravs do pino RA4/TOCK1.
1 = borda de descida;
0 = borda de subida.
bit 5 TOCS (bit de seleo da fonte de clock em TMR0)
1 = sinais externos (RA4/TOCKI);
0 = do clock interno.
19/2/2008 110
Microcontrolador PIC
Registrador Option
bit 6 INDEDG (bit de seleo da borda de interrupo)
Interrupo atravs do pino RB0/INT.
1 = borda de subida;
0 = borda de descida.
bit 7 RBPU (Habilitao dos pull-up nos bits da porta B)
1 = resistncias de pull-up desligadas;
0 = resistncias de pull-up ligadas.
19/2/2008 111
Microcontrolador PIC
Registrador Option
SETUP_TIMER_0()
Sintax: setup_timer_0 ( mode)
Parmetros: mode pode ser uma ou duas das constantes definidas no
arquivo devices .h file. RTCC_INTERNAL, RTCC_EXT_L_TO_H or
RTCC_EXT_H_TO_L,
RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16, RTCC_DIV_32,
RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256
Uma constante de cada grupo pode ser usada, unidas pelo operador |
Examples: setup_timer_0 (RTCC_DIV_2|RTCC_EXT_L_TO_H);
19/2/2008 112
Microcontrolador PIC
Timer 1
O modo de operao determinado pelo bit de
seleo de clock, TMR1CS (bit 1 do Reg. T1CON).
Bit 0 (bit TMR1ON bit de ativao do Timer 1)
1 = Timer 1 ativado
0 = Timer 1 desativado;
19/2/2008 113
Microcontrolador PIC
Timer 1
Bit 1 (bit TMR1CS bit que seleciona a fonte de
clock do Timer 1)
1 = Sinal de clock externo (pino RC0/T1OSO/T1CKI
(contagem ocorre na borda de subida do sinal)
0 = Sinal interno de clock (Fosc/4).
Bit 2 (bit T1SYNC bit de sincronizao do clock
externo)
TMR1CS =1
1 = No sincroniza sinal de clock externo
0 = Sincroniza sinal de clock externo.
TMR1CS =0
No tem efeito
19/2/2008 114
Microcontrolador PIC
Timer 1
Bit 3 (bit T1OSCEN bit de habilitao do oscilador
interno do Timer 1) configura-se o PIC para operar
com oscilador interno. O mesmo gera um sinal com
uma freqncia de 200KHz (a 4MHz a depender do
PIC).
1 = oscilador habilitado
0 = oscilador desligado (elimina consumo de energia)
Bits 5-4 (bits de seleo do pr-escalonador do
sinal da entrada de clock)
11 = Escalonamento de 1:8
10 = Escalonamento de 1:4
01 = Escalonamento de 1:2
00 = Escalonamento de 1:1
19/2/2008 115
Microcontrolador PIC
Timer 1
Bits 7-6 (bits no usados lidos como 0)
19/2/2008 116
Microcontrolador PIC
Timer 2
# Timer de 8 bits com um pr-escalonador e ps-
escalonador.
# Pode ser usado como a base de tempo no modo PWM
dos mdulos CCP.
# TMR2 um registra-
dor de escrita e leitura
e apagado em qual-
quer evento de reset.
19/2/2008 117
Microcontrolador PIC
Timer 2
Bits 1-0 (bit T2CKPS1 e T2CKPS0 bit de seleo
do pr-escalonador) 00 = Escalonamento de 1
01 = Escalonamento de 4
1x = Escalonamento de 16
Registrador de Controle do Timer 2 T2CON
(endereo 12h)
19/2/2008 118
Microcontrolador PIC
Timer 2
Bit 2 (bit TMR2ON bit de ativao do Timer 2).
1 = Timer 2 ativado
0 = Timer 2 desativado;
Bits 6-3 (bits TOUTPS3:TOUTPS0 bits de seleo
do ps-escalonador)
0000 = Escalonamento de 1
0001 = Escalonamento de 2
0010 = Escalonamento de 3

1110 = Escalonamento de 15
1111 = Escalonamento de 16
19/2/2008 119
Microcontrolador PIC
Instrues associadas aos temporizadores
Sintax: set_timer0(value) or set_rtcc (value)
set_timer1(value)
set_timer2(value)
Parmetros: Timer 1 - 16 bit int.
Timers 0 e 2 - 8 bit int.
Funo: Seta o valor no registrador de contagem do timer
Exemplo: // 20 mhz clock, no prescaler, set timer 0
// to overflow in 35us
set_timer0(81); // 256-(.000035/(4/20000000))
19/2/2008 120
Microcontrolador PIC
Instrues associadas aos temporizadores
Sintax: value=get_timer0() mesmo que: value=get_rtcc()
value=get_timer1()
value=get_timer2()
value=get_timer3()
value=get_timer4()
value=get_timer5()
Parmetros: Nenhum
Retorna: Timers 1 - 16 bit int.
Timers 0 e 2 - 8 bit int.
Funo: Returna o valor de contagem do timer
Exemplo: set_timer0(0);
while ( get_timer0() < 200 ) ;
19/2/2008 121
Microcontrolador PIC
Configurao Conversor A/D
19/2/2008 122
Microcontrolador PIC
CONVERSOR A/D
Diagrama de
blocos do
conversor
A/D
19/2/2008 123
Microcontrolador PIC
CONVERSOR A/D
O conversor A/D possui quatro registradores:
Registrador do byte mais significado do resultado da
converso (ADRESH);
Registrador do byte menos significado do resultado da
converso (ADRESL);
Registrador de controle 0 (ADCON0);
Registrador de controle 1. (ADCON1).
Quando a converso concluda, o resultado
carregado em ADRES, o bit GO/DONE (bit 2 do Reg.
ADCON0) resetado e o flag de interrupo, bit ADIF,
setado.
19/2/2008 124
Microcontrolador PIC
CONVERSOR A/D
O conversor A/D necessita de no mnimo 12 TAD para
realizar uma converso de 10 bits. A fonte do clock do
conversor A/D selecionada por software entre as
possibilidades abaixo:
2Tosc;
8Tosc;
32Tosc;
Oscilador RC interno.
Para uma converso correta, o clock do conversor A/D
deve ser selecionado para garantir um TAD mnimo
de 1.6s.
19/2/2008 125
Microcontrolador PIC
CONVERSOR A/D
TAD x Mxima freqncia de converso
19/2/2008 126
Microcontrolador PIC
CONVERSOR A/D
Justificao do resultado da converso A/D
19/2/2008 127
Microcontrolador PIC
CONVERSOR A/D
Registrador ADCON0 - Controla a operao do mdulo
A/D (endereo 1Fh).
Bit 0 (bit ADON bit que ativa o conversor A/D) Este
bit ativa a operao do conversor A/D.
1 = conversor A/D ativado
0 = conversor A/D desligado
Bit 1 (bit no usado lido como 0)
19/2/2008 128
Microcontrolador PIC
CONVERSOR A/D
Bit 2 (bit GO/ bit de status de converso) Este bit
indica se uma converso iniciada j foi concluda.
Se ADON =1
1 = converso A/D em andamento
0 = no h converso A/D em andamento (esse bit
automaticamente resetado quando a converso A/D
concluda).
Bits 5-3 (bits CHS2:CHS0 bits de seleo de canal)
Estes bits selecionam a entrada analgica cujo sinal
ser convertido.
000 = canal 0, (RA0/AN0)
001 = canal 1, (RA1/AN1)
010 = canal 2, (RA2/AN2)
19/2/2008 129
Microcontrolador PIC
CONVERSOR A/D
011 = canal 3, (RA3/AN3)
100 = canal 4, (RA5/AN4)
101 = canal 5, (RE0/AN5)
110 = canal 6, (RE1/AN6)
111 = canal 7, (RE2/AN7)
Bits 7-6 (bits ADCS1:ADCS0 bits de seleo de
clock) Estes bits selecionam a fonte do sinal de
clock para o conversor A/D.
00 = FOSC/2
01 = FOSC/8
10 = FOSC/32
11 = FRC (clock derivado de um oscilador RC)
19/2/2008 130
Microcontrolador PIC
CONVERSOR A/D
Registrador ADCON1 Configura a funo dos pinos das
portas (A e E) (endereo 9Fh)
Bits 3-0 (bits PCFG3:PCFG0 bits de controle de
configurao dos pinos A/D) Este bits configuram
os pinos analgicos das Portas A e E.
19/2/2008 131
Microcontrolador PIC
CONVERSOR A/D
19/2/2008 132
Microcontrolador PIC
CONVERSOR A/D
Bits 6-4 (bits no usados lido como 0)
Bit 7 (bit ADFM bit de seleo de formato do
resultado da converso A/D) Este bit seleciona o
formato de justificao do resultado gerado pelo
conversor A/D.
1 = Justificao direita. Os 6 bits mais significativos de
ADRESH sero iguais a 0.
0 = Justificao esquerda. Os 6 bits menos
significativos de ADRESL sero iguais a 0.
19/2/2008 133
Microcontrolador PIC
Instrues associadas ao Conversor A/D
Sintax: setup_adc ( mode);
Parmetro: mode Modo analgico para digital. As opes vlidas
variam entre dispositivos. Opes tpicas:
ADC_OFF
ADC_CLOCK_INTERNAL
ADC_CLOCK_DIV_32
Funo: Configura o conversor A/D.
Exemplo: setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel( 0 );
19/2/2008 134
Microcontrolador PIC
Instrues associadas ao Conversor A/D
Sintax: set_adc_channel ( chan)
Parmetro: chan o nmero do canal selecionado. Os nmeros iniciam
em 0 (AN0) e seguem de acordo com o nmero de canais
disponveis (ver datasheet do dispositivo).
Funo: Especifica o canal a ser convertido no prximo READ_ADC.
Deve ser respeitado um tempo de amostragem antes de iniciar uma
converso aps uma mudana de canal. Em geral 10us suficiente
Exemplos: set_adc_channel(2);
delay_us(10);
value = read_adc();
19/2/2008 135
Microcontrolador PIC
Captura/Comparao/PWM
Os mdulos CCP (Captura/Comparao/PWM) so
formados por um registrador de 16 bits que pode operar
como:
Registrador de captura de 16 bits;
Registrador de comparao de 16 bits
Registrador de duty-cycle no modo PWM
Mestre/Escravo.
19/2/2008 136
Microcontrolador PIC
Captura/Comparao/PWM
Modo de operao do mdulo CCP e recursos de Timer
necessrios
Interao entre os mdulos CCP
19/2/2008 137
Microcontrolador PIC
Configurao Bloco Capture/Compare/PWM
19/2/2008 138
Microcontrolador PIC
Captura/Comparao/PWM
Registradores de Controle CCP1CON e CCP2CON
(endereos 17h e 1Dh)
Bits 3-0 (bit CCPxM3: CCPxM0 bits de seleo de
modo de operao) Estes bits selecionam o modo
como operaro os blocos CCP1 e CCP2.
0000 = Modos Captura/Comparao/PWM desligados
(reseta mdulo CCPx )
19/2/2008 139
Microcontrolador PIC
Captura/Comparao/PWM
0100 = Modo captura, a cada 1 transio negativa
(10)
0101 = Modo captura, a cada 1 transio positiva (01)
0110 = Modo captura, a cada 4 transies positivas
(10)
0111 = Modo captura, a cada 16 transies positivas
(10)
1000 = Modo comparao, seta pino de sada (bit
CCPxIF setado)
1001 = Modo comparao, reseta pino de sada (bit
CCPxIF setado)
1010 = Modo comparao, gera interrupo (bit
CCPxIF setado, pino CCPx no afetado)
19/2/2008 140
Microcontrolador PIC
Captura/Comparao/PWM
1011 = Modo comparao, ativa Special Event
trigger(bit CCPxIF seta, pino CCPx no afetado);
CCP1 reseta TMR1; CCP2 reseta TMR1 e inicia uma
converso A/D (se mdulo A/D habilitado).
11xx = Modo PWM
Bits 5-4 (bits CCPxX:CCPxY bits menos
significativos do PWM) Estes bits representam os
dois bits menos significativos do valor de duty-cycle do
sinal PWM.
Modo Captura: No usado
Modo Comparao: No usado
Modo PWM: Dois bits LSB do duty-cycle do sinal PWM.
Os oito MSBs so gravados no registrador CCPRxL.
19/2/2008 141
Microcontrolador PIC
Captura/Comparao/PWM
Modo Captura
19/2/2008 142
Microcontrolador PIC
Captura/Comparao/PWM
Modo Comparao
19/2/2008 143
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
O bloco CCPx produz um sinal PWM com uma
resoluo de at 10 bits.
Um sinal PWM caracterizado pelo seu perodo e o
duty-cycle, que corresponde ao tempo em que o sinal
permanece em nvel alto.
O perodo do sinal PWM especificado pelo registrador
PR2:
Perodo PWM = [(PR2) + 1] 4 TOSC (TMR2 prescale
value).
19/2/2008 144
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
Quando TMR2 igual a PR2, os seguintes eventos
ocorrem:
O TMR2 apagado;
O pino CCP1 setado (exceto se o duty-cycle do
PWM = 0%, quando o CCP1 no ser setado);
O PWM duty-cycle copiado de CCPR1L para
CCPR1H.
O duty-cycle do PWM definido escrevendo para o
registrador CCPR1L (bits mais significativos) e para os
bits 5 e 4 do registrador CCP1CON.
19/2/2008 145
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
Determinao do duty-cycle em termos de tempo:
Duty Cycle do PWM = (CCPR1L:CCP1CON<5:4>)
Tosc (TMR2 prescale value)
O novo valor de duty-cycle s atualizado no CCPR1H,
quando os valores dos registradores PR2 e TMR2
coincidirem (ao fim do perodo PWM).
No modo PWM CCPR1H um registrador apenas de
leitura.
19/2/2008 146
Microcontrolador PIC
Captura/Comparao/PWM
Modo PWM
19/2/2008 147
Microcontrolador PIC
Interrupes
Mecanismo que torna possvel responder a estmulos
externos ou internos.
Atravs do registrador INTCOM pode-se habilitar as
interrupes de forma individual ou de forma global.
O PIC 16F87X tem as seguintes fontes de Interrupo:
Interrupo externa (RB0/INT);
Interrupo de Relgio (TM0);
Interrupo da porta B (B4-B7);
Interrupo por captura e comparao (CCP1 e 2);
Interrupo da USART (buffer sada e entrada cheio);
Interrupo CCP;

19/2/2008 148
Microcontrolador PIC
Configurao Porta Serial
19/2/2008 149
Microcontrolador PIC
Interrupes
O PIC 16F87X tem as seguintes fontes de Interrupo:
Estouro do relgio TMR1;
Estouro do relgio TMR2;
Fim de escrita EEPROM;
Fim de Converso A/D;
Atividade na SPI ou I
2
C;
Recebimento de dados na Porta Paralela Escrava;
Coliso no barramento.

19/2/2008 150
Microcontrolador PIC
Interrupes - Circuito
19/2/2008 151
Microcontrolador PIC
Interrupes
Inicialmente deve-se estabelecer quais interrupes
devem estar habilitadas bem como setar o bit GIE (reg
INTCON<7>)
Comandos de retorno da interrupo:
RETURN;
RETLW;
RETFIE (pe 1 automaticamento no bit GIE,
permitindo novas interrupes).
19/2/2008 152
Microcontrolador PIC
Interrupes - Registradores
Registrador INTCON
Bit 0 Flag interrupo de mudana nos bits B4 a B7
1 Pelo menos um bit mudou de estado
0 Nenhum bit mudou de estado
Bit 1 Flag interrupo INT/RB0
1 Interrupo externa ocorreu
0 No ocorreu interrupo externa
19/2/2008 153
Microcontrolador PIC
Interrupes - Registradores
Registrador INTCON
Bit 2 Flag Timer 0 overflow
1 Contagem mudou de 00h para FFh
0 No ocorreu overflow na contagem
Bit 3 Habilita interrupo na mudana nos pinos B4 a B7
1 Habilita a interrupo
0 Desabilita a interrupo
Bit 4 Habilita interrupo no pino INT/RB0
1 Habilita a interrupo
0 Desabilita a interrupo
19/2/2008 154
Microcontrolador PIC
Interrupes - Registradores
Registrador INTCON
Bit 5 Habilita interrupo de Overflow do Timer 0
1 Habilita interrupo
0 Desabilita interrupo
Bit 6 Habilita interrupo dos perifricos
1 Habilita todas as interrupes no mascaradas de
perifricos
0 Desabilita todas as interrupes de perifricos
Bit 7 Habilita interrupo global
1 Habilita todas as interrupes no mascaradas
0 Desabilita todas as interrupes
19/2/2008 155
Microcontrolador PIC
Interrupes - Registradores
Registrador PIE1
Bit 0 Habilita interrupo de Overflow do Timer1
1 Habilita interrupo
0 Desabilita interrupo
Bit 1 Habilita interrupo por igualdade do TMR2 e PR2
1 Habilita interrupo
0 Desabilita interrupo
19/2/2008 156
Microcontrolador PIC
Interrupes - Registradores
Registrador PIE1
Bit 2 Habilita interrupo do bloco CCP1
1 - Habilita interrupo
0 Desabilita interrupo
Bit 3 Habilita interrupo da SPI
1 Habilita interrupo
0 Desabilita interrupo
Bit 4 Habilita interrupo de transmisso da USART
1 Habilita interrupo
0 Desabilita interrupo
19/2/2008 157
Microcontrolador PIC
Interrupes - Registradores
Registrador PIE1
Bit 5 Habilita interrupo de recepo da USART
1 Habilita interrupo
0 Desabilita interrupo
Bit 6 Habilita interrupo do conversor A/D
1 - Habilita interrupo
0 Desabilita interrupo
Bit 7 Habilita interrupo da porta paralela escrava
1 Habilita interrupo
0 Desabilita interrupo
19/2/2008 158
Microcontrolador PIC
Interrupes - Registradores
Registrador PIR1
Registrador PIE2
Registrador PIR2

Você também pode gostar