Você está na página 1de 38

UNIDADE 1 - O MICROCONTROLADOR PIC

6
Desempenho da famlia PIC 6
Tipos de Memria de Programa 7
Tipos de memrias de programas disponveis nos PICs: 7
O PIC18F4520 7
Veja em seguida as principais caractersticas do PI18F4520 7
Tipos de encapsulamentos: 7
Estrutura interna do PIC18F4520 9
Descrio das funes dos pinos do PI18F4520 10
Tipos de Memrias 1
Vamos exemplificar um processo de gravao na memria de programa do PIC 13
Introduo as portas de I/O 16161616
O PORTA 17
Registrador PORTA 18
PORTA 18
Registrador TRISA 18
Leitura do LATCH de um pino do PIC 18
O PORTB 19
O PORTC 19
O PORTD 20
O PORTE 20
Reset 21
Os PICs possuem diversos tipos de reset: 21
Ciclos de mquina 21
Qual a freqncia real de execuo das instrues do nosso microcontrolador? 21
Os bits de configurao (fusveis) 2
Mapa dos bits de configurao do PIC18F4520 23
Configurao de Clock 24
Vamos conhecer cada um dos tipos de osciladores: 25
Configurao dos Fusveis de Energia 27
UNIDADE 2 - CANAIS A/D 30
Conversor A/D do PIC 30303030
Registrador ADCON0: 30303030
ADCON0: 30
Registrador ADCON1: 31313131
ADCON1: 31
Registrador ADCON2: 32323232
ADCON2: 32
Trabalhando com AD no MikroC 3
UNIDADE 3 CANAL PWM DO PIC 34
Introduo 34343434
Trabalhando com PWM no PIC 36
UNIDADE 4 - TIMERS/COUNTERS 38
Os Timers/Counters 38383838
TIMER0 38
Os Registradores relacionados ao TIMER0 so: 39
T0CON: (TIMER0 Counter Register) 40
O registrador INTCON 41
INTCON (Interrupt Control) 41
TIMER1 4
O TIMER1: 4
T1CON: (TIMER1 CONTROL REGISTER): 45
Programando o TIMER1 do PIC 47
Configurao do TIMER1: 49
Calculo de Estouro do TIMER1: 49
TIMER2 : 49
T2CON (TIMER2 CONTROL REGISTER): Configura o setup do TIMER2; 50
Registradores de configurao do TIMER2: 50
TIMER3 51
O TIMER3 : 51
Registradores de configurao do TIMER3: 52
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 5 de 74
UNIDADE 5 PROGRAMANDO AS INTERRUPES DO PIC 53
As Interrupes do PIC18F4520 53535353
Introduo 54
Como funciona as interrupes? 5
Registradores que so usados para controlar as interrupes; 56
UNIDADE 6 PROGRAMANDO A INTERRUPO EXTERNA 61
INT0 61616161
Vamos conhecer os registradores relacionados a INT0: 62
Registradores responsveis pelas configuraes gerais das interrupes: 62
Registradores responsveis pela habilitao da interrupo externa INT0 62
Registrador responsvel pelo tipo de disparo de INT0: 62
INT1 62626262
Programando a interrupo externa INT1 62
Vamos conhecer os registradores relacionados a INT1: 63
Registradores responsveis pelas configuraes gerais das interrupes: 63
Registradores responsveis pela habilitao da interrupo externa INT1 63
INT2 63636363
Registrador responsvel pelo tipo de disparo de INT2: 63
Vamos conhecer os registradores relacionados a INT2: 64
Registradores responsveis pela habilitao da interrupo externa INT2 64
Registrador responsvel pelo tipo de disparo de INT2: 64
Interrupo por mudana de estado 64646464
Vamos conhecer os registradores relacionados a interrupo RB: 65
Registradores responsveis pelas configuraes gerais das interrupes: 65
Registradores responsveis pela habilitao da interrupo externa RB 65
UNIDADE 7 EXEMPLOS DE PERIFRICOS 6
Controle de display LCD 6
Projetos com displays LCD: 6
Varredura de displays de 7 segmentos 67676767
Projetos com displays de 7 segmentos: 67
Varredura de Teclado matricial 67676767
Projetos com teclados matriciais: 68
Acionamento de Leds 68686868
Projetos com com Leds 68
Conversor Analgico digital (A/D) 68686868
Projetos com os conversores A/D do PIC 69
Controle PWM 69696969
Projetos com os PWM 69
UNIDADE 8 ANEXOS 70
Descrio das Pinagens(LCD) 70707070
Lista de cdigos dos Caracteres 70
Tabela com o conjunto completo de instrues: 71
Tabela com as instrues mais comuns: 72
Resumo com as instrues mais teis: 72
Comandos LCD do mikroC PRO (LCD) 73
UNIDADE 9 FIGURAS 73
UNIDADE 10 TABELAS 74
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 6 de 74
Unidade 1Unidade
1Unidade 1Unidade
1
---- O MicrocontroladorMicrocontroladorMicrocontroladorMicrocontrolador
PICPICPICPIC
Os microcontroladores PIC so fabricados pela empresa Microchip. Existem basicamente
quatro famlias de PICs diferenciadas pelo tamanho da palavra de memria de programa: 12,
14 , 16 e 32 bits. Atualmente a Microchip lanou nesses ltimos anos uma nova famlia de
microcontroladores chamada DsPIC que possui barramento interno de 16 bits e 24 bits,
contrrio da tradicional famlia de 8 bits, e tambm a famlia PIC32, com barramento de dados
em 32 bits.
O PIC possui uma arquitetura interna do tipo Harvard. A diferena entre essa arquitetura e as
tradicionais, do tipo Von-Neumann, que ela possui um barramento para o programa e outro
para os dados, diferente da arquitetura tradicional em que um barramento tanto de dados
como de endereo.
O aumento no tamanho da palavra de programa possibilita um aumento no nmero de
instrues: os PICs de 12 bits (12C508, 12C509, 12CE518, 16C54, 16C55) possuem apenas 3
instrues, os de 14 bits (12C671, 12C672, 12CE673, 12C674, 14000, 16C55x) possuem 35
instrues e os de 16 bits (17C4x, 17C75X, 17C76X, 18C2XX, 18C4XX) possuem 7 instrues.
FiguraFiguraFiguraFigura
1....1 EvoluoEvoluoEvoluoEvoluo dadadada
FamliaFamliaFamliaFamlia PICPICPICPIC
Os PICs foram otimizados para trabalharem com execuo de pequeno conjunto de instrues
a grandes velocidades de processamento.
DesempenhoDesempenhoDesempenhoDesempenho
dadadada famliafamliafamliafamlia
PICPICPICPIC
Capacidade de pipeline (enquanto executa uma instruo, o processador busca a prxima
instruo na memria, de forma a acelerar a execuo do programa)
Execuo de uma instruo por ciclo de mquina, com exceo das instrues de desvios que
consomem dois ciclos de mquinas para serem executadas.
Um ciclo de mquina no PIC equivale a 4 ciclos de clock, ou seja, o sinal de clock dividido por
4 antes de executar a instruo (falaremos mais sobre esse tpico adiante).
Cada Instruo ocupa uma posio de memria de programa (FLASH).
Tempo de execuo das instrues fixa, com exceo das instrues de desvios que
consomem dois ciclos de mquina.
Outra caracterstica importante da arquitetura PIC reside na semelhana e compatibilidade
entre os diversos microcontroladores membros de sua famlia. Isto facilita grandemente a
migrao de microcontrolador para outro, bastando mudar, em alguns casos, apenas alguns
comandos no programa, pois partes dos registradores internos no se diferem muito entre si.
Nota:Nota:Nota:Nota:

As famlias PIC14 e PIC17 esto obsoletas.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 7 de 74
TiposTiposTiposTipos
dededede MemriaMemriaMemriaMemria dededede
ProgramaProgramaProgramaPrograma
Os PICs da srie 12 e 16 armazenam o programa em sua memria interna. Membros da famlia
18 podem funcionar com memria de programa interna ou externa.
TiposTiposTiposTipos
dededede memriasmemriasmemriasmemrias dededede
programasprogramasprogramasprogramas
disponveisdisponveisdisponveisdisponveis nosnosnosnos
PICs:PICs:PICs:PICs:
ROMROMROMROM: Memria do tipo no voltil gravadas na fbrica pelo processo conhecido
como mscara. Os chips com esse tipo de memria normalmente possuem custos menores,
mas somente so viveis na fabricao de grandes quantidades.
OTPOTPOTPOTP: Memria fabricadas do tipo PROM. Saem da fbrica "virgens" e permitem
uma nica gravao. So inviveis nas fases de implantao e desenvolvimento de
equipamentos. Esses chips so identificados pelo sufixo "C".
EEPROMEEPROMEEPROMEEPROM: Podemos encontrar chips com memria do tipo
EEPROM. Normalmente so mais caros que os dispositivos ROM e OTP e podem ser
identificados atravs do seu sufixo "JW" para os dispositivos com encapsulamento DIP, ou "CL"
para os dispositivos com encapsulamento do tipo PLCC.
FLASHFLASHFLASHFLASH: Os microcontroladores PIC que utilizam este tipo de memria
so indicados para etapas de desenvolvimento e testes at mesmo para implantaes finais.
Permitem no mximo 1000 ciclos de gravaes/apagamento, possuem um custo relativamente
mediano com relao aos outros chips.
O PIC18F4520PIC18F4520PIC18F4520PIC18F4520
O PIC18F4520 um microcontrolador que possui memria do tipo FLASH, que nos representa
uma grande facilidade em desenvolvimentos de projetos e prottipos pois no requer apaglo
atravs de luz-ultravioleta como as verses antigas que utilizavam EEPROM, com tecnologia
CMOS (baixssimo consumo) fabricado pela empresa Microchip Technology.
VejaVejaVejaVeja
emememem seguidaseguidaseguidaseguida asasasas
principaisprincipaisprincipaisprincipais
caractersticascaractersticascaractersticascaractersticas dodododo
PI18F4PI18F4PI18F4PI18F4520520520520
Microcontrolador de 40 pinos; Memria de programa FLASH de 32K ( 16384 bytes words)
Memria de dados RAM de 1536 bytes;
Memria EEPROM de 256 byte;
Processamento de at 10MIPS (milhes de instrues por segundo)
2 canais capture/compare/PWM - mdulo CCP
Master synchronous Serial Port (MSSP) module.
Usart
13 canais A/D de 10 bits
Permite at 100 0 ciclos de escrita e leitura na memria de programa Flash
Permite 1.0.0 ciclos de leitura e escrita na E2PROM
Reteno de dados na Flash de 40 anos
Detector de baixa voltagem programvel
Watchdog timer com oscilador prprio e programvel
Trs pinos de interrupo externa.
4 Temporizadores/contadores (TIMER0, TIMER1, TIMER2, TIMER3)
TiposTiposTiposTipos
dededede
encapsulamentos:encapsulamentos:encapsulamentos:encapsulamentos:
As primeiras verses do PIC eram baseadas em encapsulamentos do tipo DIP40, hoje os
dispositivos de 40 pinos ainda so muito comuns, porm de acordo com a aplicao e os
perifricos internos presentes no Chip eles podem ser encontrados em diversos
encapsulamentos como:
DIP Dual In-line Pin PLCC Leadless Chip Carrier.
TQFP Thin Quad Flat Pack.
w.mecatronicadegaragem.blogspot.com



Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 8 de 74
Figura Figura Figura
Figura 1
2 ---- Encapsulamentos Encapsulamentos Encapsulamentos
Encapsulamentos
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 9 de 74
Nosso estudo ser baseado em microcontroladores com o encapsulamento DIP (Dual In-line
Pin), devido facilidade de utilizao e disponibilidade no mercado, porm no h grandes
dificuldades para se migrar para outros encapsulamentos, basta analisar o datasheet do
microcontrolador.
EstruturaEstruturaEstruturaEstrutura
internainternainternainterna dodododo
PIC18F4520PIC18F4520PIC18F4520PIC18F4520
FiguraFiguraFiguraFigura
1....3 DiagramaDiagramaDiagramaDiagrama
internointernointernointerno dodododo
PIC18F4520PIC18F4520PIC18F4520PIC18F4520
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 10 de 74
DescrioDescrioDescrioDescrio
dasdasdasdas funesfunesfunesfunes
dosdosdosdos pinospinospinospinos dodododo
PI18F4520PI18F4520PI18F4520PI18F4520
O PI18F4520 possui no total de 34 pinos de I/O divididos entre as PORTA, PORTB, PORTC,
PORTD e PORTE.
PORTAPORTAPORTAPORTA: encontramos 7 pinos fsicos intitulados de RA0 a RA7 que
podem ser utilizados como I/O de uso geral ou como conversor analgico/ digital A/D, alm de
possuir tambm a funo de deteco de baixa tenso (LVD), referncia analgica do A/D e
contador externo.
PORTBPORTBPORTBPORTB: encontramos 8 pinos intitulados de RB0 a RB7 configurveis
como I/O de uso geral. Nesse port podemos trabalhar com trs interrupes externas, mdulo
CCP e pinos de gravao e debugger.
PORTCPORTCPORTCPORTC: encontramos 8 pinos intitulados de RC0 a RC7 configurveis
como I/O de uso geral, sada do oscilador do timer, mdulo CCP, Clock e data para os modos
SPI, I2C e UART.
PORTDPORTDPORTDPORTD: encontramos 8 pinos intitulados de RC0 a RC7 que pode ser
configurado como I/O de uso geral ou ser configurado como PSP para ter sada TTL (por
exemplo: interfaceamento com microprocessadores ).
PORTEPORTEPORTEPORTE: podemos utiliz-lo como PORT de I/O de uso geral ou utilizar
os pinos de WR e CS para acesso ao modo paralelo Slave Port (acesso a memria externa por
exemplo).
Abaixo segue com detalhes a funo de cada pino do microcontrolador PIC18F4520.
Pino(DIP)Pino(DIP)Pino(DIP)Pino(DIP)
FunoFunoFunoFuno TipoTipoTipoTipo
DescrioDescrioDescrioDescrio
2 RA0 AN0 I/O Entrada
Entrada e sada de uso geral Entrada do conversor AD0
3 RA1 AN1 I/O Entrada
Entrada e sada de uso geral Entrada do conversor AD1
4 RA2 AN2 Vref- CVref
I/O Entrada Entrada Sada
Entrada e sada de uso geral Entrada do conversor AD2 Entrada de referncia baixa do A/D
Sada de tenso da referencia do comparador
5 RA3 AN3 Vref+
I/O Entrada Entrada
Entrada e sada de uso geral Entrada do conversor AD3 Entrada de referncia alta do A/D
6 RA4 T0CKI C1OUT
I/O Entrada Sada
Entrada e sada de uso geral Entrada de clock timer0 Sada do comparador 1
7 RA5 AN4 /S HLVDIN C2OUT
I/O Entrada Entrada Entrada Saida
Entrada e sada de uso geral Entrada do conversor AD4 Entrada de seleo SPI Detector de
alta/baixa voltagem. Sada do comparador 2
13 OSC1 CLKI RA7
Entrada Entrada I/O
Entrada do cristal oscilador Entrada do clock externo Entrada e sada de uso geral
14 OSC2 CLKO RA6
Sada Sada I/O
Sada do cristal oscilador Entrada do clock exteno Entrada e sada de uso geral
I/O Entrada Entrada Entrada
Entrada e sada de uso geral Interrupo externa 0 Entrada de erro PWM para CCP1 Entrada
analgica 12
I/O Entrada Entrada
Entrada e sada de uso geral Interrupo externa 1 Entrada analgica 10
I/O Entrada Entrada
Entrada e sada de uso geral Interrupo externa 2 Entrada analgica 8
I/O Entrada I/O
Entrada e sada de uso geral Entrada analgica 9 Entrada de captura 2, sada de comparao
2 e sada PWM 2
I/O Entrada I/O
Entrada e sada de uso geral Pino de interrupo por mudana de nvel Entrada analgica 1
38 RB5 KBI1 PGM
I/O Entrada I/O
Entrada e sada de uso geral Interrupo por mudana de estado Pino de habilitao ICSP
baixa voltagem (In-Circuit Debugger)
39 RB6 KBI2 PGC
I/O Entrada I/O
Entrada e sada de uso geral Interrupo por mudana de estado Pino de clock do ICSP
40 RB7 I/O Entrada e sada de uso geral w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 1 de 74
Pino(DIP)Pino(DIP)Pino(DIP)Pino(DIP)
FunoFunoFunoFuno TipoTipoTipoTipo
DescrioDescrioDescrioDescrio
KBI3 PGD
Entrada I/O
Interrupo por mudana de estado Pino de dados do ICSP
I/O Sada Entrada
Entrada e sada de uso geral Sada do clock do Timer 1 Clock externo Timer1 / Timer3
I/O Entrada Sada
Entrada e sada de uso geral Entrada de clock do Timer1 Mdulo CCP2(multiplexado com RB3
)
I/O I/O Saida
Entrada e sada de uso geral Mdulo CCP1 Sada ECCP1
18 RC3 SCK SCL
Entrada e sada de uso geral Entrada e sada do clock serial para o modo SPI Entrada e sada
do clock serial para o modo I2C
23 RC4 SDI SDA
I/O Entrada I/O
Entrada e sada de uso geral Entrada de dados SPI Entrada e sada de dados I2C
24 RC5 SD0 I/O Sada
Entrada e sada de uso geral Sada de dados SPI
25 RC6 TX CK
I/O Sada I/O
Entrada e sada de uso geral Canal de transmisso UART Clock de sincronismo UART
26 RC7 RX DT
I/O Entrada I/O
Entrada e sada de uso geral Canal de recepo UART Clock de sincronismo UART
19 RD0 PSP0 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
20 RD1 PSP1 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
21 RD2 PSP2 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
2 RD3 PSP3 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
27 RD4 PSP4 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
I/O I/O Sada
Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1
I/O I/O Sada
Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1
I/O I/O Sada
Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1
8 RE0 /RD AN5
I/O Entrada Entrada
Entrada e sada de uso geral Controle de leitura do port paralelo Entrada analgica AD5
9 RE1 /WR AN6
I/O Entrada Entrada
Entrada e sada de uso geral Controle de escrita do port paralelo Entrada analgica AD6
I/O Entrada Entrada
Entrada e sada de uso geral Controle de seleo do port paralelo Entrada analgica AD7
1 /MCLR VPP RE3
Entrada Entrada Entrada
Entrada do RESET externo. Este pino ativo em nvel baixo Pino de habilitao de alta
voltagem ICSP Entrada Digital
12, 31 GND Alimentao Negativo
1, 32 VCC Alimentao positivo
TabelaTabelaTabelaTabela
1....1 DescrioDescrioDescrioDescrio dosdosdosdos
pinospinospinospinos dodododo
MicrocontroladorMicrocontroladorMicrocontroladorMicrocontrolador
PIC18F4520PIC18F4520PIC18F4520PIC18F4520
TiposTiposTiposTipos dededede MemriasMemriasMemriasMemrias
No PIC18F4520 encontramos trs tipos de memrias:
Memria de Programa - FLASH Memria de dados - RAM
Memria de dados EEPROM w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 12 de 74
Como ns sabemos, memria de programa (ROM, EPROM, FLASH) do tipo no voltil, ou
seja, podemos desenergizar nosso sistema microcontrolado e ele no perder o programa
gravado.
Nosso microcontrolador estudado possui internamente 16Kbyte de memria de programa
(words) e possui um barramento de programa de 16 bits. Alm disso, existem 21 bits para
endereamento da memria de programa, o que permite que at 2 Mbyte sejam endereados
pelo microcontrolador da familia PIC18.
MemriaMemriaMemriaMemria dededede ProgramaProgramaProgramaPrograma
A memria de programa utilizada em nosso microcontrolador do tipo FLASH (sufixo "F") que
permite ser gravada/apagada no minimo 1000 vezes. Este tipo de memria utilizada ideal
para ser utilizada em desenvolvimento de projetos e at mesmo em produtos finais.
FiguraFiguraFiguraFigura
1....4 MemrMemrMemrMemriaiaiaia dededede
ProgramaProgramaProgramaPrograma FLASHFLASHFLASHFLASH
dodododo PIC18FPIC18FPIC18FPIC18F4545454522220000
Podemos perceber que a memria de programa do PIC18F4520 inicia-se no endereo 0000h e
atinge o valor mximo de 7FFFH, ou seja , 32767K byte (32Kbyte).
O endereo inicial 0000h chamado de vetor de reset. A instruo de programa que estiver
nesse endereo de memria ser a primeira a ser executada pelo processador do PIC. Sempre
que energizarmos ou resetarmos o microcontrolador, o contador de programa PC apontar
sempre para este primeiro endereo da memria.
Nota:Nota:Nota:Nota:

No podemos confundir de forma alguma memria de programa e memria de dados.
Sabemos que memria de programa onde nosso programa estar gravado, enquanto
memria de dados onde os valores de nossas variveis sero salvas temporariamente.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 13 de 74
Em seguida temos os endereos 0008h e 0018h. Estes endereos so chamados de vetores
de interrupo. (veremos mais adiante em nosso curso sobre esses vetores de interrupo).
VamosVamosVamosVamos
exemplificarexemplificarexemplificarexemplificar umumumum
processoprocessoprocessoprocesso dededede
gravaogravaogravaogravao nananana
memriamemriamemriamemria dededede
programaprogramaprogramaprograma dodododo PIC.PIC.PIC.PIC.
Acompanhe o programa exemplo de programa abaixo:
Ao compilarmos o programa acima com o MikroC PRO teremos como resultado o seguinte
cdigo de mquina (descrito somente algumas linhas do cdigo gerado):
FiguraFiguraFiguraFigura
1....5 ---- OpcodeOpcodeOpcodeOpcode geradogeradogeradogerado
apsapsapsaps compilaocompilaocompilaocompilao
dodododo programaprogramaprogramaprograma
A partir da imagem acima, podemos verificar os valores que sero gravados na memria de
programa aps gravao do programa exemplo acima. Esses valores so teis para o
programador experiente, pois permite visualizar e acompanhar a execuo por completo da
compilao dos arquivos.
'Microgenios | MicroControladores *
'Site: w.Microgenios.com.br *
'Autor: Fernando Simplicio de Sousa *
'Programa exemplo: PISCA_PISCA.c
'Cristal: 8MHz - modo HS *
'Microcontrolador PIC18F4520 Microchip *
'Tools: Kit PICgenios PIC18F Mdulo Profissional Microgenios
'Configurao: DIP1 - Chave O9 -ON
'Objetivo:
'Este simples programa inverte todo os pinos do PORTD em intervalos
'de 1 segundo
voidvoidvoidvoid main(){ //funo principal do programa
TRISD = 0; //configura portd como saida
PORTD = 0; //zera todos os pinos do portd
whilwhilwhilwhileeee(1){
Delay_ms(1000); //delay de 1 segundo
PORTD = 0; //zera todo o portd
Delay_ms(1000); //delay de 1 segundo
PORTD = 0B11111111; //seta todos os pinos do PORTD }
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 14 de 74
FiguraFiguraFiguraFigura
1....6 CdigoCdigoCdigoCdigo
HexadecimalHexadecimalHexadecimalHexadecimal
MemriaMemriaMemriaMemria
dededede dadosdadosdadosdados ----
EEPROMEEPROMEEPROMEEPROM
Como estudamos anteriormente, sabemos que as memrias do tipo EEPROM so muito
parecidos com a memria RAM, sua diferena que as distingue devido ao fato da memria
EEPROM reter as informaes salvas quando a desenergizarmos. Podemos salvar nesta
memria dados no-volteis durante o decorrer da execuo de nosso programa.
O PIC18F4520 possui internamente 256 bytes de memria de dados EEPROM. O endereo
inicial da memria de dados EEPROM 00h seu ltimo endereo FFh.
MemriaMemriaMemriaMemria dededede dadosdadosdadosdados ---- RAMRAMRAMRAM
Chegamos a uma das partes mais importantes do estudo referente ao nosso microcontrolador
PIC, neste tpico apresentaremos toda a estrutura de memria de dados RAM.
Aprenderemos a trabalhar com ela e tambm onde esto localizados os bits que
ligam/desligam, configuram e controlam os perifricos internos do PIC, ou seja, os SFRs
(Registradores de Funes Especiais).
A memria de dados RAM dividida em dois grupos: os chamados GPRs (Registradores de
Propsito Geral) e os SFRs ( Registradores de Funes Especiais).
Os GFRs tem a funo de armazenar dados de uso geral que utilizamos e criamos durante a
execuo do nosso programa. Podemos guardar nesse regio da memria RAM dados volteis
de variveis, tabelas, constantes, entre outras.
Os SFR's so a parte principal do microcontrolador, nesta rea da memria RAM que esto
armazenados todos os setups de funcionamento do PIC. A partir desses registradores
podemos configurar o modo de trabalho dos timers/counters, USART, conversores analgicos
digitais, etc.
O PIC18F4520 em estudo possui internamente 1536 bytes de memria de dados RAM.
O banco de memria RAM da famlia PIC18F dividido em 16 bancos que contm 256 bytes
de memria cada, pois a forma de implementao das instrues limita o endereamento a um
mximo de 7 bits ou 128 registradores. Por esse motivo, a Microchip usa a filosofia de
pginao de memria, criando bancos de memria a cada 128 posies. Acompanhe a figura
abaixo:
Nota:Nota:Nota:Nota:

Os cdigos em assembly visualizado na figura acima foi gerado pelo compilador MikroC PRO
aps a compilao de um programa escrito em C.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 15 de 74
FiguraFiguraFiguraFigura
1....7 DiagramaDiagramaDiagramaDiagrama dadadada
memriamemriamemriamemria RAMRAMRAMRAM
internainternainternainterna
Vamos examinar o mapa de registradores dos SFR's. (endereo 0F80h FFFh): Registradores
de Funes Especiais SFRs w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 16 de 74
FiguraFiguraFiguraFigura
1....8 RegistradoresRegistradoresRegistradoresRegistradores
dededede FunesFunesFunesFunes
EspeciaisEspeciaisEspeciaisEspeciais SFRsSFRsSFRsSFRs
Atravs da configurao desses registradores especiais, podemos monitorar o status do
microcontrolador em determinados momentos e situaes. Estudaremos a funo desses
registradores quando estivermos trabalhando com projetos, pois dessa maneira ficar mais
claro seu funcionamento.
IntrodIntrodIntrodIntroduouououo
asasasas portasportasportasportas dededede
I/OI/OI/OI/O
Os microcontroladores PIC possuem pinos fsicos destinados comunicao de dados com os
circuitos externos. Atravs desses pinos podemos enviar nveis lgicos (0 ou 1) para, por
exemplo, acender ou apagar um LED, acionar displays LCD, ler botes e sensores, etc.
O microcontrolador PIC18F45200 da Microchip possue 34 pinos de escrita e leitura (I/O), os
quais esto divididos em quatro portas chamadas: PORTA, PORTB, PORTC, PORTD e
PORTE.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 17 de 74
FiguraFiguraFiguraFigura 1....9 PIC18F4520PIC18F4520PIC18F4520PIC18F4520
Os registradores PORTB, PORTC e PORTD possuem 8 pinos de I/O cada, enquanto o PORTE
possue 4 pinos de I/O e PORTA 6 pinos de I/O.
Cada porta de I/O possui trs registradores que controlam suas funes: um registrador PORT,
LAT e um registrador TRIS.
Os registradores PORT (PORTA, PORTB, PORTC, PORTD, PORTE) pertencem aos SFRs e
armazema os dados das portas paralelas (I/O's) do microcontrolador. Qualquer escrita
realizada em um desses registros automaticamente altera todo o contedo presente na sada
do chip.
O registrador TRIS utilizado para configurar cada pino da respectiva porta como entrada ou
sada. Assim, cada bit desse registrador corresponde a um pino da porta. Se o bit estiver em 1
(um), o pino correspondente esta configurado como entrada de dados, e se estiver em 0 (zero)
configuramos este pino como sada de dados.
As portas de comunicao paralela do PIC so utilizadas para efetuar diversas tarefas:
O O O O PORTPORTPORTPORTAAAA

A primeira porta a ser estudada o PORTA. Alm das funes de entrada e sada de dados
encontramos tambm diversas outras funes multiplexadas aos seus pinos:
TabelaTabelaTabelaTabela
1....2 PinosPinosPinosPinos
PORTAPORTAPORTAPORTA
Pino(DIP)Pino(DIP)Pino(DIP)Pino(DIP)
FunoFunoFunoFuno TipoTipoTipoTipo
DescrioDescrioDescrioDescrio
Vamos conhecer as funes de cada pino do PORTA:
2 RA0 AN0 I/O Entrada
Entrada e sada de uso geral Entrada do conversor AD0
3 RA1 AN1 I/O Entrada
Entrada e sada de uso geral Entrada do conversor AD1
4 RA2 AN2 Vref- CVref
I/O Entrada Entrada Sada
Entrada e sada de uso geral Entrada do conversor AD2 Entrada de referncia baixa do A/D
Sada de tenso da referencia do comparador
5 RA3 AN3 Vref+
I/O Entrada Entrada
Entrada e sada de uso geral Entrada do conversor AD3 Entrada de referncia alta do A/D
6 RA4 T0CKI C1OUT
I/O Entrada Sada
Entrada e sada de uso geral Entrada de clock timer0 Sada do comparador 1
7 RA5 AN4 /S HLVDIN C2OUT
I/O Entrada Entrada Entrada Saida
Entrada e sada de uso geral Entrada do conversor AD4 Entrada de seleo SPI Detector de
alta/baixa voltagem. Sada do comparador 2
13 OSC1 CLKI RA7
Entrada Entrada I/O
Entrada do cristal oscilador Entrada do clock externo Entrada e sada de uso geral
14 OSC2 CLKO RA6
Sada Sada I/O
Sada do cristal oscilador Entrada do clock exteno Entrada e sada de uso geral
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 18 de 74
RegistradorRegistradorRegistradorRegistrador PORTAPORTAPORTAPORTA
FigFigFigFiguraurauraura 1....10101010 ---- PORTAPORTAPORTAPORTA
O registrador PORTA esta localizado na memria RAM do PIC e possui o endereo (0XF80).
Este registrador ir acessar os pinos da PORTA da seguinte maneira:
PORTAPORTAPORTAPORTA

RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Toda a porta de I/O possui internamente um latch de sada para cada pino. Dessa forma, uma
escrita no registrador PORTA ir na realidade escrever em cada latch do PORTA. O lat da
PORTA chamado de LATA.
Para ler um dado um dado no PORTA, basta ler o contedo do registrador PORTA.
RegistradorRegistradorRegistradorRegistrador TRISATRISATRISATRISA
O registrador TRISA utilizado para o controle da direo de atuao de cada pino de I/O do
PORTA. Atravs desse registradores definimos e configuramos o modo de trabalho do pino do
microcontrolador como entrada ou sada de dados.
TRISATRISATRISATRISA

Este registrador define os pinos do PORTA da seguinte maneira:
RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Se o bit do registrador TRISA estiver em nvel lgico 1, o pino correspondente a este bit do
PORTA estar configurado como entrada.
Se o bit do registrador TRISA estiver em nvel lgico 0, o pino correspondente a este bit do
PORTA estar configurado como sada.
LeituraLeituraLeituraLeitura
dodododo LATCHLATCHLATCHLATCH dededede umumumum
pinopinopinopino dodododo PICPICPICPIC
Para ler o LATCH de sada do microcontrolador ao invs dos pinos utilizamos o registrador
LATA, referente ao PORTA, ou LATB, referente ao PORTB. O latch de sada encontra-se antes
do buffer de sada do pino, e por esse motivo podemos ler seu estado.
Nota:Nota:Nota:Nota:

O registrador PORTA o "espelho" dos pinos do PORTA do PIC, para lermos ou escrevermos
nesse registrador estamos na verdade atuando sobre os pinos do port respectivamente. No
podemos esquecer que o registrador TRISD tambm afeta a leitura e escrita no port.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 19 de 74
O PORTBPORTBPORTBPORTB
O PORTB, tal qual o PORTA, implementa diversas outras funes multiplexadas aos seus
pinos, acompanhe:
Pino(DIP)Pino(DIP)Pino(DIP)Pino(DIP)
FunoFunoFunoFuno TipoTipoTipoTipo
DescrioDescrioDescrioDescrio
I/O Entrada Entrada Entrada
Entrada e sada de uso geral Interrupo externa 0 Entrada de erro PWM para CCP1 Entrada
analgica 12
I/O Entrada Entrada
Entrada e sada de uso geral Interrupo externa 1 Entrada analgica 10
I/O Entrada Entrada
Entrada e sada de uso geral Interrupo externa 2 Entrada analgica 8
I/O Entrada I/O
Entrada e sada de uso geral Entrada analgica 9 Entrada de captura 2, sada de comparao
2 e sada PWM 2
I/O Entrada I/O
Entrada e sada de uso geral Pino de interrupo por mudana de nvel Entrada analgica 1
38 RB5 KBI1 PGM
I/O Entrada I/O
Entrada e sada de uso geral Interrupo por mudana de estado Pino de habilitao ICSP
baixa voltagem (In-Circuit Debugger)
39 RB6 KBI2 PGC
I/O Entrada I/O
Entrada e sada de uso geral Interrupo por mudana de estado Pino de clock do ICSP
40 RB7 KBI3 PGD
I/O Entrada I/O
Entrada e sada de uso geral Interrupo por mudana de estado Pino de dados do ICSP
Assim como no PORTA, o PORTB possui dois registradores que definem o modo de trabalho
dos seus pinos de I/O: so eles: PORTB e TRISB.
Tanto o registrador PORTB quanto o registrador TRISB esto localizados na memria RAM do
PIC e pertencem aos SFR'S (Registradores de Funes Especiais).
O registrador TRISB tem as mesmas funes que o registrador TRISA estudado anteriormente,
que programar os pinos do PIC para serem entradas ou sadas para uso geral.
O registrador PORTB funciona da mesma maneira descrita no PORTA.
O PORTCPORTCPORTCPORTC
O PORTC, tal qual o PORTA, implementa diversas outras funes multiplexadas aos seus
pinos, acompanhe:
Pino(DIP)Pino(DIP)Pino(DIP)Pino(DIP)
FunoFunoFunoFuno TipoTipoTipoTipo
DescrioDescrioDescrioDescrio
I/O Sada Entrada
Entrada e sada de uso geral Sada do clock do Timer 1 Clock externo Timer1 / Timer3
I/O Entrada Sada
Entrada e sada de uso geral Entrada de clock do Timer1 Mdulo CCP2(multiplexado com RB3
)
I/O I/O Saida
Entrada e sada de uso geral Mdulo CCP1 Sada ECCP1
18 RC3 SCK SCL
Entrada e sada de uso geral Entrada e sada do clock serial para o modo SPI Entrada e sada
do clock serial para o modo I2C
23 RC4 SDI SDA
I/O Entrada I/O
Entrada e sada de uso geral Entrada de dados SPI Entrada e sada de dados I2C
24 RC5 SD0 I/O Sada
Entrada e sada de uso geral Sada de dados SPI
25 RC6 TX CK
I/O Sada I/O
Entrada e sada de uso geral Canal de transmisso UART Clock de sincronismo UART
26 RC7 RX DT
I/O Entrada I/O
Entrada e sada de uso geral Canal de recepo UART Clock de sincronismo UART
Assim como no PORTA, o PORTC possui dois registradores que definem o modo de trabalho
dos seus pinos de I/O: so eles: PORTC e TRISC.
Tanto o registrador PORTC quanto o registrador TRISC esto localizados na memria RAM do
PIC e pertencem aos SFR'S (Registradores de Funes Especiais).
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 20 de 74
O registrador TRISC tem as mesmas funes que o registrador TRISA estudado anteriormente,
que programar os pinos do PIC para serem entradas ou sadas.
O registrador PORTC funciona da mesma maneira descrita no PORTA.
As funes especiais de cada pino sero vistas quando estudarmos suas aplicaes reais
atravs dos projetos que vamos desenvolver durante nosso curso.
O PORTDPORTDPORTDPORTD
O PORTD, tal qual o PORT A, PORTB e PORTC implementa diversas outras funes
multiplexadas aos seus pinos, acompanhe:
Pino(DIP)Pino(DIP)Pino(DIP)Pino(DIP)
FunoFunoFunoFuno TipoTipoTipoTipo
DescrioDescrioDescrioDescrio
19 RD0 PSP0 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
20 RD1 PSP1 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
21 RD2 PSP2 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
2 RD3 PSP3 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
27 RD4 PSP4 I/O I/O
Entrada e sada de uso geral Porta de comunicao paralela
I/O I/O Sada
Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1
I/O I/O Sada
Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1
I/O I/O Sada
Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1
Assim como nas outras portas, o PORT D possui dois registradores que definem o modo de
trabalho dos seus pinos de I/O: so eles: PORTD e TRISD.
Tanto o registrador PORT D quanto o registrador TRISD esto localizados na memria RAM do
PIC e pertencem aos SFR'S (Registradores de Funes Especiais).
O registrador TRISD tem a funo de programar os pinos do PIC para serem entradas ou
sadas.
O registrador PORTD o "espelho" dos pinos do PORTD do PIC, para lermos ou escrevermos
nesse registrador estamos na verdade atuando sobre os pinos do port respectivamente. No
podemos esquecer que o registrador TRISD tambm afeta a leitura e escrita no port.
As funes especiais de cada pino sero vistas quando estudarmos suas aplicaes reais
atravs dos projetos que vamos desenvolver durante nosso curso.
O PORTEPORTEPORTEPORTE
O PORTE, tal qual as outras portas, implementa diversas outras funes multiplexadas aos
seus pinos, acompanhe:
Pino(DIP)Pino(DIP)Pino(DIP)Pino(DIP)
FunoFunoFunoFuno TipoTipoTipoTipo
DescrioDescrioDescrioDescrio
8 RE0 /RD AN5
I/O Entrada Entrada
Entrada e sada de uso geral Controle de leitura do port paralelo Entrada analgica AD5
9 RE1 /WR AN6
I/O Entrada Entrada
Entrada e sada de uso geral Controle de escrita do port paralelo Entrada analgica AD6
I/O Entrada Entrada
Entrada e sada de uso geral Controle de seleo do port paralelo Entrada analgica AD7
1 /MCLR VPP RE3
Entrada Entrada Entrada
Entrada do RESET externo. Este pino ativo em nvel baixo Pino de habilitao de alta
voltagem ICSP Entrada Digital
Assim como nas outras portas, o PORTE possui dois registradores que definem o modo de
trabalho dos seus pinos de I/O: so eles: PORTE e TRISE.
Tanto o registrador PORTE quanto o registrador TRISE esto localizados na memria RAM do
PIC e pertencem aos SFR'S (Registradores de Funes Especiais).
O registrador TRISE tem a funo de programar os pinos do PIC para serem entradas ou
sadas.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 21 de 74
O registrador PORTE o "espelho" dos pinos do PORTE do PIC, para lermos ou escrevermos
nesse registrador estamos na verdade atuando sobre os pinos do port respectivamente. No
podemos esquecer que o registrador TRISE tambm afeta a leitura e escrita no port.
As funes especiais de cada pino sero vistas quando estudarmos suas aplicaes reais
atravs dos projetos que vamos desenvolver durante nosso curso.
ResetResetResetReset

capaz de realizar esse procedimento que costumamos
chamar de POWERPOWERPOWERPOWER
ONONONON
RESETRESETRESETRESET.
Sempre que energizamos nosso circuito microcontrolado interessante que o PIC seja
resetado, para isso necessrio a insero de um circuito eletrnico bem simples, mas
Alm disso interessante que exista um boto para que o usurio possa reiniciar o sistema
sempre que for necessrio (reset manual), a seguir indicamos um exemplo de circuito para o
reset.
FiguraFiguraFiguraFigura
1....11 CircuitoCircuitoCircuitoCircuito dededede
ResetResetResetReset
OsOsOsOs
PICsPICsPICsPICs possuempossuempossuempossuem
diversosdiversosdiversosdiversos tipostipostipostipos dededede
reset:reset:reset:reset:
POR - Power On Reset - o reset que ocorre quando o chip ligado. Reset do MCLR
durante a operao normal
Reset do MCLR durante o modo SLEEP
Reset do watchdog durante operao normal
Reset do detector de Brown-out (BOR)
Instruo de Reset
Reset do Stack Pointer
CiclosCiclosCiclosCiclos dededede mquinamquinamquinamquina
A contagem de tempo no medida diretamente pela freqncia de oscilao do cristal e sim
atravs do que chamamos de CICLO DE MQUINA.
Internamente no microcontroladores PIC a freqncia do cristal dividida por 4, o que nos
resulta que a freqncia real de trabalho :
Conclumos ento que: a cada 1 ciclo de mquina corresponde a 4 pulsos do oscilador.
quartzo de 8 MHz

QualQualQualQual
a freqnciafreqnciafreqnciafreqncia realrealrealreal dededede
execuoexecuoexecuoexecuo dasdasdasdas
instruesinstruesinstruesinstrues dodododo nossonossonossonosso
microcontrolador?microcontrolador?microcontrolador?microcontrolador?
Para exemplificar vamos supor que temos conectado ao microcontrolador um cristal de
muito simples, acompanhe:
Sabemos que a freqncia do cristal utilizado de 8 MHz, e que cada instruo leva
exatamente 1 ciclo de mquina para ser executada; Basta dividir o valor do cristal por 4 para
sabermos o valor real de trabalho do PIC.
Conclumos ento que nosso microcontrolador PIC com cristal de 8 MHz esta trabalhando
efetivamente a 2 MHz, ou seja , cada instruo de programa leva 0.5 us para ser executada.
Pois: Frequencia = 1 / periodo Logo: Periodo = 1/ 2MHz -> 0.5us freqncia de trabalho real =
freqncia oscilador / 4 freqncia de trabalho real = 8 MHz / 4 => 2 MHz
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 2 de 74
OsOsOsOs
bitsbitsbitsbits dededede configuraoconfiguraoconfiguraoconfigurao
(fusveis)(fusveis)(fusveis)(fusveis)
Os microcontroladores PIC possui internamente regies de memrias no volteis (Flash) que
so resposveis por determinar o modo de trabalho do chip. So chamados de bits de
configurao ou fusveis. de grande importncia que venhamos entender o funcionamento
desses bits, caso contrrio teremos srios problemas no funcionamento do nosso projeto.
Os bits de configurao do PIC esto armazenados em uma rea reservada do PIC. Podemos
configurar diversas funes atravs desses bits:
OSC Selection (seleo do oscilador) RESET (tipos de acionamento de reset)
POWER -on Reset (POR)
Power -up Timer (PWRT)
Oscillator Start-up Timer (OSC)
Brown-out Reset (BOR) (verificador de tenso de alimentao)
Interrupts
Watchdog Timer (WDT)
Code Protection
ID Locations
In-Circuit Serial Programming
Nota:Nota:Nota:Nota:

Temos que lembrar que nosso microcontrolador em estudo pode operar em 10MHz (ciclo de
mquina) w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 23 de 74
MapaMapaMapaMa
pa
dosdosdosdos bitsbitsbitsbits dededede
configuraoconfiguraoconfiguraoconfigurao dodododo
PIC18F4520PIC18F4520PIC18F4520PIC18F4520
TabelaTabelaTabela
Tabela
1....3 BitsBitsBitsBits dededede
configuraoconfiguraoconfiguraoconfigurao dodododo
PIC18F4520PIC18F4520PIC18F4520PIC18F4520
TabelaTabelaTabela
Tabela
1....4 BitsBitsBitsBits dededede
configuraoconfiguraoconfiguraoconfigurao dodododo
PIC18F4520(Detalhado)PIC18F4520(Detalhado)PIC18F4520(Detalhado)
PIC18F4520(Detalhado)
Apresentamos a seguir uma tabela com a descrio de todos os bits de configurao do
PIC18F4520:
Oscilador RC, EC, LP, XT, HS, HS-PLL, RC-SOC2 com RA6,
EC-OSC2 com RA6
Fail-Safe Clock Monitor Enable Habilitado ou Desabilitado Internal External Switch Over Mode
Habilitado ou Desabilitado
Power Up Timer Habilitado ou Desabilitado Brown Out Detect Habilitado ou Desabilitado Brown
Out Voltage 2.5V, 2.7V, 4.5V ou 4.7V Watchdog Timer Habilitado ou Desabilitado
CCP2MX Pino RC1 ou RB3
PortB A/D Enable PortB configurado como I/O Digital no reset ou configurado como A/D no
reset
Low Power Timer1 Osc Enable Habilitado ou Desabilitado Mster Clear Enable MCLR
Habilitado ou RE3 Habilitado Stack Overflow Reset Habilitado ou Desabilitado Low Voltage
Program Habilitado ou Desabilitado Extended Instruction Enable Bit Habilitado ou Desabilitado
Background Debug Habilitado ou Desabilitado Code Protect 0x0800 A 0x1fff Habilitado ou
Desabilitado Code Protect 0X2000 A 0X3FFF Habilitado ou Desabilitado Code Protect 0X4000
A 0X5FFF Habilitado ou Desabilitado Code Protect 0X6000 A 0X7FFF Habilitado ou
Desabilitado Code Protect Boot Habilitado ou Desabilitado Data EEPROM Code Protect
Habilitado ou Desabilitado Table Write Protect 0x2000 A 0x1fff Habilitado ou Desabilitado Table
Write Protect 0x2000 A 0x3fff Habilitado ou Desabilitado Table Write Protect 0x4000 A 0x5fff
Habilitado ou Desabilitado Table Write Protect 0x6000 A 0x7fff Habilitado ou Desabilitado
Config Write Protect Habilitado ou Desabilitado Table Write Protect Boot Habilitado ou
Desabilitado Data Ee Write Protect Habilitado ou Desabilitado Table Read Protect 0x0800 A
0x1fff Habilitado ou Desabilitado Table Read Protect 0x2000 A 0x3fff Habilitado ou Desabilitado
Table Read Protect 0x4000 A 0x5fff Habilitado ou Desabilitado Table Read Protect 0x6000 A
0x7fff Habilitado ou Desabilitado Table Read Protect Boot Habilitado ou Desabilitado
Acompanhe:
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 24 de 74
No painel de configurao do MikroC PRO, podemos visualizar e configurar os bits de
configurao referente ao nosso microcontrolador PIC18F4520.
FiguraFiguraFiguraFigura
1....12121212
ConfiguraoConfiguraoConfiguraoConfigurao dosdosdosdos
fusiveisfusiveisfusiveisfusiveis nononono MikroCMikroCMikroCMikroC
PRO PRO PRO PRO
Podemos configurar os bits de configurao de duas maneiras:
Atravs do MikroC PRO, no momento da criao ou desenvolvimento do projeto ou atravs dos
programas de gravao dos gravadores de PIC (WinPIC800, IC-Prog etc.)
No primeiro campo de configurao dos fusiveis do MikroC PRO encontramos o campo de
seleo de clock. Atravs desses campos podemos informar vrios tipos de osciladores e
circuitos de oscilao:
ConfiguraoConfiguraoConfiguraoConfigurao dededede ClockClockClockClock
Todo microcontrolador requer um circuito de oscilao pois quem d o sinal de "partida" e
"sincronismo" para qualquer atividade interna da chip. A freqncia de operao de oscilao
um dos agentes que determinam a velocidade de execuo das instrues do
microcontrolador.
LP Low-power cristal
XT Cristal ou ressonador
HS High-Speed cristal (cristal de alta velocidade) ou ressonador
HS + PLL High-Speed cristal ou ressonador com PLL habilitada
RC Resistor / Capacitor externo
RCIO Resistor / Capacitor externo com pino de I/O
EC Clock externo
ECIO Clock exteno com pino de I/O
O PIC18F4520 pode funcionar com diversas fontes de osciladores:
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 25 de 74
VamosVamosVamosVamos
conhecerconhecerconhecerconhecer cadacadacadacada
umumumum dosdosdosdos tipostipostipostipos
dededede
osciladores:osciladores:osciladores:osciladores:
OsciladorOsciladorOsciladorOscilador RCRCRCRC comcomcomcom pinopinopinopino
RA6RA6RA6RA6 comocomocomocomo
sadasadasadasada dededede clockclockclockclock
Este o tipo de oscilador mais simples que existe e tambm o mais barato, mas, por outro
lado, o menos preciso, variando muito a tenso de trabalho, temperatura e tolerncias. O
circuito RC deve ser ligado conforme a figura seguinte:
OsciladorOsciladorOsciladorOscilador
RCRCRCRC comcomcomcom pinopinopinopino
RA6RA6RA6RA6 comocomocomocomo I/OI/OI/OI/O
dededede usousousouso geralgeralgeralgeral
Este o tipo de oscilador mais simples que existe e tambm o mais barato, mas, por outro
lado, o menos preciso, variando muito a tenso de trabalho, temperatura e tolerncias. O
circuito RC deve ser ligado conforme a figura seguinte:
ModoModoModoModo HSPLLHSPLLHSPLLHSPLL
Nesta configurao o pino RA6 pode ser utilizado como I/O de uso geral
HSPLL na verdade um modo em que podemos multiplicar o valor da freqncia de entrada
do cristal oscilador por 4. ideal para ambientes em que o dispositivo no pode gerar EMI
(interferncia Eletromagntica). Este modo deve ser habilitado nos "fusveis de configuraes"
no momento em que formos gravar o chip.
FiguraFiguraFiguraFigura 1....13131313 ---- ModoModoModoModo HSPLLHSPLLHSPLLHSPLL
Por exemplo:
Caso venhamos conectar ao PIC um cristal de 10 MHz entre os pinos OSC1 e OSC2 e
ativarmos o modo HSPLL no momento em que gravarmos o chip, executando seu ciclo de
mquina a 10MHz (10 MIPS - milhes de instrues por segundo).
Exemplo: Frmula do ciclo de mquina com HSPLL ativado cristal de 8MHz Ciclo de mquina
= (Fosc / 4 ) * 4 w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 26 de 74
Ciclo de mquina = 8 MHz ou 0.125us Circuito de Oscilao EC com pino RA6 como I/O de
uso geral
eletrnico

Este modo de configurao utilizado quando temos uma fonte de clock em nosso circuito
Obs: A fonte de clock dever estar livre de ruidos e deformaes.
FiguraFiguraFiguraFigura
1....14141414 ModoModoModoModo ECECECEC
comcomcomcom pinopinopinopino RA6RA6RA6RA6
comocomocomocomo I/OI/OI/OI/O dededede usousousouso
geralgeralgeralgeral
CircuitoCircuitoCircuitoCircuito
dededede OscilaoOscilaoOscilaoOscilao EC
comcomcomcom pinopinopinopino RA6RA6RA6RA6
comocomocomocomo sadasadasadasada dededede
cloclocloclockckckck
eletrnico

Este modo de configurao utilizado quando temos uma fonte de clock em nosso circuito
Percebam que a sada de clock Fosc/4, ou seja, o prprio ciclo de mquina do
microcontrolador, a partir desse clock de sada, poderemos sincronizar outros
microcontroladores no circuito.
Obs:Obs:Obs:Obs:
A fontefontefontefonte dededede
clockclockclockclock deverdeverdeverdever
estarestarestarestar livrelivrelivrelivre dededede
ruidosruidosruidosruidos e
deformaes.deformaes.deformaes.deforma
es.
FiguraFiguraFiguraFigura
1....15151515 ModoModoModoModo
ECECECEC comcomcomcom
pinopinopinopino RA6RA6RA6RA6
comocomocomocomo sadasadasadasada
dededede clockclockclockclock
OsciladoresOsciladoresOsciladoresOscilado
res
LPLPLPLP ,,,, XTXTXTXT ouououou HSHSHSHS
---- CristalCristalCristalCristal dededede
quartzquartzquartzquartzoooo ouououou
RessonadorRessonadorRessonadorRessonador
Para utilizarmos cristal ou ressonadores em nosso chip, devemos conect-lo da seguinte
maneira:
FiguraFiguraFiguraFigura
1....16161616 CCCClocklocklocklock
geradogeradogeradogerado a partirpartirpartirpartir dededede
umumumum cristalcristalcristalcristal dededede
quartzoquartzoquartzoquartzo
Note que existe dois capacitores ligados em paralelo com o cristal. O valor desses capacitores
variam de acordo com a frquencia do cristal utilizado. Segue uma tabela apresentando os
valores dos capacitores:
ValoresValoresValoresValores tipicostipicostipicostipicos paraparaparapara o
capacitorcapacitorcapacitorcapacitor
TipoTipoTipoTipo dededede
osciladorosciladorosciladoroscilador
FreqnciaFreqnciaFreqnciaFreqncia dodododo
cristalcristalcristalcristal

C1C1C1C1 C2C2C2C2
32kHz 33pF 33pF LP (cristal de baixa freqncia) 200KHz 15pF 15pF
Nota:Nota:Nota:Nota:

Quando projetamos um circuito com microcontrolador, a regra colocar o oscilador to perto
quanto possvel do microcontrolador, de modo a evitar qualquer interferncia nas linhas que
ligam o oscilador ao chip.
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 27 de 74
HS (cristal de alta freqncia)
Para quem no se recorda de como um cristal de quartzo ou cermico, segue suas fotos:
cristalcristalcristalcristal dededede quartzoquartzoquartzoquartzo
RessonadorRessonadorRessonadorRessonado
r
cermicocermicocermicocermico
FiguraFiguraFiguraFigura
1....17171717
OsciladoresOsciladoresOsciladoresOsciladore
s
Os ressonadores cermicos so comercializados em dois tipos: com dois terminais e com trs
terminais. Os mais utilizados so os ressonadores com trs terminais pois no precisam de
capacitores externos. O ressonador com dois terminais obedecem a ligao da figura 5.4,
enquanto no de trs o pino central deve ser aterrado. segue abaixo o esquema de ligao do
ressonador com trs terminais:
Os ressonadores cermicos uma segunda opo. No to barato quanto um RC mas
bem mais estvel e preciso.
Nos projetos do nosso curso iremos utilizar cristal de quartzo de 8 MHz pois garantimos maior
preciso nas rotinas de tempo nas execues das instrues.
OSCSENOSCSENOSCSENOSCSEN
(SYSTEM(SYSTEM(SYSTEM(SYSTEM
CLOCKCLOCKCLOCKCLOCK
SWITCHSWITCHSWITCHSWITCH BIT)BIT)BIT)BIT)
Atravs desse bit de configurao, podemos selecionar o modo de acionamento do segundo
oscilador de baixa frequncia do PIC, mas para isso faz necessrio habilitarmos o T1OSCEN
no TIMER1.
Obs: Caso desejemos utilizar o segundo oscilador (T1OSO e T1OSI), e no venhamos a
programar o TIMER1 corretamente, automaticamente o bit de configurao do OSCSEN ser
desabilitado.
ConfiguraoConfiguraoConfiguraoConfigurao
dosdosdosdos
FusveisFusveisFusveisFusveis
dededede EnergiaEnergiaEnergiaEnergia
PWPWPWPWRTENRTENRTENRTEN
(SYSTEM(SYSTEM(SYSTEM(SYSTEM
CLOCKCLOCKCLOCKCLOCK
SWITCHSWITCHSWITCHSWITCH
BIT)BIT)BIT)BIT)
Atravs desse bit, podemos configurar o modo POWER para o acionamento do PIC, quando
este bit estiver acionado o modo POWER-UP TIMER estar habilitado. O temporizador de
power-up pode ser utilizado para fazer com que o chip permanea em reset por
aproximadamente 72ms aps o chip ter sido ligado. E deve ser utilizado nos casos em que o
chip no inicializa corretamente devido a um tempo muito elevado para a estabilizao da fonte
de alimentao ou do circuito de reset externo.
BROWNBROWNBROWNBROWN----OutOutOutOut

O detector de brown-out utilizado para provocar o reset da CPU no caso de a tenso de
alimentao cair abaixo de um determinado limite. Uma vez que a tenso retorne ao seu valor
nominal, o circuito de reset liberado e o programa reiniciado.
No PIC18F4520 podemos selecionar 4 tipos de tenses para o BROWN-OUT: 2.0V, 2.7V, 4.2V
ou 4.5V.
Nota:Nota:Nota:Nota:

Antes de gravarmos um programa no microcontrolador PIC devemos "queimar" os fusivel de
configurao informando qual o tipo de oscilador estamos utilizando em nosso hardware.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 28 de 74
Podemos habilitar ou desabilitar o detector de brown-out, basta selecionar o bit de configurao
caso desejemos habilitar o brown-out.
WDTWDTWDTWDT
---- WatchdogWatchdogWatchdogWatchdog TimerTimerTimerTimer
EnEnEnEnableableableable (co(co(co(co dededede
guarda)guarda)guarda)guarda)
O watchdog timer ou co de guarda um sistema interno ao microcontrolador que evita que o
programa pare em um determinado ponto. Imagine que voc desenvolveu uma aplicao e que
por um erro de software em certo momento o seu programa pra (entra em loop infinito). Caso
o watchdog dog no seja resetado de tempos em tempos ele ir "estourar", ou seja, chegar ao
final da sua contagem fazendo com que o microcontrolador resete e reinicie todo o processo.
O tempo mnimo para estouro do watchdog de 18 ms, porm podemos estender esse tempo
atravs do postscale. Com essa funo podemos multiplicar o tempo mnimo de 18 ms com os
seguintes multiplicadores do prescaler: 1:1; 1:2, 1:4, 1:8, 1:16, 1:32, 1:64, 1:128.
CCP2MXCCP2MXCCP2MXCCP2MX

Podemos atravs desse bit definir se queremos multiplexar o mdulo CCP2 com o pino RC1
(CCP2MX = 0) ou com o pino RB3 (CCP2MX = 1)
DebugDebugDebugDebug

Atravs desse bit , podemos habilitar o modo DEBUGGER no PIC. Nesse modo possvel
emular um programa na prpria placa de testes. Emular consiste no processo de, junto com o
computador, testar passo a passo o funcionamento do programa que est rodando no
microcontrolador. Se esta opo estiver ativa, os pinos de gravao RB6 e RB7 deixam de
funcionar como I/O's; caso contrrio, o funcionamento desses pinos fica normal.
LVPLVPLVPLVP
(Low(Low(Low(Low VoltagemVoltagemVoltagemVoltagem
Programming)Programming)Programming)Programming)
Normalmente quando o PIC gravado, acionado uma tenso de 13Vcc no pino MCLR. Se a
opo LVP estiver ativa, para gravar o PIC basta ter nivel lgico 1 no pino MCLR, mas neste
modo, aps a gravao o pino RA5 do PIC no poder ser utilizado como I/O.
STVRENSTVRENSTVRENSTVREN
(Stack(Stack(Stack(Stack
Full/UnderflowFull/UnderflowFull/UnderflowFull/Underflow
ResetResetResetReset EnableEnableEnableEnable
Bit)Bit)Bit)Bit)
O PIC18F4520 possui internamente 31 endereos de pilha. Quando habilitamos esse bit
STVREN, toda vez que ultrapassarmos o limite da pilha o microcontrolador ser resetado.
rearearearea
dededede ProteesProteesProteesProtees
contracontracontracontra leituraleituraleituraleitura e
escritaescritaescritaescrita
Code Protect 0x0800 a 0x1FFF
Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x0800 a
0x1FFF.
Code Protect 0x2000 a 0x3FFF
Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x2000 a
0x3FFF.
Code Protect 0x4000 a 0x5FFF
Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x4000 a
0x5FFF.
Code Protect 0x6000 a 0x7FFF
Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x6000 a
0x7FFF.
Data E Read Protect
Caso este bit esteja habilitado, protege contra leitura os 256 bytes da memria EEPROM
(memria no voltil).
Code Protect Boot
Caso este bit esteja habilitado, protege contra leitura a regio de memria Boot (rea da
memria de programa) 0x0000 at 0x0FF0.
Table Write Protect 0x0200 a 0x1FFF
Caso este bit esteja habilitado, protege a memria de programa contra escrita por tabela no
endereo especificado.
Table Write Protect 0x2000 a 0x3FFF
Caso este bit esteja habilitado, protege a memria de programa contra escrtita por tabela no
endereo especificado.
Table Write Protect 0x4000 a 0x5FFF
Caso este bit esteja habilitado, protege a memria de programa contra escrtita por tabela no
endereo especificado.
Table Write Protect 0x6000 a 0x7FFF w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 29 de 74
Caso este bit esteja habilitado, protege a memria de programa contra escrtita por tabela no
endereo especificado.
Data Write Protect
Caso este bit esteja habilitado, protege contra escrita os 256 bytes da memria EEPROM
(memria no voltil).
Table Write Protect Boot
Caso este bit esteja habilitado, protege contra escrtita por tabela a rea de boot.
Config Write Protect
Caso este bit esteja habilitado, protege contra escrita a rea de configurao do
microcontrolador.
Table Read Protect 0x0800 a 0x1FFF
Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no
endereo especificado.
Table Read Protect 0x2000 a 0x3FFF
Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no
endereo especificado.
Table Read Protect 0x4000 a 0x5FFF
Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no
endereo especificado.
Table Read Protect 0x6000 a 0x7FFF
Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no
endereo especificado.
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 30 de 74
Unidade 2Unidade 2Unidade 2Unidade 2
---- Canais A/D Canais A/D
Canais A/D Canais A/D
Conversor A/D do PICConversor A/D do PICConversor A/D
do PICConversor A/D do PIC
um valor de 4,8876.. mV, pois 5V/ (2E10 - 1) = 4,8876 mV.
O PIC18F4520 possui internamente 12 canais de A/D com resoluo de 10 bits cada. Atravs
de um conversor A/D com resoluo de 10 bits e tenso de referncia de 5V, podemos obter
Os conversores A/D dos PICs utilizam uma tcnica de aproximao sucessivas, normalmente
com resoluo de 10 bits, com clock selecionvel pelo usurio e mltiplas entradas
multiplexadas.
Figura Figura Figura
Figura 2
1---- Canais AD multiplexados Canais AD multiplexados Canais AD
multiplexados Canais AD multiplexados
Os registradores que participam da configurao do conversor A/D so: ADCON0, ADCON1 e
ADCON2.
Nosso A/D possui resoluo de 10 bits (8 + 2 bits), onde os valores das converses so
armazenados nos registradores ADRESH e ADRESL.
Registrador ADCON0:Registrador ADCON0:Registrador ADCON0:Registrador ADCON0:

ADCON0: ADCON0: ADCON0: ADCON0:

Vejamos o funcionamento de cada bit desse registrador:
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 31 de 74
Tabela
Tabela
Tabela
Tabela 2
1 ADCON0 ADCON0 ADCON0 ADCON0
----
---- CHS3CHS3CHS3CHS3 CHS2CHS2CHS2CHS2 CHS1CHS1CHS1CHS1
CHS0CHS0CHS0CHS0 GO_DONEGO_DONEGO_DONEGO_DONE
ADONADONADONADON
CCCCHSHSHSHS3 ..3 ..3 ..3 CHS0 CHS0 CHS0 CHS0: Bit de seleo de canal A/D
Figura Figura Figura Figura 2 2 Seleo A/D Seleo A/D Seleo A/D Seleo A/D
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
GO/DONEGO/DONEGO/DONEGO/DONE: Bit de status da converso A/D 0 - Converso A/D
no est sendo realizada 1 - Converso A/D est sendo realizada
ADONADONADONADON: Liga ou desliga o A/D 0 - Conversor A/D desligado 1 - Conversor
A/D ligado
Registrador ADCON1:Registrador ADCON1:Registrador ADCON1:Registrador ADCON1:

ADCON1: ADCON1: ADCON1:
ADCON1:
VVVVCFG1CFG1CFG1CFG1
VCFG0VCFG0VCFG0VCFG0 PCFG3PCFG3PCFG3PCFG3
PCFG2PCFG2PCFG2PCFG2 PCFG1PCFG1PCFG1PCFG1
PCFG0PCFG0PCFG0PCFG0
Vejamos o funcionamento de cada bit desse registrador: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
VCFG1VCFG1VCFG1VCFG1: Bit de configurao de tenso de referencia (VREF-) 0 VREF-
(AN2) 1 - VSS
Tabela Tabela Tabela
Tabela 2
2 Configurao Pinos A/D Configurao Pinos A/D Configurao
Pinos A/D Configurao Pinos A/D
VCFGVCFGVCFGVCFG0000: Bit de configurao de tenso de referencia (VREF+) 0
VREF+(AN3) 1 - VDD PCFG3, PCFG2, PCFG1, PCFG0: bits configurao do A/D
w.mecatronicadegaragem.blogspot.com



Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 32 de 74
Registrador ADCONRegistrador ADCONRegistrador ADCONRegistrador ADCON2222::::

ADCONADCONADCONADCON2222:
: : :
ADFMADFMADFMADFM
ACQT2ACQT2ACQT2ACQT2
ACQT1ACQT1ACQT1ACQT1
ACQT0ACQT0ACQT0ACQT0
ADCS2ADCS2ADCS2ADCS2
ADCS1ADCS1ADCS1ADCS1
ADCS0ADCS0ADCS0ADCS0
Vejamos o funcionamento de cada bit desse registrador: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
ACQT2
ACQT0ACQT2 .. ACQT0ACQT2 .. ACQT0ACQT2 .. ACQT0:Seleo de tempo de
aquisio
ADCS2
ADCS0ADCS2 .. ADCS0ADCS2 .. ADCS0ADCS2 .. ADCS0:Seleo do Clock do
Conversor A/D
ADFM ADFM ADFM ADFM : Ajusta o formato do resultado da converso A/D 1 - Justifica a
direita 0 - Justifica a esquerda w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 3 de 74
O bit de ADFM tem a funo de organizar o resultado da converso A/D, de forma que o os
valores convertidos sejam justificados a direita ou a esquerda nos registradores ADRESH e
ADRESL. Caso venhamos configurar ADFM = 1, organizamos o valor da converso a direita,
ou seja, os oitos bits menos significativo ser armazendo em ADRESL, e os 2 bits mais
significativo sero armazenados em ADRESH.
Caso ADFM = 0, justificaremos a esquerda os valores de converso, desta forma os oitos bits
mais significativos ficaro em ADRESH e os 2 menos significativo ficar em ADRESL.
Frmula de converso analgico para digital:Frmula de converso analgico para
digital:Frmula de converso analgico para digital:Frmula de converso analgico para
digital:
Rad = ( Vin - Vref-) * 1023 / (Vref+ - Vref-) onde: Rad = Resultado da converso Vref+ e Vref- =
valor de tenso de referncia mxima e mnima Vin = Tenso de entrada no pino A/D obs:
1023 o valor mximo de converso do A/D, lembrando que o valor de 0 a 1023.
Trabalhando com AD no MikroCTrabalhando com AD no MikroCTrabalhando com AD no
MikroCTrabalhando com AD no MikroC
No MikroC utilizamos os seguinte funo para leitura do conversor A/D do PIC: Sintaxe:
Na qual 'canal_AD' o canal do conversor AD do PIC que desejamos ler. O nmero do canal
AD depende do tipo de PIC usado.
Exemplo:Exemplo:Exemplo:Exemplo:

A funo Adc_read salva o valor da converso AD (canal 0 - pino RA0) na varivel leitura_ad.
Lembre-se que o valor da resoluo do AD do PIC18F45200 de 10 bits, e por esse motivo
devemos utilizar uma varivel do tipo inteiro para armazenar o valor do A/D.
uuuunsigned int nsigned int nsigned int nsigned int
leitura_ad;
//'cria varivel leitura_ad com ranger 0 a
65535
leitura_ad = Adc_Read(0);
//'l canal ad0 do PIC e salva na varivel
leitura_ad
Adc_Read (canal_ AD) w.mecatronicadegaragem.blogspot.com




Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 34 de 74
Unidade 3Unidade 3Unidade 3Unidade 3

Canal PWM do PICCanal PWM do PICCanal
PWM do PICCanal PWM do PIC
IntroduoIntroduoIntroduoIntroduo

Os controles de potncia, inversores de freqncia, conversores para servomotor, fonte
chaveadas e muitos outros circuitos utilizam a tecnologia do PWM (Pulse Width Modulation) ou
Modulao de Largura de Pulso como base de seu funcionamento.
Fonte ChaveadaFonte ChaveadaFonte ChaveadaFonte Chaveada

ServoMotoresServoMotoresServoMotoresServoMotores

Inversores de FreqnciaInversores de FreqnciaInversores de FreqnciaInversores de
Freqncia
PWM a abreviao de Pulse Width Modulation ou Modulao de Largura de Pulso. Para que
se entenda como funciona esta tecnologia no controle de potncia, partimos de um circuito
imaginrio formado por um interruptor de ao muito rpida e uma carga que deve ser
controlada, conforme a figura abaixo:
Quando o interruptor est aberto no h corrente na lmpada e a potncia aplicada nula. No
instante em que o interruptor fechado, a carga recebe a tenso total da fonte e a potncia
aplicada mxima.
Como fazer para obter uma potncia intermediria, digamos 50%, aplicada carga? Uma idia
fazermos com que a chave seja aberta e fechada rapidamente de modo a ficar 50% do
w.mecatronicadegaragem.blogspot.com


Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 35 de 74 tempo
aberta e 50% fechada. Isso significa que, em mdia, teremos metade do tempo com corrente e
metade do tempo sem corrente.
A potncia mdia e, portanto, a prpria tenso mdia aplicada carga neste caso 50% da
tenso de entrada.
Figura Figura Figura
Figura 3
1 Largura de Pulsos Largura de Pulsos Largura de Pulsos
Largura de Pulsos
Veja que o interruptor fechado pode definir uma largura de pulso pelo tempo em que ele fica
nesta condio, e um intervalo entre pulsos pelo tempo em que ele fica aberto. Os dois tempos
juntos definem o perodo e, portanto, uma freqncia de controle. A relao entre o tempo em
que temos o pulso e a durao de um ciclo completo de operao do interruptor nos define
ainda o ciclo ativo.
Variando-se a largura do pulso e tambm o intervalo de modo a termos ciclos ativos diferentes,
podemos controlar a potncia mdia aplicada a uma carga. Assim, quando a largura do pulso
varia de zero at o mximo, a potncia tambm varia na mesma proporo (duty cycle),
conforme est indicado na figura abaixo:
Figura Figura
Figura Figura
3
2 Variao mnima ao mximo do duty Cicle do PWM. Variao mnima ao
mximo do duty Cicle do PWM. Variao mnima ao mximo do duty Cicle do
PWM. Variao mnima ao mximo do duty Cicle do PWM.
Este princpio usado justamente no controle PWM: modulamos (variamos) a largura do pulso
de modo a controlar o ciclo ativo do sinal aplicado a uma carga e, com isso, a potncia aplicada
a ela.
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 36 de 74
Figura Figura Figura Figura 3
3 Variao do duty cicle do sinal
PWM Variao do duty cicle do sinal
PWM Variao do duty cicle do sinal
PWM Variao do duty cicle do sinal
PWM
TrabalTrabalTrabalTrabalhando com PWM no
PIChando com PWM no PIChando com PWM no
PIChando com PWM no PIC

O microcontrolador PIC18F45200 possui internamente 2 mdulos CCP
(Capture/Compare/PWM Module), CCP1 e CCP2. Podemos manipular com grande facilidade
as instrues para gerao de sinal PWM no MikroC. Acompanhe:
Os comandos para manipular o mdulo CCP1 so os seguintes:
PWM1_Init PWM1_Set_Duty
PWM1_Start
PWM1_Stop
Funo de Inicializao da gerao do sinal PWM: No MikroC utilizamos a funo Pwm1_Init()
para informar a freqncia do sinal PWM: Sintaxe
Exemplo:Exemplo:Exemplo:Exemplo:

onde: valor_da freqncia: fator da freqncia em Hz do sinal PWM. PS.: Consultar datasheet
do PIC utilizado para saber a freqncia de oscilao. PWM1_Init (4000) //inicia pwm com
freqncia de 4khz
Funo de duty Cycle:Funo de duty Cycle:Funo de duty Cycle:Funo de duty Cycle:

Atravs da funo PWM1_Set_Duty () podemos controlar o duty cycle do sinal PWM. O valor
do duty cycle varia de 0 a 255, onde "0" igual a 0%, "127" igual a 50% e "255" igual a 100%.
Sintaxe:
onde:
valor_duty_cycle: valor do tipo char (0 255) que determina a porcentagem do duty cycle
PWM.
Exemplo:Exemplo:Exemplo:Exemplo:

PWM1_Set_Duty (192); // carrega duty cycle para 75%
PWM1_Init (valor_da_freqncia em Hz) PWM1_Set_Duty (valor_duty_cycle)
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 37 de 74
Figura Figura Figura
Figura 3
4 Variao do duty Cicle Variao do duty Cicle Variao do duty
Cicle Variao do duty Cicle
Para outros valores de duty cycle calculamos atravs da formula: (Percentual * 255) /100
No caso de configurarmos o duty conforme a figura acima, devemos carregar o seguinte valor
para:
PWM1_Set_Duty(25); // carrega valor 26 pois : (10% * 255) / 100 = 25,5 , como somente
Duty de 10% podemos colocar valores inteiros entre 0 a 255, o valor ser arrendondado para
25
PWM1_Set_Duty(127); // carrega valor 127 pois : (50% * 255) / 100 = 127,50 , como
Duty de 50% somente podemos colocar valores inteiros entre 0 a 255, o valor ser
arrendondado para 127
PWM1_Set_Duty(229); // carrega valor 229 pois : (90% * 255) / 100 = 229,50 , como
Duty de 90% somente podemos colocar valores inteiros entre 0 a 255, o valor ser
arrendondado para 229
Funo de Start e Stop:Funo de Start e Stop:Funo de Start e Stop:Funo de Start e Stop:

Atravs da funo Pwm_Start, damos incio a gerao do sinal PWM no PIC, e atravs da
funo Pwm_Stop finalizamos a gerao do sinal Pwm.
Pwm_Start inicial a gerao do sinal PWM no mdulo CCP1 do PIC
Pwm_Stop interrompe a gerao do sinal PWM no mdulo CCP1 do PIC
Sintaxe: w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 38 de 74
Unidade
4Unidade
TIMERS/COUNTERSTIMERS/COUNTERSTIMERS/COUNTERSTIMERS/COUNTE
RS
4Unidade
4Unidade
4 ----
OsOsOsO
s
Timers/Timers/Timers/Timers/CountersCountersCountersCounters
Os timers so ferramentas internas dos microcontroladores em geral que servem para
contagem de tempo, eventos, temporizao entre outras funes.
O PIC18F4520 possui internamente 4 TIMERS:
TIMER0 TIMER1
TIMER2
TIMER3
Vamos conhecer cada um desses temporizadores:
TIMER0TIMER0TIMER0TIMER0

O TIMER0 um temporizador/contador de 8 ou 16 bits que possuem duas funes bsicas:
Contagem de eventos externos (quando a entrada de clock feita por meio do pino
RA4/T0CKI;
Temporizao (contagem de tempo) quando os pulsos de contagem proveniente do clock
interno do PIC (temporizao baseado no ciclo de mquina).
O TIMER0 pode ser configurado para trabalhar com prescaler dedicado. O prescaler nada mais
do que um contador/divisor programvel que utilizado para reduzir a freqncia do sinal de
clock aplicado ao TIMER0 por um fator conhecido.
Figura Figura Figura
Figura 4
1 DivisoDivisoDivisoDiviso dodododo
PrescalerPrescalerPrescalerPrescaler
O valor do prescaler pode ser configurado a partir dos bits T0PS2, T0PS1 e T0PS0 do
registrador T0CON (TIMER0 CONTROL REGISTER);
conseguimos gerar tempos muito maiores

O prescaler passa a ser uma importantssima ferramentas do timer, pois atravs dele
Quando o TIMER0 configurado para operar no modo de 8 bits, podemos efetuar contagens
de 0 a 255 (limite da capacidade para 8 bits). Quando a contagem chega at seu valor mximo
de 255, o prximo pulso acarretaria o que chamamos de "estouro de contagem", fazendo com
que o valor de contagem de incio novamente a partir do 0 (zero).
No caso anterior, caso tenhamos a interrupo do TIMER0 habilitada, no momento que ocorre
o "estouro de contagem", seria gerado um pedido de interrupo do TIMER0.
No modo 16 bits do TIMER0, seu funcionamento igual ao modo de 8 bits, porm neste cado a
faixa de contagem de 0 a 65535.
Os valores de iniciais de temporizao/contagem devem ser carregados nos registradores
especiais intitulado de TMR0L (TIMER0 Module Low Byte Register) e TMR0H (TIMER0 Module
Hight Byte Register);
Quando programamos os timers para atuarem como temporizadores, estamos considerando
que os pulsos que incrementam os registradores de contagem so proveniente do valor do
oscilador / 4, ou seja, caso estivermos utilizando um cristal de 4MHz, iremos incrementar em
uma unidade os registradores de contagem a cada 1 us, pois 4Mhz/4 = 1MHz = 1us
(microsegundos).
Dica:Dica:Dica:Dica:

Repare que a unidade resultante da diviso da Frequencia do oscilador / 4 (ciclo de mquina)
esta em MHz ( unidade de frequncia), neste caso para sabermos o tempo (periodo), basta
dividir 1 / seu valor.
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 39 de 74
Para um cristal de 8 MHz teremos o seguinte tempo de ciclo de mquina: 1 / (8 / 4) = 0,5 us
(microsegundos).
OsOsOsOs
RegistradoresRegistradoresRegistradoresRegistradores
relacionadosrelacionadosrelacionadosrelacionados aoaoaoao
TIMER0TIMER0TIMER0TIMER0 so:so:so:so:
Tabela Tabela
Tabela Tabela
4
1---- RegistradorRegistradorRegistradorRegistrador
relacionadosrelacionadosrelacionadosrelacionados comcomcomcom o
TIMER0TIMER0TIMER0TIMER0
TMR0LTMR0LTMR0LTMR0L um registrador de contagem de 8 bits que possui a funo de
armazenar a parte baixa do valor de contagem programada do TIMER0.
TMR0HTMR0HTMR0HTMR0H um registrador de contagem de 8 bits que possui a funo de
armazenar a parte alta do valor de contagem programada do TIMER0.
Os registradores TMR0L e TMR0H juntos formam um nico registrador de 16 bits, que nos
permite uma contagem mxima de 0 a 65535.
INTCONINTCONINTCONINTCON um registrador de 8 bits responsvel pela configurao do
modo de operao do TIMER0. Podemos definir atravs desse registrador o valor do prescaler
que desejamos acionar, o modo de operao de contagem de 8 ou 16 bits, seleo da fonte de
clock (interna ou externa) para o timer, seleo de disparo do timer atravs de borda de subida
ou borda de descida do clock externo no pino RA4/T0CK1.
Abaixo segue o diagrama esquemtico do Timer0.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 40 de 74
FiguraFiguraFiguraFigura
4....2 DiagramaDiagramaDiagramaDiagrama
internointernointernointerno dodododo
TIMER0TIMER0TIMER0TIMER0
O registrador T0CON responsvel pela configurao pelo modo de operao do Timer0, de
vital importncia conhecer todas as funes de seus bits.
T0CON:T0CON:T0CON:T0CON:
(TIMER0(TIMER0(TIMER0(TIMER0
CounterCounterCounterCounter
Register)Register)Register)Register)
TabelaTabelaTabelaTabela 4....2 T0CONT0CONT0CONT0CON
TMR0ONTMR0ONTMR0ONTMR0ON
T08BITT08BITT08BITT08BIT T0CST0CST0CST0CS
T0SET0SET0SET0SE PSAPSAPSAPSA
T0PS2T0PS2T0PS2T0PS2 T0PS1T0PS1T0PS1T0PS1
T0PS0T0PS0T0PS0T0PS0
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
TMR0ON: Bit de controle para ligar e desligar a contagem do TIMER0; 0 desabilita a
contagem do TIMER0 1 - Habilita a contagem do TIMER0 T08BIT: Bit de seleo de
funcionamento do TIMER0 em 8 ou 16 bits; 0 - TIMER0 configurado para funcionar como
contador/temporizador em 16 bits; 1 - TIMER0 esta configurado para funcionar como contador
/temporizador de 8 bits; T0CS: Bit de seleo de fonte de clock para o TIMER0; 0 - A fonte de
clock proveniente do meio interno do chip 1 - A fonte de clock proveniente do pino T0CKI
(meio externo)
T0SE: Bit de seleo de borda (vlido somente caso a fonte de clock seja pelo meio externo ao
chip)
0 - Contagem do timer ocorre por borda de subida no Pino T0CKI 1 - O incremento do timer
ocorre na borda de descida no pino T0CKI /PSA: Bit de seleo da utilizao do prescaler;
1 - TIMER0 no utiliza prescaler. A cada alterao do pulso de clock, corre incremento de uma
unidade nos registradores de contagem.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 41 de 74
TabelaTabelaTabelaTabela
4....3 ---- BitsBitsBitsBits dededede seleoseleoseleoseleo
dededede fontefontefontefonte dededede
prescaler(Timerprescaler(Timerprescaler(Timerprescaler(Timer
0)0)0)0)
T0PS2T0PS2T0PS2T0PS2
T0PS1T0PS1T0PS1T0PS1 T0PS0T0PS0T0PS0T0PS0
PrescalerPrescalerPrescalerPrescaler
Configurao do Prescaler:
Como sabemos, atravs do prescaler conseguimos tempos maiores com os timers, para
entendermos melhor sua utilizao acompanhe o exemplo abaixo:
Digamos que o ciclo de mquina no PIC sej de 1us e o TIMER0 esteja configurado no modo 8
bits (contagem de 0 a 255) e sem o presacaler. O TIMER0 ira "estourar" sua contagem em
256us.
Agora digamos que para o mesmo anunciado anterior, configuramos e acionamos o prescaler
para 1:2. Nosso intervalo de "estouro" do TIMER0 no mais ser 256us mas sim 512us.
Se ao invs de prescaler de 1:2 utilizarmos prescaler 1:32, o tempo agora ser de 256us x 32 =
8192us.
Como calcular o tempo de estouro do TIMER0? Para calcular o tempo de "estouro" do TIMER
com prescaler, utilizamos a seguinte frmula: Tempo de estouro: ciclo de mquina x prescaler x
(modo 8 /16bits valor de Contagem ). Em que:
Ciclo de mquina: o valor da relao entre: 1 / (Fosc / 4 ), onde Fosc justamente a
frequencia do cristal.
Obs: manter modo PLL desabilitado, iremos estudar esta funo mais adiante. Prescaler : o
fator de diviso programado no prescaler.
Modo 8/16bits: o modo de contagem programado no TIMER0, para 8 bits o valor 256, e
para 16 bits, o valor ser de
Valor de contagem: o valor de carregagem no registrador de contagem TMR0H eTMRL.
Exemplo:
Precisamos ligar e desligar um rel a cada 1 segundo ( um segundo ligado e um segundo
desligado), estamos utilizamdo um cristal de 8Mhz, utilizaremos para isso os recursos do
Temporizador Timer0, acompanhe:
Calculo do tempo de estouro do Timer0:
O registradorregistradorregistradorregistrador INTCONINTCONINTCONINTCON
O registrador INTCON possui diversar funes, entre elas a de habilitar algumas interrupes
do PIC (veremos mais adiante no nosso curso) e de armazenar os bits de estatus de estouro
do TIMER0:
INTCONINTCONINTCONINTCON
(Interrupt(Interrupt(Interrupt(Interrupt
Control)Control)Control)Control)
TMR0L = 0xF7; //carrega valores de contagem C2F7 equivale a
T0CON = 0b10000110; //modo 16 bits, com prescaler 1:128, fonte de clock interno TMR0H =
0xC2;
Formula:Formula:Formula:Formula:

Ciclo de Mquina x prescaler x (modo 8 /16 bits valor de carregem nos registradores de
contagem) w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 42 de 74
TabelaTabelaTabelaTabela 4....4 INTCONINTCONINTCONINTCON
GIE/GIEHGIE/GIEHGIE/GIEHGIE/GIEH
PEIE/GIELPEIE/GIELPEIE/GIELPEIE/GIEL
TMR0IETMR0IETMR0IETMR0IE
INT0IEINT0IEINT0IEINT0IE RBIERBIERBIERBIE
TMR0IFTMR0IFTMR0IFTMR0IF
INT0IFINT0IFINT0IFINT0IF RBIFRBIFRBIFRBIF
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Iremos estudar todos esses bits mais adiante em nosso curso, pois eles tratam das
configuraes das interrupes, e neste momento no importante conhecer alguns deles.
Vamos apresentar somente os bits que so utilizados nos TIMERS.
INTCON. GIEH = bit de acionamento da "chave geral das interrupes" e habilitao das
interrupes de alta prioridade
0 - liga a chave geral das interrupes 1 - desliga a chave geral das interrupes INTCON.
GIEL = bit de habilitao das interrupes de baixa prioridade 0 - TIMER0 no ocorreu estouro
de contagem (overflow)
1 - TIMER0 ocorreu estouro de contagem (overflow). Este bit deve ser apagado por software.
INTCON.TMR0IE = bit que habilita interrupo do TIMER0 na ocorrncia do estouro de
contagem.
0 - Desabilita interrupo do TIMER0 por ocorrencia de estouro de contagem (overflow) 1 -
Habilita interrupo do TIMER0 por ocorrncia de estouro de contagem (overflow). INTCON.
TMR0IF = bit sinalizador de estouro do TIMER0 0 - TIMER0 no ocorreu estouro de contagem
(overflow)
1 - TIMER0 ocorreu estouro de contagem (overflow). Este bit deve ser apagado por software.
Aprendendo a programar os TIMER0:
Conhecemos os registradores responsveis pela configurao do TIMER0 do PIC, agora
vamos configur-los:
Vamos nos recordar da frmula do TIMER0: Tempo de estouro: ciclo de mquina x prescaler x
(modo 8 /16bits valor de contagem). Exemplo 1 :
Se tivermos conectado ao nosso PIC um cristal de 8 MHz e o TIMER0 seja programado como
temporizador, com prescaler de 1:4, modo 8 bits e contagem inicial em TMR0L = 0, teremos
ento:
Tempo de estouro: ciclo de mquina x prescaler x (modo 8 /16bits valor de contagem).
Tempo de estouro: 0,5us * 4 *(255 - 0) Tempo de estouro: 510us Exemplo 2 :
Se tivermos conectado ao nosso PIC um cristal de 8 MHz e o TIMER0 seja programado como
temporizador, com prescaler de 1:256, modo 16 bits e contagem inicial em TMR0L = 0 e
TMR0H = 0, teremos ento:
Tempo de estouro: ciclo de mquina x prescaler x (modo 8 /16bits valor de contagem).
Tempo de estouro: 0,5us * 256 * (65536 - 0) Tempo de estouro: 8.388.608us, ou seja, 8, 388
segundos
Modo contador do TIMER0 do PIC:
Neste novo exemplo de programa, vamos programar o TIMER0 do PIC para trabalhar como
contador de pulsos externos. Neste modo, os pulsos externos, so aplicados no pino
RA0/T0CK1 do PIC. Devemos contar apenas 10 pulsos externos, que neste caso,
configuraremos o TIMER0 do PIC no modo 8 bits com prescaler 1 : 1, e os pulsos sero lidos
por borda de descida. Ao completar a contagem de 10 pulsos, o led conectado ao pino RB1 do
PIC dever acender para sinalizar o fim da contagem.
Esquema eltrico:
Obs:Obs:Obs:Obs:

Repare que este o tempo mximo de estouro do TIMER0
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 43 de 74
FigFigFigFiguraurauraura 4....3 AplicaoAplicaoAplicaoAplicao comcomcomcom o
modomodomodomodo contadorcontadorcontadorcontador dodododo
TIMER0TIMER0TIMER0TIMER0
Para realizar o seguinte desafio necessrio configurar os seguintes registradores do TIMER0:
INTCON.TMR0IF (Bit de estouro do TIMER0) TMR0L (registrador de contagem do TIMER0)
T0CON (registrador de configurao do modo de operao do TIMER0)
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 4 de 74
Programa:
Estudo detalhado do programa:
Repare que o nos comandos abaixo que o registrador T0CON foi configurado como contador
de pulsos externos, modo de operao do TIMER0 de 8 bits, com prescaler 1:1.
O registrador de contagem TMR0L o registrador onde ser armazenado os valores de
contagem dos pulsos externos, e neste caso ele foi pr configurado com o valor 246, devido a
necessidade de contarmos apenas 10 pulsos. Devemos lembrar que os registradores de
contagem do TIMER0 so incrementados em 1 unidade e contam para cima, neste caso, como
desejamos programar o TIMER0 para que a cada 10 pulsos no pino RA0/T0CK1 seja gerado
um estouro, devemos carregar em TMR0L o valor da diferena entre o valor mximo de
contagem para o modo 8 bits, que 256, pelo valor da quantidade de pulsos a ser contado,
que neste cado 10. Ento teremos:
Utilizaremos modo contador no Kit PICgenios quando utilizarmos o TIMER1 nos projetos. Mais
adiante Iremos utilizar interrupes com nossos TIMERS/COUNTERS.
TIMER1TIMER1TIMER1TIMER1

O TIMER1:TIMER1:TIMER1:TIMER1:
Realizamos nas unidades passadas um estudo no muito aprofundado sobre as funes e
caractersticas dos TIMERS do PIC. Agora chegou o momento de estudarmos mais
'Microgenios | MicroControladores *
'Site: w.Microgenios.com.br *
'Autor: Fernando Simplicio de Sousa *
'Programa exemplo: TIMER0_Contador.c
'Cristal: 8MHz - modo HS *
'Microcontrolador PIC18F45200 Microchip *
'Tools: Kit PICgenios PIC18F Mdulo Profissional Microgenios
'Configurao: DIP1 - Chave 09 -ON
'Objetivo:
'Este programa tem por objetivo ativar o modo contador do Timer0
'NO PINO T1CKI, AO INVS DE T0CKI voidvoidvoidvoid main(){
TRISD = 0; // 'define portd como sada
PORTD = 0; // 'zera portd
TRISA.RA4 = 1; //'pino contador T0CKI configurado como entrada
/*'obs: este pino naturalmente dreno aberto, neste caso necessrio pull-up 'ou pull-down
externo
'calculo de temporizao de 1 segundo:
'tempo = ciclo_maquina * prescaler * (modo 8/16 - valor inicial)
'logo
'valor inicial = 49911 ou C2F7h */
T0CON = 0B11101000;//'modo contador, prescaler off, borda descida, modo 8bits TMR0L =
246; //'contar 10 pulsos | 256 - 10 = 246 carrega valores de contagem INTCON.TMR0IF = 0;
//'apaga flag de estou do timer0 whilewhilewhilewhile (1){ ifififif (INTCON.TMR0IF==1){
PORTD.RD0 = ~ PORTD.RD0; // 'inverte o valor do led1 TMR0L = 246; //'recarga do timer0
INTCON.TMR0IF = 0; //'apaga flag de estou do timer0 }
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 45 de 74
profundamente os recursos e a programao dos registradores e modos de trabalho desses
temporizadores e contadores.
O TIMER1 pode operar como temporizador ou como contador de 16 bits, suas caractersticas
so muito parecida com a do TIMER0.
Dizemos que o timer est operando como temporizador quando a referncia do clock de
incremento da contagem realizada pelo clock interno do PIC, e dizemos que o timer esta
operando como contador quando a referncia do clock de incremento da contagem
proveniente de um clock externo ao PIC. (pulso aplicado no pino RB6/T1OSO/T1CK1).
TabelaTabelaTabelaTabela
4....5 RegistradorRegistradorRegistradorRegistrador
relacionadosrelacionadosrelacionadosrelacionados
comcomcomcom o TIMER1TIMER1TIMER1TIMER1
(as(as(as(as clulasclulasclulasclulas emememem
branco)branco)branco)branco)
Registradores de configurao do TIMER1:
P1R1: um registrador onde armazenado os bits de status das interrupes e estouro dos
timers.
P1E1: um registrador de 8 bits onde habilitado as interrupes do PIC.
TMR1L um registrador de contagem de 8 bits que possui a funo de armazenar a parte
baixa do valor de contagem programada do TIMER0.
TMR1H um registrador de contagem de 8 bits que possui a funo de armazenar a parte alta
do valor de contagem programada do TIMER0.
Os registradores TMROL e TMR0H juntos formam um nico registrador de 16 bits, que nos
permite uma contagem mxima de 0 a 65535.
T1CON um registrador de 8 bits responsvel pela configurao do modo de operao do
TIMER1. Podemos definir atravs desse registrador o valor do prescaler que desejamos
acionar, o modo de operao de contagem de 8 ou 16 bits, seleo da fonte de clock (interna
ou externa) para o timer, seleo de disparo do timer atravs de borda de subida ou borda de
descida do clock externo no pino RB6/T10S0/T1CK1.
T1CON:T1CON:T1CON:T1CON:
(TIMER1(TIMER1(TIMER1(TIMER1
CONTROLCONTROLCONTROLCONTROL
REGISTER):REGISTER):REGISTER):REGISTER):
TabelaTabelaTabelaTabela 4....6 T1CONT1CONT1CONT1CON
RD16RD16RD16RD16
------------ T1CKPS1T1CKPS1T1CKPS1T1CKPS1
T1CKPS0T1CKPS0T1CKPS0T1CKPS0
T10SCENT10SCENT10SCENT10SCEN
T1SYNCT1SYNCT1SYNCT1SYNC
TMR1CSTMR1CSTMR1CSTMR1CS
TMR1ONTMR1ONTMR1ONTMR1ON
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
TabelaTabelaTabelaTabela
4....7 BitsBitsBitsBits dededede
seleoseleoseleoseleo dededede
fontefontefontefonte dededede
prescalerprescalerprescalerprescaler
T1CKPS1T1CKPS1T1CKPS1T1CKPS1 T1CKPS0T1CKPS0T1CKPS0T1CKPS0
PrescalerPrescalerPrescalerPrescaler
RD16: bit de leitura e escrita em 16bits (utilizado para o modo comparador do canal CCP) 1
leitura e escrita em 16 bits habilitada 0 leitura e escrita em 16 bits desabilitada T1CKPS1;
T1CKPS0: Bits de seleo de fonte de prescaler 1 1 1:8 1 0 1:4 0 1 1:2 0 0 1:1
T1OSCEN: Habilitao do oscilador externo de baixa frequencia nos pinos T1OSO e T1OSI 0
- Oscilador desligado 1 - Oscilador Ligado T1SYNC: Controle do sincronismo interno. Caso
TMR1CS = 0, esse bit descartado 0 - Sincronismo ligado
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 46 de 74
1 - Sincronismo desligado TMR1CS: Bit de seleo de clock; 0 - A base de clock para o
TIMER1 interna (Fosc/4); 1 - Clock externo no pino RC0/T1CK1; TMR1ON: Habilita TIMER1;
0 - TIMER1 desligado 1 - TIMER1 ligado Obs: Bit6 no implementado, lido como "0" Abaixo o
diagrama simplificado do Timer1:
FiguraFiguraFiguraFigura
4....4 DiagramaDiagramaDiagramaDiagrama
internointernointernointerno dodododo
TIMER1TIMER1TIMER1TIMER1
O TIMER1 opera de maneira idntica a do timer anterior, suas diferenas bsicas que este
novo timer pode operar como temporizador para o modo Capture/Compare para o modo CCP.
Foi implementado neste novo Timer a possibilidade de ligarmos um outro cristal oscilador, de
forma que nos permite ligar cristais de baixa freqncia, tais como 32,768 KHz, para maiores
preciso na temporizao.
A figura apresenta o diagrama de funcionamento do TIMER1 operando com o oscilador de
baixa freqncia.
Nota:Nota:Nota:Nota:

Obs:Obs:Obs:Obs: Este segundo cristal dever ser ligado entre os pinos RC0 e RC1. Em
hiptese alguma poderemos dispensar o uso do cristal oscilador principal Fosc.
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 47 de 74
FiguraFiguraFiguraFigura
4....5 CircuitoCircuitoCircuitoCircuito internointernointernointerno
dodododo modomodomodomodo RTCRTCRTCRTC
A figura seguinte mostra para ns claramente uma aplicao em hardware do segundo
oscilador conectado ao nosso microcontrolador.
FiguraFiguraFiguraFigura
4....6 LigaoLigaoLigaoLigao
dodododo segundosegundosegundosegundo
osciladorosciladorosciladoroscilador aoaoaoao
microcontroladormicrocontroladormicrocontroladormi
crocontrolador PICPICPICPIC
ProgramandoProgramandoProgramandoP
rogramando
o TIMER1TIMER1TIMER1TIMER1 dodododo
PIC.PIC.PIC.PIC.
Para exemplificar a utilizao do TIMER1 do PIC vamos analizar um exemplo de programa: O
Hardware:
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 48 de 74
FiguraFiguraFiguraFigura
4....7 EsquemaEsquemaEsquemaEsquema
EletrnicaEletrnicaEletrnicaEletrnica
Programa:
w.mecatronicadegaragem.blogspot.com
Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 49 de 74
O programa acima configura o TIMER1 para operar em 16bits com prescaler 1:8, clock interno.
A cada estouro do TIMER1, o led conectado o portd.rd0 invertido.
Anlise detalhado do programa:
Sabendo que nosso microcontrolador esta trabalhando com um cristal externo de 8MHz, vamos
calcular o tempo de estouro do TIMER1:
ConfiguraoConfiguraoConfiguraoConfigurao
dodododo
TIMER1:TIMER1:TIMER1:TIMER1:
Modo de Operao: 16 bits (timer1 somente opera no modo 16 bits) Fonte de oscilao: Ciclo
interno. Prescaler: 1:8
CalculoCalculoCalculoCalculo
dededede EstouroEstouroEstouroEstouro dodododo
TIMER1:TIMER1:TIMER1:TIMER1:
Frmula: Tempo: ciclo de mquina * prescaler * (modo 16bits valor de carga) Portanto
Tempo: 0.5 * 8 * (65536 0) = 262.144us ou 262ms
TIMER2TIMER2TIMER2TIMER2 ::::
O TIMER2 um timer de 8 bits com recarga automtica. Esse TIMER tem um registrador de
configurao, um de contagem e outro de comparao. Ele possui um registrador de contagem
de 8 bits ( 0 a 255) chamado TMR2. Diferentemente dos outros timers, o TIMER2 possui um
prescale e um postscaler. Os registradores especiais responsvel pela configurao de
temporizao do TIMER2 so:
'Microgenios | MicroControladores *
'Site: w.Microgenios.com.br *
'Autor: Fernando Simplicio de Sousa *
'Programa exemplo: TIMER1.c
'Cristal: 8MHz - modo HS *
'Microcontrolador PIC18F45200 Microchip *
'Tools: Kit PICgenios PIC18F Mdulo Profissional Microgenios
'Configurao: DIP1 - Chave 09 -ON
'Objetivo:
'Este programa tem por objetivo ativar a temporizao mxima do TIMER1
'utilizando cristal de 8Mhz voidvoidvoidvoid main(){
'tempo = ciclo_maquina * prescaler * (modo 16 - valor inicial)
'logo
TRISD = 0; //'define portb como saida
PORTD = 0; //'apaga todos os leds conectados ao portd
TMR1L = 0; //'carrega valor de contagem baixa do TIMER1
TMR1H = 0; //'carrega valor de contagem alta do TIMER1
PIR1.TMR1IF = 0; //'apaga flag de estouro do TIMER1
ifififif (PIR1.TMR1IF == 1) {
TMR1L = 0; //'carrega valor de contagem baixa do TIMER1
TMR1H = 0; //'carrega valor de contagem alta do TIMER1
PIR1.TMR1IF = 0; //'apaga flag de estouro do TIMER1
PORTD.RD0 = ~PORTD.RD0; //'inverte o valor do led1 }
w.mecatronicadegaragem.blogspot.com

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 50 de 74
T2CONT2CONT2CONT2CON
(TIMER2(TIMER2(TIMER2(TIMER2
CONTROLCONTROLCONTROLCONTROL
REGISTER):REGISTER):REGISTER):REGISTER):
ConfigurConfigurConfigurConfiguraaaa o setupsetupsetupsetup
dodododo TIMER2;TIMER2;TIMER2;TIMER2;
TMR2: Registrador de contagem do TIMER2 (8 bits); PR2: Registrador de comparao do
TIMER2
Dizemos que o TIMER2 um timer com recarga automtica pois quando o valor carregado em
PR2 igual ao de contagem TMR2, o valor de TMR2 zerado e inicia-se uma nova contagem,
ou melhor dizendo, temporizao.
TabelaTabelaTabelaTabela
4....8 RegistradoresRegistradoresRegistradoresRegistradores
responsveisresponsveisresponsveisresponsveis
pelapelapelapela
configuraoconfiguraoconfiguraoconfigurao dodododo
TIMER2TIMER2TIMER2TIMER2
Os registradores relacionados com o TIMER2 so:
Atravs do registrador T2CON, podemos configurar o modo de operao do TIMER2, tais
como: valor do prescale e postcale e ligar ou desligar o timer2.
Veja o diagrama esquemtico de construlo do TIMER2: (procure sempre comparar um
TIMER com o outro, pois dessa forma voc saber qual mais adequado para sua aplicao).
FiguraFiguraFiguraFigura
4....8
DiagramaDiagramaDiagramaDiagrama
dededede
construoconstruoconstruoconstruo
internainternainternainterna dodododo
TIMER2TIMER2TIMER2TIMER2
RegistradoresRegistradoresRegistradoresRegistr
adores
dededede
configuraoconfiguraoconfiguraoconfig
urao dodododo
TIMER2:TIMER2:TIMER2:TIMER2:
T2CON:T2CON:T2CON:T2CON:
(TIMER2(TIMER2(TIMER2(TIMER2
CONTROLCONTROLCONTROLCONTROL
REGISTER):REGISTER):REGISTER):REGIS
TER):