Você está na página 1de 254

a

n
t

n
i
o

s

r
g
i
o

s
e
n
a
microcontroladores
PIC
www.mecatronicadegaragem.blogspot.com
a
n
t

n
i
o

s

r
g
i
o

s
e
n
a
microcontroladores
PIC
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
3
ndice de Contedos
COMO TUDO COMEOU .................................................................... 10
Microcontrolador versus Microprocessador .............................................. 13
Conceitos Bsicos ...................................................................................... 14
Um mundo de nmeros ...................................................................................................................... 14
Sistema de numerao Binrio ........................................................................................................... 15
Sistemas de numerao Hexadecimal ................................................................................................ 16
O cdigo BCD.................................................................................................................................... 17
Converso de Binrio para Decimal .................................................................................................. 17
Converso de Hexadecimal para Decimal ......................................................................................... 18
Converso de Hexadecimal para Binrio ........................................................................................... 18
Bit ....................................................................................................................................................... 19
Byte .................................................................................................................................................... 19
Circuitos Lgicos ............................................................................................................................... 20
Porta lgica AND ............................................................................................................................... 20
Porta lgica OR .................................................................................................................................. 21
Porta lgica NOT ............................................................................................................................... 21
Porta lgica EXCLUSIVE OR / XOR ............................................................................................... 22
Registo ............................................................................................................................................... 23
SFR / Special Function Register - Registo de Funo Especial ........................................................ 23
Portas de Entrada/Sada - I/O ............................................................................................................. 24
Unidade de memria .......................................................................................................................... 26
Interrupes ........................................................................................................................................ 27
CPU - Unidade Central de Processamento ........................................................................................ 28
Barramento ......................................................................................................................................... 29
Comunicaes Srie ........................................................................................................................... 29
Baud Rate - Velocidade de transferncia ........................................................................................... 30
Oscilador ............................................................................................................................................ 32
Circuito de Alimentao .................................................................................................................... 32
Temporizadores e Contadores ............................................................................................................ 33
Temporizadores / Contadores ............................................................................................................ 34
Contadores ......................................................................................................................................... 37
Temporizador Watchdog .................................................................................................................... 37
Conversores Analgico/Digital .......................................................................................................... 38
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
4
Arquitectura Interna .................................................................................. 40
Arquitectura von-Neumann ............................................................................................................... 40
Arquitectura Harvard ......................................................................................................................... 40
Conjunto de Instrues .............................................................................. 42
Como escolher o microcontrolador certo para a aplicao? ........................ 43
Microcontroladores PIC ............................................................................ 43
Microcontrolador PIC16F887 .................................................................. 44
Uma panormica ........................................................................................ 44
Descrio dos pinos ........................................................................................................................... 48
CPU .................................................................................................................................................... 51
Memria ............................................................................................................................................. 52
Registos de funo geral - GPR ......................................................................................................... 54
Registos de funo especial - SFR ..................................................................................................... 55
Bancos de Memria ........................................................................................................................... 55
Pilha de memria - Stack ................................................................................................................... 59
Sistema de interrupo ....................................................................................................................... 60
Como usar os Registos de funo especial - SFR .............................................................................. 61
Os Registos de Funo Especial - SFR - do CPU ....................................... 62
Caractersticas e Funes ........................................................................... 62
Registo STATUS ................................................................................................................................ 62
Registo OPTION_REG ...................................................................................................................... 64
Registos do Sistema de Interrupes ................................................................................................. 66
Registo PCON .................................................................................................................................... 75
Registos PCL e PCLATH ................................................................................................................... 76
Endereamento Indirecto ................................................................................................................... 79
Portas I/O - Entrada/Sada ....................................................................... 80
Funcionalidades e Funes ......................................................................... 80
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
5
Registos PORTA e TRISA ................................................................................................................. 81
Unidade ULPWU ............................................................................................................................... 82
Registos PORTB e TRISB ................................................................................................................. 84
Pino RB0/INT .................................................................................................................................... 87
Pinos RB6 e RB7 ............................................................................................................................... 87
Registos PORTC e TRISC ................................................................................................................. 88
Registos PORTD e TRISD ................................................................................................................. 89
Registos PORTE e TRISE.................................................................................................................. 89
Registos ANSEL e ANSELH ............................................................................................................. 90
Temporizadores ......................................................................................... 93
Temporizador TMR0 ................................................................................ 93
Registo OPTION_REG............................................................................ 94
Temporizador TMR1 ................................................................................ 99
Divisor do TMR1 ............................................................................................................................... 100
Oscilador do TMR1 ........................................................................................................................... 101
Gate do TMR1 ................................................................................................................................... 101
TMR1 em modo de Temporizador ..................................................................................................... 102
Oscilador do TMR1 ........................................................................................................................... 103
TMR1 em modo de Contador ............................................................................................................ 104
Registo T1CON ................................................................................................................................. 105
Temporizador TMR2 ................................................................................ 106
Registo T2CON ................................................................................................................................. 108
Mdulos CCP ............................................................................................ 110
Capture/Compare/PWM - Captura/Compara/PWM .............................. 110
Mdulo CCP1 ........................................................................................... 110
Modo de Captura com CCP1 ............................................................................................................. 111
Modo de Comparao com CCP1 ...................................................................................................... 112
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
6
Modo de PWM com CCP1 ................................................................................................................ 113
Periodo do PWM................................................................................................................................ 116
Duty-Cycle do PWM ......................................................................................................................... 116
Resoluo do PWM ........................................................................................................................... 117
Registos CCP1CON ........................................................................................................................... 117
Mdulo CCP2 ........................................................................................... 120
Registo CCP2CON ............................................................................................................................ 120
Congurao do mdulo CCP1, para funcionamento em PWM ............... 121
Modo avanado do CCP1 .......................................................................... 122
Mdulos de Comunicao Srie ................................................................. 123
Modo Assncrono da EUSART ................................................................. 124
Transmissor Assncrono da EUSART ................................................................................................ 125
Receptor Assncrono da EUSART ..................................................................................................... 127
BRG - Baud Rate Generator - Gerador de Relgio para a EUSART ................................................ 133
Registo BAUDCTL ............................................................................................................................ 137
Resumidamente: ................................................................................................................................. 139
Modo Sncrono da EUSART ..................................................................... 141
Modo SPI ........................................................................................................................................... 142
Modo I2C ........................................................................................................................................... 146
I2C em modo Mestre ......................................................................................................................... 154
Mdulos Analgicos .................................................................................. 161
Registos e Modo do ADC - Conversor A/D....................................................................................... 161
Registos ADRESH e ADRESL .......................................................................................................... 162
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
7
Requisitos da Aquisio A/D .................................................................... 163
Periodo do ADC ................................................................................................................................. 163
Como usar o Conversor A/D ..................................................................... 164
Registo ADCON0 .............................................................................................................................. 165
Registo ADCON1 .............................................................................................................................. 167
Resumidamente: ................................................................................................................................. 167
Comparador Analgico .............................................................................. 168
Fonte de Tenso de Referncia interna .............................................................................................. 169
Comparadores e funcionamento com Interrupes ............................................................................ 170
Registo CM1CON0 ............................................................................................................................ 171
Registo CM2CON0 ............................................................................................................................ 173
Registo CM2CON1 ............................................................................................................................ 175
Registo VRCON ................................................................................................................................ 176
Em resumo : ............................................................................................... 177
Outros circuitos internos ........................................................................... 178
Oscilador, EEPROM e Reset ..................................................................... 178
Registo OSCCON .............................................................................................................................. 179
Modos de Relgio Externo ........................................................................ 181
Modo EC - Oscilador Externo ........................................................................................................... 181
Modo LP, XT ou HS - Oscilador Externo .......................................................................................... 183
Ressoador Cermico no modo XT ou HS .......................................................................................... 184
Modo RC e RCIO - Oscilador Externo .............................................................................................. 185
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
8
Modos de Relgio Interno ......................................................................... 186
Modo INTOSC - Oscilador Interno ................................................................................................... 186
Modo INTOSCIO - Oscilador Interno ............................................................................................... 186
Congurao do Oscilador Interno ............................................................ 187
Modo de Arranque de Relgio a Duas-Velocidades .................................. 188
Fail-Safe Clock Monitor - FSCM - Monitor de Relgio contra falhas .............................................. 188
Registo OSCTUNE ............................................................................................................................ 189
Memria EEPROM ................................................................................... 191
Registo EECON1 ............................................................................................................................... 191
Leitura da EEPROM .......................................................................................................................... 192
Escrita da EEPROM .......................................................................................................................... 193
Reset! Black-out, Brown-out ou Ruidos? ................................................... 195
Reset por Black-out - Falha de Energia Sbita .................................................................................. 196
Reset por Brown-out - Descida de Tenso Lenta e Gradual .............................................................. 196
Ruidos ................................................................................................................................................ 197
Pino de MCLR ................................................................................................................................... 197
Conjunto de Instrues ............................................................................. 198
Conjunto de Instrues da Famlia PIC16Fxx de Microcontroladores ...... 198
Transferncia de dados .............................................................................. 200
Lgicas e aritmticas .................................................................................. 200
Operaes com bits .................................................................................... 201
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
9
Controlo de Execuo de um Programa ............................................................................................. 201
Perodo de execuo da instruo ...................................................................................................... 203
Listagem das instrues ..................................................................................................................... 203
Como programar um Microcontrolador .................................................... 224
Linguagem Assembly ................................................................................. 226
Instrues .................................................................................................. 227
Operandos ................................................................................................. 227
Comentrios .............................................................................................. 228
Directivas .................................................................................................. 228
Directiva PROCESSOR ..................................................................................................................... 228
Directiva EQU ................................................................................................................................... 228
Directiva ORG ................................................................................................................................... 229
Directiva END ................................................................................................................................... 229
Directiva ............................................................................................................................................. $IN-
CLUDE .............................................................................................................................................. 230
Directivas CBLOCK e ENDC ........................................................................................................... 230
Directivas IF, ENDIF e ELSE ............................................................................................................ 231
Directiva BANKSEL ......................................................................................................................... 232
Operadores aritmticos de assembler ........................................................ 233
Exemplo de como escrever um Programa ................................................... 234
Ficheiros criados ao compilar um programa ............................................... 236
MPLAB ..................................................................................................... 238
Instalando o programa - MPLAB ...................................................................................................... 238
A implementao de um PROJECTO ................................................................................................ 243
Escrever um novo Programa .............................................................................................................. 245
O primeiro programa .......................................................................................................................... 247
Simulador ........................................................................................................................................... 249
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
1
COMO TUDO COMEOU
Em 1969, uma equipa de engenheiros Japoneses da BUSICOM, foi para os EUA com o pedido de desenhar
alguns circuitos integrados para calculadoras. O pedido foi enviado para a INTEL, e Marcian Ho estava en-
carregue do projecto. Tendo experincia em trabalhar com um computador, o PDP8, ele teve a ideia de sugerir
solues diferentes, ao invs dos designs sugeridos pelos Japoneses. A ideia dele presumia que o funcionamento
do circuito integrado, era determinado pelo programa armazenado dentro do chip. Signicava que a congura-
o era mais simples, mas iria requerer muito mais memria que o projecto dos engenheiros Japoneses.
Aps um certo tempo, apesar de os Japoneses estarem ainda a tentar encontrar uma soluo mais simples, a
ideia de Marcian venceu, e o primeiro microprocessador nasceu. Federico Faggin foi uma grande ajuda em
tornar a ideia num produto acabado. E, nove meses aps ter sido contratado, a INTEL tinha acabado de de-
senvolver um produto desde a ideia original.
Em 1971, a INTEL obteve os direitos de venda deste circuito integrado, e antes disso j tinha comprado a
licena da BUSICOM. Durante esse ano, um microprocessador chamado 4004 foi lanado no mercado. Esse
foi o primeiro processador de 4 bits, com a velocidade de 6000 instrues por segundo.
No muito tempo depois, uma empresa Americana chamada CTC pediu INTEL e TEXAS Instruments,
para fabricarem um microprocessador de 8 bits, para ser aplicado nos seus terminais. Embora a CTC tenha
desistido do projecto, a INTEL e a TEXAS continuaram o trabalho e, em Abril de 1972, o primeiro micro-
processador de 8 bits, chamado de 8008, foi lanado no mercado. Podia enderear 16Kb de memria, tinha 45
instrues e uma velocidade de 300.000 instrues por segundo. Esse microprocessador foi o predecessor de
todos os actuais microprocessadores.
A INTEL continuou o desenvolvimento e, em Abril de 1974, lanou um processador de 8 bits, chamado de
8080. Podia enderear 64Kb de memria, tinha 75 instrues, e um preo inicial de $360.
Outra empresa Americana chamada MOTOROLA, depressa se apercebeu do potencial, e ento lanaram o
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
2
microprocessador de 8 bit, 6800. O engenheiro chefe era Chuck Peddle. Aparte do microprocessador, a MO-
TOROLA tambm fabricava perifricos como o 6820 e 6850.
Nessa altura muitas empresas reconheciam a importncia dos microprocessadores, e iniciaram o seu prprio
desenvolvimento. Chuck Peddle deixou a MOTOROLA, juntou-se MOS Technology, e continuou o traba-
lho intensivo no desenvolvimento em microprocessadores.
Na exposio WESCON, nos EUA em 1975, um evento crucial na histria dos microprocessadores aconte-
ceu. A MOS Technology anunciou que estava a vender os processadores 6501 e 6502 a $25 cada, que os inte-
ressados podiam comprar na hora. Foi tamanha a sensao, que muita gente pensava em fraude, considerando
que a concorrncia vendia o 8080 e 6800, a $179 cada.
No primeiro dia da exposio, em resposta concorrncia, a MOTOROLA e a INTEL baixaram os seus
microprocessadores para $69,95. A MOTOROLA acusou a MOS Technology e Chuck Peddle de plagiarem
o protegido 6800.
Devido a isto, a MOS Technology desistiu do fabrico do 6501, mas continuou o fabrico do 6502. Era um pro-
cessador de 8 bits, com 56 instrues, e capaz de enderear directamente 64Kb de memria.
Devido ao seu baixo preo, o 6502 tornou-se muito popular, e ento foi instalado em computadores como o
KIM-1, Apple I, Apple II, Atari, Commodore, Acorn, Oric, Galeb, Orao, Ultra e muitos outros.
Em breve, muitas empresas comearam a fabricar o 6502 (Rockwell, Sznertek, GTE, NCR, Ricoh, Commo-
dore assumiram a MOS Technology).
No ano da sua prosperidade, 1982, este processador estava a ser vendido taxa de 15 milhes de unidades por
ano.
Outras empresas no desistiram. Frederico Faggin deixou a INTEL, e abriu a sua prpria empresa chamada
ZILOG INC. Em 1976 a ZILOG anunciou o Z80. Quando desenhou este processador, Faggin tomou uma
deciso crucial. O 8080 j tinha sido desenvolvido, e ele apercebeu-se que muitos iriam continuar eis a esse
processador, devido aos grandes gastos em reescrever todos os programas. Ento, ele decidiu que este novo
processador teria de ser compativel com o 8080, ou seja, teria de poder correr todos os programas escritos para
o 8080.
Aparte desta deciso, muitas outras funcionalidades foram acrescentadas, para que o Z80 fosse o micropro-
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
3
cessador mais poderoso da altura. Podia enderear directamente 64Kb de memria, tinha 176 instrues, um
grande nmero de registos, uma opo interna para fazer o refrescamento da RAM, s uma fonte de alimenta-
o, maior velocidade, entre outros. O Z80 foi um grande sucesso, e toda a gente substituiu o 8080 pelo Z80.
Alm da ZILOG, outros fabricantes como Mostek, NEC, SHARP e SGS apareceram logo a seguir. O Z80
era o corao de muitos computadores, tais como: Spectrum, Partner, TRS703, Z-3 and Galaxy.
Em 1976 a INTEL lanou uma verso melhorada do microprocessador de 8 bits, chamado de 8085. No en-
tanto, o Z80 era muito melhor, e a INTEL perdeu a batalha.
Mesmo aps outros microprocessadores terem aparecido no mercado, 6809, 2650, SC/MP, etc, no havia
grandes melhoramentos que justicasse aos fabricantes mudarem de processador, por isso o 6502, o Z80 e o
6800 continuaram os microprocessadores dominantes, e durante muito tempo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
4
Microcontrolador versus Microprocessador
Um microcontrolador difere de um microprocessador em diversas formas.
A primeira, e mais importante, a sua funcionalidade. Para que um microprocessador possa ser usado, outros
componentes tais como memria, tem que ser ligados ao chip. Mesmo sendo os microprocessador considera-
dos potentes mquinas matemticas, o seu ponto fraco a sua parca possibilidade de comunicar com perifri-
cos.
Ento, de maneira a que possa comunicar com perifricos, o microprocessador tem que usar circuitos especiais,
como chips externos.
Resumindo, os microprocessadores so o corao dos computadores. Era assim no incio, e ainda nos dias de
hoje se mantm.
Microcontrolador versus Microprocessador
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
5
Por outro lado, o microcontrolador est desenhado para ser um tudo-em-um. No so necessrios componen-
tes externos, para as suas aplicaes, porque todos os circuitos, que pertencem aos perifricos, j esto dentro
do chip. Poupa tempo e espao necessrios, aquando do design de um sistema.
Conceitos Bsicos
Um mundo de nmeros
O universo por ser descrito com apenas 10 digitos. Mas, precisamos apenas de 10 digitos? Claro que no,
apenas uma questo de hbito.
Por exemplo, o nmero 764 o que signica?: quatro unidades, seis dezenas e sete centenas, ou 4 + 60 + 700,
ou 4*1 + 6*10 + 7*100!
Podemos representar o nmero de uma maneira mais cientca? a resposta positiva: 4*10^0 + 6*10^1 +
7*10^2. Mas porqu? Simplesmente porque usamos um sistema de numerao de base 10, ou seja, um sistema
de numerao dcimal.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
6
Sistema de numerao Binrio
O que aconteceria se apenas dois digitos pudessem er usados, o 0 e o 1?
Nada de especial, continuaramos a usar nmeros mas de forma diferente. Por exemplo: 11011010. Qual a
quantidade que o nmero 11011010 indica?
De maneira a que possamos aprender isto, devemos seguir a mesma lgica do exemplo anterior, mas em ordem
inversa. No esquecer que se trata de matemtica com apenas dois digitos, ou seja, um sistema de numerao
binrio.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
7
o mesmo nmero, representado de duas formas distintas. A nica diferena reside no nmero de dgitos
necessrios para escrever um nmero. Um dgito (2) usado para escrever o nmero 2 em dcimal, onde dois
dgitos (1 e 0), so usados para escrever esse nmero em sistema binrio.
chamado de nvel lgico zero (0) e nvel lgico um (1), com os quais a electrnica perfeita e simplesmente
trabalha as operaes complexas matemticas. a electrnica que aplica a matemtica, onde todos os nmeros
so representados por apenas dois dgitos, e onde s importa saber se h tenso elctrica, ou no. Estamos a
falar de electrnica digital.
Sistemas de numerao Hexadecimal
No incio do desenvolvimento dos computadores, percebeu-se que as pessoas tinham muitas diculdades em
trabalhar com numerao binria. Devido a isto, um novo sistema de numerao foi desenvolvido, e usando 16
digitos distintos. Os primeiros dez dgitos so os tradicionais (0, 1, 2,... 9), mas existem mais seis. Por forma a
no inventar novos smbolos, convencionou-se usar as seis primeiras letras do alfabeto: A, B, C, D, E e F.
Um sistema hexadecimal de numerao, consistindo nos dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F foi
estabelecido.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
8
O maior nmero que pode ser representado por 4 dgitos binrios 1111. E corresponde ao nmero 15 no
sistema decimal. Esse nmero no sistema hexadecimal, representado pelo dgito F. o maior nmero de um
dgito no sistema hexadecimal. O nmero da gura escrito com oito dgitos, ao mesmo tempo o nmero he-
xadecimal de dois dgitos. No esquecer que os computadores usam nmeros binrios de 8 dgitos.
O cdigo BCD
O cdigo BCD um cdigo binrio apenas para nmeros decimais. usado para fazer comunicar os circuitos
electrnicos com os perifricos, e num sistema binrio dentro do seu prprio mundo. Consiste em nmeros
binrios de quatro dgitos, que representam os primeiros dez dgitos dcimais (0, 1, 2,... 9). Embora quatro
digitos nos dem 16 combinaes possiveis, apenas as primeiras 10 so usadas.
Converso de Binrio para Decimal
Os digitos de um nmero binrio tem diferentes valores, dependendo da posio onde se encontram. Adi-
cionalmente, cada posio pode ter 1 ou 0, e o seu valor facilmente determinado atravs da sua posio desde
a direita. Para executar a converso, necessrio multiplicar valores pelos dgitos correspondentes, e somar os
resultados.
110 = (1 * 2^2) + (1 * 2^1) + (0 * 2^0) = 6
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
9
Converso de Hexadecimal para Decimal
Por forma a se fazer a converso de um nmero hexadecimal para decimal, cada digito hexadecimal deve ser
multiplicado por 16, levantado ao expoente da sua posio. Por exemplo:
Converso de Hexadecimal para Binrio
No necessrio nenhum clculo, de maneira a converter nmeros hexadecimais para binario. Os dgitos hexa-
cedimais so simplesmente substituidos pelos seus congneres 4 dgitos binrios. Por exemplo:
Esta tabela comparativa, tem os valores dos nmeros de 0 a 255, em trs sistemas de numerao distintos:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
10
Bit
Um bit um dgito binrio. De igual forma que o sistema de numerao decimal, no qual os dgitos de um n-
mero no tem o mesmo valor, o signicado do bit depende da sua posio no nmero binrio. Ento, no faz
sentido falar de unidades, dezenas, etc. Deve-se, sim, falar do bit zero, bit um, bit dois, etc. Sempre a contar do
lado direito. E, como o sistema binrio usa apenas dois dgitos, 0 e 1, o valor de um bit s pode ser 0 ou 1.
No nos devemos confundir, se o bit tiver valor de 4, 16 ou 32. Isso signica que os valores dos bits esto repre-
sentado em sistema decimal. Ser correcto dizer que: o valor do quinto bit de um nmero binrio, equivalente
ao decimal 32.
Byte
Um byte consiste em oito bits agrupados. semelhana dos digitos de outro qualquer sistema de numerao,
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
11
os dgitos dos bytes no tem o mesmo signicado. O maior valor tem o bit mais esquerda chamado de Bit
Mais Signicativo (MSB - Most Signicant Bit). O bit mais direita tem o menor valor, e chamado de Bit
Menos Signicativo (LSB - Least Signicant Bit). Como um byte pode ter 256 combinaes possiveis de bits,
o maior nmero decimal possvel de representar o 255, pois h uma combinao que representa zero.
Um nibble representado como meio byte. Dependendo de que metade do byte estamos a falar, h nibbles
altos ou baixos.
Circuitos Lgicos
A electrnica de que so feitos os circuitos integrados, microcontroladores ou microprocessadores, composta
de elementos chamados de circuitos lgicos ou portas lgicas.
Os princpios operacionais desdes elementos foram estabelecidos pelo matemtico Ingls, George Boole, e a
ideia central era expressar formas lgicas, como funes de lgebra. Mais tarde o princpio evoluiu para o que
hoje conhecemos como circuitos lgicos AND, OR e NOT, tambm conhecido como lgebra de Boole.
Como algumas instrues de programa do microcontrolador funcionam da mesma maneira que as portas lgi-
cas, o seu princpio de funcionamento descrito a seguir.
Porta lgica AND
A porta lgica AND tem duas ou mais entradas, e uma sada. A sada ter um 1 lgico, se as as suas entradas
A e B estiverem a nivel lgico 1.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
12

A tabela mostra dependncia entre entradas e sada. Qualquer outra combinao nas entradas, dar um nivel
lgico 0 na sada.
Quando usada num programa, a operao lgica AND feita por instrues, que sero discutidas mais fren-
te. Por agora, importante referir que AND num programa, faz correspondncia aos bits de dois registos.
Porta lgica OR
A porta lgica OR tem duas ou mais entradas, e uma sada. A sada ter um 1 lgico, se qualquer das suas en-
tradas A ou B estiverem a nivel lgico 1.

Num programa, a operao lgica OR feita entre os bits correspondentes dos registos. semelhana da ope-
rao lgica AND.
Porta lgica NOT
A porta lgica NOT tem apenas uma entrada, e uma sada. Quando um 0 lgico est presente na entrada, a
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
13
sada apresenta um 1 lgico, e vice-versa. Esta porta tambm chamada de Inversora.

Se for executada num programa, a operao NOT feita num byte. O resultado esse byte com todos os bits inver-
tidos. Se o byte for considerado um nmero, o valor invertido na realidade o complemento desse nmero. Isto , o
complemento de um nmero o que necessrio adicionar-lhe, para que o mesmo atinja o mximo valor de 8 bits
(255).
Porta lgica EXCLUSIVE OR / XOR
Esta porta uma combinao das atrs referidas. A sada apresenta um 1 lgico, apenas quando as suas entradas
apresentam niveis lgicos diferentes.

Em um programa, esta operao tambm usada para comparar dois bytes, para inverter quaisquer bits de um byte
ou para subtrair. E no h o perigo de subtrair um nmero grande, de um menor.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
14
Registo
Um registo um circuito electrnico que consegue memorizar o estado de um byte.
Registo
SFR / Special Function Register - Registo de Funo Especial
Como acrescento aos registos que no tem qualquer funo predeterminada, todos os microcontroladores
tem alguns registos em que a sua funo est predeterminada pelo fabricante. Os seus bits esto interligados
sicamente aos circuitos internos, tais como temporizadores, conversores A/D, osciladores, portas srie e ou-
tros, o que signica que so responsaveis pelo funcionamento do microcontrolador. Como um byte tem oito
bits, como se fossem oito interruptores que comandam outros pequenos circuitos dentro do chip. Os SFR
tem essa exacta funo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
15
SFR - Special Function Register - Registo de Funo Especial
Portas de Entrada/Sada - I/O
De maneira a tornar o microcontrolador de alguma utilidade, o mesmo tem que estar ligado a electrnica adi-
cional no seu exterior, tais como perifricos. Cada micro tem um ou mais registos, chamados de Portas, ligados
aos pinos do mesmo.
O porqu de I/O, deve-se a que o utilizador pode alterar a funo a seu belo prazer, e conforme a aplicao a
dar-lhes. Como exemplo, vamos supor que queremos comandar trs LEDs, e simultaneamente controlar o es-
tado lgico de cinco botes: algumas portas tem de ser conguradas para que haja trs sadas e cinco entradas.
Esta congurao simples e confortavelmente feita por software, o que signica, tambm, que a funo pode
ser alterada durante a operao (on-the-y).
Uma das mais importantes especicaes dos pinos I/O, a corrente mxima que os mesmos podem suportar.
Para a maioria dos microcontroladores, a corrente possvel de tirar de um pino a suciente para activar um
LED, ou outro dispositivo similar de baixa corrente (5-25mA). Se o microcontrolador tiver muitos pinos I/O,
ento a mxima corrente de um s pino menor. Resumidamente, no possvel que todos os pinos suportem
a mxima corrente, se houver mais de 80 pinos em total no microcontrolador. A corrente mxima descrita nas
especicaes, partilhada entre todos os portos I/O.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
16
Outra importante funo, a de que podem ter resistncias de pull-up (polarizao positiva). Estas resistn-
cias ligam os pinos alimentao positiva, e o seu efeito visivel quando o pino est congurado como entrada.
As novas verses de microcontroladores j tem estas resistncias conguraveis por software.
Normalmente, cada porto I/O controlado por um SFR, o que signica que, cada bit desse registo, determina
o estado do pino correspondente do microcontrolador. Como exemplo, escrevendo 1 lgico no bit desse SFR,
o pino da porta correspondente automaticamente congurado como entrada. De outra maneira, escrevendo
0 lgico no SFR, o pino da porta correspondente congurado como sada. A tenso deste pino, 0v ou 5v, cor-
responde ao estado do correspondente bit do registo da Porta.
Se escrevermos 0 em um bit de registo da Porta, esse pino apresentar 0v. Se, inversamente, escrevermos 1 no
mesmo bit, o pino j vai apresentar 5v.
Portas Input/Output - Entrada/Sada
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
17
Unidade de memria
A memria a parte do microcontrolador usada para o armazenamento de dados.
Cada endereo de memria corresponde a uma po-
sio de memria. O contedo dessa posio, co-
nhecido atravs do seu endereamento. A memria
tanto pode ser lida de, como pode ser escrita para.
Existem vrios tipos de memria dentro do micro-
controlador.
ROM - Read Only Memory: Apenas de Leitura, usada para permanentemente gravar o programa a execu-
tar.
OTP ROM - One Time Programmable ROM: ROM onde s se pode escrever o programa na memria ape-
nas uma vez. Se houver necessidade de alterar o mesmo, ter de se fazer a gravao em um novo chip.
UV EPROM - UltraViolet Erasable Programmable ROM: ROM que
permite apagar o programa, usando luz Ultra-Violeta. O chip tem uma
janela de vidro no topo do seu corpo, o que permite a passagem dos raios
Ultra-Violeta, que vo apagar a memria.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
18
FLASH - Este tipo de memria foi inventada pela Intel nos anos 80. O seu contedo pode ser escrito/apaga-
do quase que innitamente. Os microcontroladores com memria Flash so muito uteis para aprendizagem,
investigao e desenvolvimento, bem como para pequenas sries. Devido sua popularidade, a maioria dos
microcontroladores so fabricados com este tipo de memria.
RAM - Random Access Memory: Este tipo de memria voltil, o que signica que quando se desliga a ali-
mentao do chip, a sua informao desaparece. usada para o armazenamento temporrio de dados, criados
e usados durante a operao do microcontrolador. Como exemplo, se o programa faz uma adio, necessrio
haver um registo que tenha o valor da soma. Para esse m, um dos registos da RAM chamado de soma e
usado para armazenar o resultado da adio.
EEPROM - Electrically Erasable Programmable ROM: ROM programavel, que se pode apagar electricamen-
te. O contedo desta memria pode ser mudado durante a operao, mas o seu contedo no perdido quando
se desliga a alimentao do microcontrolador. Este tipo de memria usada para guardar valores, criados du-
rante a operao, que devem ser permanente armazenados.
Interrupes
A maioria dos programas usa interrupes durante a execuo normal dos mesmos. O m de um microcon-
trolador o de reagir consoante os estmulos exteriores. Posto por outras palavras, quando algo acontece, o
microcontrolador faz qualquer coisa. Como exemplo, quando se pressiona um boto de um controlo remoto, o
microcontrolador vai registar o acto, e responder ordem aumentando/baixando o volume, mudando de canal,
etc.
Se o microcontrolador dispendesse o teu tempo indenidademente, a ler alguns botes durante horas ou dias,
simplesmente seria impraticavel. Em vez de o fazer, o microcontrolador delega este trabalho ao especialista,
que vai apenas reagir quando houver necessidade de ateno.
O sinal que informa o processador central deste tipo de eventos, chamado de Interrupo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
19
CPU - Unidade Central de Processamento
Como o seu nome sugere, esta a unidade que monitoriza e controla todos os processos dentro do microcon-
trolador. Consiste em variadas subunidades, em que as mais importantes so:
Descodicador de Instrues: a parte electrnica que reconhece as instrues de programa, e faz funcionar
o outros circuitos com base nisso. O conjunto de instrues que diferente para cada familia de microcontro-
ladores, mostra as capacidades deste circuito.
ALU: Unidade Lgica e Aritmtica: responsavel por todas as operaes lgicas e matemticas.
Acumulador: um registo SFR responsavel pela operao da ALU. como um registo de trabalho, usado para
armazenar todos os dados que so usados para executar uma operao, e que tambm armazena os resultados
prontos para serem usados para a continuao do processamento. Um dos SFR, chamado de Status, contm
bastante informao sobre o estado dos dados armazenados no Acumulador (o nmero maior ou menor que
zero, etc).
CPU - Central Processing Unit - Unidade de Processamento Central
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
20
Barramento
Fisicamente, o barramento constituido por 8, 16 ou mais condutores. Existem dois tipos de barramento: o de
endereamento e o de dados. O barramento de endereamento consiste no nmero de linhas necessrias para
poder enderear a memria. usado para transmitir o endereo da CPU para a Memria. O barramento de
dados to largo quanto os dados que vo ser trabalhados, e no caso deste manual de 8 bits ou largura de os.
usado para ligar todos os circuitos dentro do microcontrolador.
Comunicaes Srie
Ligaes paralelas entre microcontroladores e perifricos, atravs de portas I/O, so a soluo ideal para curtas
distncias - poucos metros. No entanto, e em outros casos em que h necessidade de estabelecer comunicaes
entre dois dispositivos em maiores distncias, no possvel utilizar comunicaes paralelas. Nestas situaes,
a comunicao srie a melhor soluo.
Hoje em dia, a maior parte dos microcontroladores tem dentro, j de fbrica, variados sistemas para comuni-
caes srie. Quais destes so usados, depende de muitos factores, os quais mais importantes so:
com quantos dispositivos, o microcontrolador tem de trocar informao?
com que velocidade tem que ser feita a troca de dados?
qual a distncia entre os dispositivos?
necessrio enviar e receber dados simultaneamente?
Um dos mais importantes pontos a considerar na comunicao srie, o Protocolo.
O protocolo um conjunto de regras que devem ser obedecidas, de maneira a que os dispositivos possam cor-
rectamente interpretar os dados que todos trocam entre si. Felizmente, o microcontrolador trata desta situao
de maneira perfeitamente autnoma, o que liberta o programador para a tarefa de simplesmente ler e escrever.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
21
CPU - Central Processing Unit - Unidade de Processamento Central
Baud Rate - Velocidade de transferncia
O termo Baud Rate normalmente usado para especicar o nmero de bits transferidos por segundo (bps).
Dever-se- ter em ateno que se referem bits, e no bytes. , normalmente, requisito do protocolo, que cada
byte seja transferido em conjunto com vrios bits de controlo, o que pode signicar que um byte da trama de
dados srie, consista em 11 bits. Como exemplo, se o Baud Rate de 300 bps, ento, um mximo de 37 e um
mnimo de 27 bytes podem ser transferidos por segundo, ambos dependentes do tipo de ligao e protocolo
usado.
Os sistemas de comunicao Srie mais usados so:
I2C (Inter Integrated Circuit) um sistema usado quando a distncia entre microcontroladores e perifricos
curta (normalmente o emissor e o receptor esto na mesma placa de circuito impresso). A ligao feita com
dois condutores: um para transferncia de dados, e o outro para o sinal de relgio (sincronizao). Como se
pode ver na gura, um dos dispositivos sempre o Mestre. Faz o endereamento de um chip Escravo, antes da
comunicao se iniciar. Desta maneira, um microcontrolador pode comunicar com 112 dispositivos diferentes.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
22
O Baud Rate normalmente de 100 Kbit/s no modo normal, ou de 10 Kb/s em modo lento. A distncia m-
xima, sem ajudas, entre dispositivos que se comunicam por I2C, est limitada a poucos metros.
Comunicao I2C
SPI (Serial Peripheral Interface Bus) um sistema de comunicao srie, que usa at 4 condutores: um para
receber dados, outro para enviar dados, um para sinal de relgio, e em alternativa outro para escolher com qual
dos dispositivos o Mestre vai comunicar. uma ligao Full-Duplex, o que signica que o envio e a recepo
podem ser feitas simultaneamente. O Baud Rate mximo superior a uma ligao I2C.
Comunicao SPI
UART (Universal Asynchronous Receiver/Transmitter) uma ligao assncrona, o que signica que o sinal
de relgio no usado. Como h apenas uma linha de comunicao, ambos o receptor e emissor trabalham a
um Baud Rate pr-determinado, de maneira a manter a sua sincronizao. Esta uma maneira muito simples
de transferir informao, pois representa a converso de dados 8-bit em formato paralelos, para formato srie.
O Baud Rate faz-se abaixo de 1 Mbit/s.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
23
Oscilador
Pulsos dados pelo oscilador, possibilitam a operao sncrona de todos os circuitos do microcontrolador. O
mdulo oscilador normalmente congurado para usar um cristal de quartzo, ou um ressoador cermico, para
ter a sua oscilao estabilizada. Se no houver, por parte da aplicao, necessidade de estabilidade da oscilao,
ento pode usar-se um oscilador RC (resistncia/condensador).
importante sublinhar que, as instrues, no so executas ao ritmo imposto pelo oscilador, mas algumas vezes
mais lento. Isto acontece porque cada instruo executada em vrios passos. Em alguns microcontroladores, o
mesmo nmero de ciclos necessrio para qualquer instruo, enquanto que em outros, o tempo de execuo
no o mesmo para todas as instrues. Se o sistema usa um cristal de 20 MHz, o tempo de execua de uma
instruo no de 50ns, mas 200ns, 400 ou 800ns, dependendo do tipo de microcontrolador usado.
Oscilador
Circuito de Alimentao
H duas situaes a ter em ateno, no que toca alimentao do microcontrolador:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
24
Brown-Out, um estado potencialmente perigoso, e que acontece no momento em que o microcontrolador
est a ser desligado, ou em situaes onde a energia de alimentao cai para o limite, devido a ruido elctrico.
Como o microcontrolador consiste em vrios circuitos com diferentes necessidades de nvel de tenso, este esta-
do pode causar um grande desvio na sua performance. De maneira a preveni-lo, este circuito imediatamente faz
Reset a toda a electrnica interna, quando a tenso de alimentao desce abaixo de um nvel pr-determinado.
Pino Reset, normalmente marcado como MCLR (Master Clear Reset), e serve para fazer o Reset externo do
microcontrolador, aplicando nvel lgico 0 ou 1, dependendo do tipo de microcontrolador usado. No caso de o
chip no ter circuito de Brown-Out, um simples circuito externo de Brown-Out pode ser ligado a este pino.
Temporizadores e Contadores
O microcontrolador usa, normalmente, cristal de quartzo para funcionar. Mesmo que no seja a soluo mais
simples, h muitas razes para o fazer. Nomeadamente, a frequncia do oscilador precisamente denida e
muito estavel, os pulsos originados tem sempre a mesma largura, o que os faz ideais para medies de tempo.
Estes osciladores so usados em relgios de quartzo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
25
Temporizadores / Contadores
Se necessrio medir o tempo entre dois eventos, suciente contar os pulsos enviados pelo oscilador. Isto
exactamente o que o Temporizador faz.
Muitos programas usam estes cronmetros miniatura, que so SFR de 8 ou 16 bits, e o seu conteudo automa-
ticamente incrementado a cada pulso recebido. Quando um registo chegar ao m da contagem (255 ou 65535),
uma Interrupo gerada.
Se os temporizadores usam um oscilador interno de quartzo, ento possvel medir o tempo entre dois eventos
(se o valor do registo T1 no momento inicial, e T2 no momento nal, ento o tempo passado igual ao resul-
tado da subtrao T2-T1). Se os temporizadores usam pulsos externos, ento o temporizador transformado
em contador.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
26
Como funciona um temporizador
Na prtica, os pulsos que chegam do oscilador de quartzo a cada ciclo de mquina, ou atravs o divisor, vo
incrementar (somar uma unidade) o valor do registo do temporizador. Se uma instruo (um ciclo de mqui-
na) durar por quatro periodos do oscilador de quartzo, ento, o nmero vai mudar um milho de vezes por
segundo, ou a cada microsegundo (us).

Funcionamento do Temporizador
simples medir curtos intervalos de tempo (at 256us), pelo mtodo descrito acima, porque o maior nmero
que um registo pode ter. Esta bvia desvantagem pode ser facilmente contornavel de diversas maneiras, como
usando um oscilador mais lento, registos com mais bits, um divisor ou interrupes. Como as duas primeiras
solues so menos simples de resolver, preferivel enveredar pelas duas ltimas.
Usar o divisor no funcionamento do temporizador
Um divisor um dispositivo electrnico usado para reduzir a frequncia, por um factor pr-determinado. O
que signica que, para gerar um pulso na sua sada, necessrio fazer chegar 1, 2, 4, 8 ou mais pulsos sua
entrada. Este circuito parte integrante do microcontrolador, e o seu factor de diviso pode ser alterado pelo
software. usado quando necessrio medir perodos de tempo longos.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
27
Este divisor normalmente partilhado pelo Temporizador e pelo Watchdog, o que faz com que no possa ser
usado por ambos em simultneo.
Usando o Divisor, no funcionamento do Temporizador
Usar a Interrupo no funcionamento do Temporizador
Se o registo do temporizador for de 8 bits, o maior nmero que lhe poder ser escrito de 255 (ou de 65535
se o registo for de 16 bits). Se este nmero for excedido, o temporizador vai automaticamente limpar-se (auto
reset), e a contagem vai iniciar-se do 0. Esta condio chamada de Overow. Se for habilitado pelo software,
esse overow pode gerar uma interrupo, o que nos trs imensas novas possibilidades.
Como exemplo, o estado dos registos de um relgio, segundos-minutos-horas, podem ser alterados dentro da
rotina de interrupo.
Todo o processo, excepto a rotina de interrupo, executado em background, o que possibilita que o circuito
principal do microcontrolador execute outras operaes.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
28
Usando a Interrupo, no funcionamento do Temporizador
Atrasos de diferente durao, com mnima interferncia do programa principal, podem facilmente ser obtidos
atribuindo o divisor ao temporizador.
Contadores
Se o temporizador estiver a ser carregado com pulsos do exterior, ento o mesmo torna-se num Contador. O
circuito no mudou, mantm-se o mesmo.
A nica diferena que, neste caso, os pulsos a contar chegam atravs das portas, e a sua durao nunca de-
nida. Esta a razo pela qual no podem ser usados para medio de tempo, embora os seus ns sejam imensos.
Desde a contagem de peas numa linha de montagem, quantidade de passos que o motor andou, nmero de
passageiros numa la, etc. As possibilidades so vastas, e so dependentes dos sensores usados.
Temporizador Watchdog
O watchdog um temporizador ligado a um oscilador RC, e totalmente independente do microcontrolador. O
que faz com que no possa ser desligado durante o funcionamento.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
29
Se o watchdog estiver ligado, escolha que apenas pode ser feita durante a programao fsica, cada vez que
chega ao m da sua contagem, ocorre um reset do microcontrolador, e a execuo do programa volta primeira
instruo. O objectivo fazer com que isto no acontea, pelo uso de uma instruo especca.
Assim, se algo se descontrolar na execuo do programa, o microcontrolador poder reiniciar-se, no correndo
o risco de car empatado num crculo innito.
Se as instrues que fazem o reset do watchdog, forem colocadas em stios especcos do programa, ento, o
funcionamento do watchdog no vai interferir com o programa principal. Se, por alguma razo, normalmente
por ruidos na linha elctrica, o programa car bloqueado em alguma posio da qual no consegue sair, no vai
ser feito o reset do watchdog e, quando este chegar ao m da contagem, o reset do microcontrolador acontece,
iniciando o programa desde o incio.

Temporizador Watchdog
Conversores Analgico/Digital
Os sinais externos so, normalmente, diferentes dos que o microcontrolador compreende (1s e 0s). Devido a
isto, os sinais tem que ser convertidos para linguagem compatvel. Um conversor de Analgico para Digital,
um circuito que converte sinais contnuos, para nmeros digitais. Este circuito , ento, usado para converter
um valor analgico, para um nmero binrio, e envi-lo ao CPU para processamento. Posto por outras pala-
vras, este mdulo usado para medir tenses presentes no pino. O resultado da medida um nmero de valor
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
30
digital, usado e processado pelo programa.
Conversor A/D
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
31
Arquitectura Interna
Todos os microcontroladores modernos usam uma de duas arquitecturas: Harvard ou von-Neumann. Em
suma, so duas formas distintas de trocar a informao entre o CPU e a Memria.
Arquitectura von-Neumann
Os microcontroladores que usam esta tecnologia, s
tem disponivel uma zona de memria, e um barra-
mento de dados de 8 bits. Como todos os dados so
trocados, usando estas 8 linhas, este barramento
sobrecarregado e a comunicao extremamente lenta
e ineciente.
O CPU pode lr uma instruo, ou lr/escrever da-
dos de/para a memria. Ambas as situaes ao mes-
mo tempo so impossiveis, pois as instrues parti-
lham o barramento com os dados.
Arquitectura Harvard
Os microcontroladores que usam esta arquitectura, dispem de dois barramentos de dados distintos. Um de
8 bits e liga o CPU RAM. O outro tem vrias linhas (12, 14 ou 16) e liga o CPU ROM.
Assim, o CPU pode ler uma instruo, ao mesmo tempo que faz um acesso memria de dados. Como todos
os registos RAM so de 8 bits, todos os dados trocados dentro do microcontrolador esto no mesmo formato.
Adicionalmente, durante a escrita do software, apenas 8 bits de dados so considerados. Por outras palavras, s
se pode trabalhar com 8 bits de dados, no mximo.
Um programa escrito para estes microcontroladores, depois de compilado, vai ser guardado na ROM interna.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
32
No entanto, estas posies de memria no tem apenas 8 bits, mas sim 12, 14 ou 16. Os restantes 4, 6 ou 8
bits representam a prpria instruo, especicando ao CPU o que fazer com os dados de 8 bits.
Arq. Harvard
As vantagens deste modelo, so as seguintes:
Todos os dados so de 8 bits. Como o barramento usado para a leitura do programa tem 12, 14 ou 16
linhas, ambos as instrues e dados pode ser lidos simultaneamente. Assim, todas as instrues so execu-
tadas em apenas um ciclo. A nica excepo so as instrues de salto, que so executadas em dois ciclos.
Como a ROM e RAM so separadas, o CPU pode executar duas instrues simultaneamente. Enquanto a
leitura/escrita da RAM est a ser feita, a prxima instruo est a ser lida pelo outro barramento.
Nesta arquitectura, o barramento de programa maior que um byte, o que possibilita que cada linha de
programa seja feita de instruo + dados. Por outras palavras: uma linha de programa - uma instruo.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
33
Conjunto de Instrues
As instrues que so compreendidas pelo microcontrolador, so
conhecidas como o Conjunto de Instrues. Quando se escreve
um programa em linguagem Assembler, est-se a contar uma
estria, especicando as instrues pela ordem que as mesmas
devem ser executadas. A nica restrio, pelo reduzido nmero
de instrues disponiveis.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
34
Como escolher o microcontrolador certo para a aplicao?
Antes de se comear a desenvolver um sistema baseado num microcontrolador, dever-se- equacionar o seguin-
te:
quantas entradas/sadas so necessrias?
comunicaes srie?
conversor A/D?
outro...
Quando se dene muito bem os requisitos do projecto, a larga oferta naturalmente ltrada, e muito mais
simples fazer a escolha adequada.
Por ltimo, fazer a escolha consoante o nmero de unidades do produto, e o preo por unidade.
Microcontroladores PIC
Estes microcontroladores, fabricados pela Microchip, so provavelmente a melhor aposta para iniciados. O
verdadeito nome deste microcontroladores PICmicro, mas so mais conhecidos por PIC.
O primeiro modelo foi desenhado em 1975 pela General Instruments. Chamava-se PIC1650, e foi idealizado
para ns totalmente diferentes.
Aps 10 anos, e juntando memria EEPROM, este circuito transforma-se num verdadeiro microcontrolador
PIC.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
44
Microcontrolador PIC16F887
Uma panormica
O PIC16F887 um dos mais recentes produtos da Microchip. Tem todos os componentes que um moderno
microcontrolador tem e, pelo baixo custo, amplo campo de aplicaes, alta qualidade e facilidade de adquirir, a
soluo ideal para aplicaes como: controlo de processo industrial, controlo de mquinas, medio de valores,
entre outros.
Algumas das funcionalidades esto descritas abaixo:
Arquitectura RISC (CPU de instrues reduzidas)
apenas 35 instrues para aprender
todas as intrues de um-ciclo, excepto os saltos
Frequncia de operao de 0 a 20MHz
Oscilador interno de preciso
calibrado de fbrica
frequncia escolhida por software entre 31KHz e 8MHz
Tenso de alimentao entre 2.0V e 5.5V
consumo: 220uA @ 2.0V @ 4MHz, 11ua @ 2.0V @ 32KHz, 50nA em Stand-by
Modo de poupana de energia
Reset por Brown-out, com controlo por software

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
45
35 pinos de I/O
alta corrente para polarizar LEDs directamente
resistncias individuais de polarizao positiva, programaveis por software
interrupo quando h mudana no estado lgico dos pinos de entrada
Memria ROM de 8k, em tecnologia FLASH
o chip pode ser reprogramado cerca de 100.000 vezes
Opo de gravao no circuito
o chip pode ser programado, quando est j montado no sistema nal
Memria EEPROM de 256 bytes
pode ser escrita cerca de 1.000.000 vezes
Memria RAM de 368 bytes
Conversor A/D
14 canais
10 bits de resoluo
3 Temporizadores/Contadores independentes
Temporizador Watch-dog
Mdulo comparador analgico com
dois comparadores analgicos
tenso xa de referncia, 0.6V
referncia de tenso programavel
Sada por PWM

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
46
Mdulo USART melhorado
suporta RS-485, RS-232 e LIN2.0
deteco automtica de Baudrate
Porta srie sncrona
suporta os modos I2C e SPI
Microcontrolador PIC16F887 - Encapsulamento PDIP40

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
47
Microcontrolador PIC16F887 - Encapsulamento QFN44
Microcontrolador PIC16F887 - Diagrama de Blocos
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
48
Descrio dos pinos
Como se pode ver na gura acima, quase todos os pinos so multi-funcionais. Como exemplo, o pino 33, com
a designao RB0/AN12/INT, tem as seguintes funes:
RB0, Porta B, primeiro pino entrada/sada (I/O)
AN12, Dcima segunda entrada analgica
INT, Pino de interrupo externa
Este modo de dar funcionalidade extra aos pinos, faz o microcontrolador mais compacto, sem perder a sua fun-
cionalidade. Estas funcionalidades no podem ser usadas em simultneo, mas podem ser alteradas a qualquer
momento pelo software.
As tabelas seguintes, referem-se ao microcontrolador com caixa PDIP 40 pinos :

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
49
Atribuio de Pinos
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
50
Atribuio de Pinos
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
51
Atribuio de Pinos
CPU
No vamos falar do funcionamento da CPU por enquanto. Mas importante frisar que a CPU desenhada
com tecnologia RISC, o que um importante factor a ter em conta, aquando da deciso de que microcontro-
lador usar.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
52
Esta tecnologia oferece duas grandes vantagens:
apenas 35 instrues para aprender
o tempo de execuo o mesmo para todas as instrues, excepto para as que fazem salto. O que signica
que com o microcontrolador a 20MHz, o tempo de execuo de cada instruo ed 200ns, ou seja, o pro-
grama executado velocidade de 5 milhes de instrues por segundo.
A CPU e a Memria
Memria
Este microcontrolador tem trs tipos de memria: ROM, RAM e EEPROM. Todas elas vo ser separada-
mente discutidas, pois cada uma delas tm funcionalidade e organizao especicas.
Memria ROM
A memria ROM usada para permanentemente guardar o programa a executar, e esta a razo pela qual

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
53
chamada de memria de programa. O PIC16F887 tem 8Kb de ROM, num total de 8192 posies. Como esta
ROM feita com tecnologia FLASH, o seu contedo pode ser mudado electricamente, com o auxlio de um
programador externo.
Conceito de Memria ROM
Memria EEPROM
Com parecenas memria de programa, o contedo da EEPROM permanentemente gravado, mesmo que a
energia seja desligada. No entanto, ao contrrio da ROM, o contedo da EEPROM pode ser alterado durante
a execuo do programa. E esta a razo, pela qual esta memria perfeita para guardar resultados criados, e
usados, durante a operao.
Memria RAM
Esta a mais complexa memria do microcontrolador. Neste caso, consiste em dois mdulos: os registos-de-
funo-geral (GPR), e os registos-de-funo-especial.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
54
Embora ambos os mdulos de registos sejam limpos quando a alimentao desliga, e sejam fabricados da
mesma maneira, as suas funes so completamente dspares.
Registos SFR - Special Funcion Registers, e GPR - General Purpose Registers
Registos de funo geral - GPR
Os GPR so usados para armazenar temporariamente os dados, e resultados, criados durante a execuo do
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
55
programa. Se o programa est a executar uma contagem, necessrio que haja um registo que sirva de soma-
dor ou contador. Como o microcontrolador tem que ser congurado para trabalhar como o utilizador deseja,
necessrio, tambm, especicar o endereo de alguns GPRs e dar-lhes novas funes.
Ento, o microcontrolador pode executar o programa, porque sabe o qu, e onde est a soma que deve ser
incrementada. Por analogia, a cada variavel do programa deve ser atribuido um GPR.
Registos de funo especial - SFR
Os SFR tambm so locais na RAM, mas contrariamente aos GPR, o seu m predeterminado no processo
de fabrico, e no pode ser alterado.
Como os seus bits esto sicamente ligados a circuitos internos do chip (mdulo de comunicaes srie, con-
versor A/D, temporizadores, etc), qualquer alterao ao seu conteudo, afecta directamente o funcionamento do
microcontrolador, ou alguns dos seus circuitos. Como exemplo, mudando o registo TRISB, a funo de cada
pino da porta B pode ser alterada, para que seja ou entrada ou sada.
Outra particularidade dos SFRs, a de que estes tem nomes, tanto o registo como os seus bits, o que torna
a escrita do programa mais facilitada. Como a programao em linguagens de alto-nvel pode usar a lista de
todos os registos, com o seu endereo exacto, apenas necessrio especicar o nome do registo, de maneira a
escrever/lr o seu conteudo.
Bancos de Memria
A memria de dados est particionada em quatro bancos. Antes de aceder a algum registo, durante a escrita do
programa para escrever/lr, necessrio seleccionar o banco que contm esse mesmo registo. Dois bits no reg-
isto STATUS so usados para a seleco dos bancos. De forma a facilitar esta operao, os SFR mais comuns
tm o mesmo endereo em todos os bancos, o que possibilita que possam ser facilmente acedidos.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
56
Bancos de Memria
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
57
SFR - Banco 0
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
58
SFR - Banco 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
59
SFR - Banco 2
SFR - Banco 3
Pilha de memria - Stack
A parte da RAM destinada Stack, consiste em oito registos de 13 bits. Antes do microcontrolador executar
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
60
uma subrotina (instruo CALL), ou quando surge uma interrupo, o endereo da prxima instruo em-
purrado para dentro de um registo da stack.
Dessa maneira, aquando da concluso da subrotina ou interrupo, o microcontrolador sabe de onde deve con-
tinuar a execuo normal do programa. Este endereo, na stack, limpo depois do retorno ao programa princi-
pal, pois no h necessidade de o conservar, e essa posio ca automaticamente disponivel para ser usada.
importante compreender que a stack funciona em crculo, ou seja, quando a stack j foi carregada oito vezes,
a nona carga vai ser sobrepr-se ao valor que est guardado na primeira posio. A dcima carga vai sobrepr
a segunda posio, e por a em diante. Os dados que foram sobrepostos desta maneira, no tem qualquer ma-
neira de serem recuperados. Ainda, o programador no tem acesso a estes registos para escrever/ler, e no h
nenhum bit no registo STATUS que indique que houve stack overow ou stack underow. Devido a isto,
deve ter-se em considerao esta particularidade aquando da programao.
Sistema de interrupo
A primeira situao que o microcontrolador faz quando acontece uma interrupo, executar a actual instruo
e parar a execuo do programa.
Imediatamente depois disso, o endereo da memria do programa automaticamente empurrado para a stack,
e o endereo predenido carregado para o contador de programa. Essa localizao de onde o programa con-
tinua, chama-se de Vector de Interrupo. Para o PIC em causa, o vector 0x0004.
Como se pode ver na gura abaixo, o endereo que tem o vector de interrupo saltado durante a execuo
normal do programa.
Parte do programa que activado quando acontece uma interrupo, chamado de Rotina de Interrupo. A
sua primeira instruo est localizada no vector de interrupo. Quo longa a subrotina vai ser, e como vai ser,
depende apenas do programador, bem como do tipo de interrupo.
Alguns microcontroladores tem mais vectores de interrupo (cada interrupo tm um vector associado),
mas no caso deste PIC, existe apenas um vector. Consequentemente, a primeira parte da rotina de interrupo,
consiste no reconhecimento da fonte da mesma, ou onde foi originada.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
61
Por ltimo, quando a origem da interrupo foi encontrada, e a rotina de interrupo executada, o micro-
controlador chega instruo RETFIE, puxa o endereo da stack, e continua a execuo do programa de onde
tinha sado.
Stack e Sistema de Interrupo
Como usar os Registos de funo especial - SFR
O programador adquire o microcontrolador, j com uma ideia bem denida do que vai fazer com o mesmo. H
uma lista longa de SFRs, com os seus bits. Cada um deles controla um qualquer processo. Num todo, tudo
como uma grande tabela de controlo, com muitos instrumentos e interruptores.
Os microcontroladores oferecem muitos produtos a baixo preo, que cabe ao programador tomar a deciso.
Assim, este deve escolher a rea que mais o agrada, e estudar apenas aquilo que necessita de saber.
Depois, quando compreender por completo o funcionamento completo do hardware, deve estudar os SFRs
que o controlam.
E no esquecer!, que durante a escrita do programa, aquando do trabalho com registos e seus bits, deve ser
lembrado mudar para o banco apropriado. As tabelas acima so perfeitamente explanatrias.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
62
Os Registos de Funo Especial - SFR - do CPU
Caractersticas e Funes
Os SFRs podem ser classicados em duas categorias:
SFR do CPU, que controlam e monitorizam os processos no processador central. Mesmo havendo poucos,
a operao de todo o microcoltrolador depende do seu contedo.
SFR perifricos, que controlam a operao dos perifricos (conversor A/D, mdulo de comunicaes srie,
etc). Cada um destes registos normalmente usado para um circuito, e por esta razo, ser explicado mais
frente o seu funcionamento junto com o do perifrico.
Os SFR do CPU do PIC, sero descritos neste captulo. Visto que os seus bits controlam vrios circuitos den-
tro do chip, no possivel classic-los por grupos. Estes bits so descritos juntamente com o processo que vo
controlar.
Registo STATUS
O registo de STATUS contm: o estado aritmtico do registo W, o estado do RESET e os bits de seleco do
banco de memria.
O programador deve ser cauteloso, quando escreve valores para este registo porque, se o zer erradamente, os

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
63
resultados podem ser diferentes do esperado. Por exemplo, se se tentar apagar todos os bits, usando a instruo
CLRF STATUS, o resultado no registo ser 000xx1xx, em vez do esperado 00000000.
Tais erros acontecem, porque alguns bits deste registos so comandados pelo hardware, e no podem ser altera-
dos pelo programa. E, tambm, os bits 3 e 4 so apenas de leitura.
Por estas razes, se necessrio alterar o seu contedo, recomendado usar instrues que no alterem os bits
de estado C, DC e Z. Consultar o captulo sobre as Instrues do PIC.
IRP - selecciona o banco de resgistos. usado para endereamento indirecto.
1 - Bancos 0 e 1 so activados (endereos de memria 0x00 a 0xFF)
2 - Bancos 2 e 3 so activados (endereos de memria 0x100 a 0x1FF)
RP1,RP0 - selecciona o banco de registos. usado para endereamento directo
RP1 RP0 Banco Activo
0 0 Banco 0
0 1 Banco 1
1 0 Banco 2
1 1 Banco 3
TO - bit de Time-out
1 - A seguir ao Power-on, ou depois de executar a instruo CLRWDT, que limpa o temporizador do watch-
dog, ou da instruo SLEEP, que pe o microcontrolador em modo adormecido.
0 - A seguir a ter ocorrido um time-out do temporizador watchdog.
PD - bit de Power-down
1 - Depois do Power-on, ou depois de executar a instruo CLRWDT, que limpa o temporizador watchdog.
0 - Depois de de executar a instruo SLEEP, que coloca o microcontrolador em modo adormecido e baixo
consumo.
Z - bit Zero
1 - O resultado da operao lgica ou aritmtica zero
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
64
0 - O resultado da operao lgica ou aritmtica diferente de zero
DC - bit de transporte de digito, mudado durante a soma ou subtraco, se houver overow ou um borrow
do resultado
1 - Houve transporte do 4 bit do resultado.
0 - No houve transporte do 4 bit do resultado.
C - bit de Transporte, mudado durante a soma ou subtraco, se houver overow ou um borrow do resul-
tado: se o resultado maior que 255 ou menor que 0
1 - Houve transporte do bit mais signicativo do resultado
0 - No houve transporte do bit mais signicativo do resultado
Registo OPTION_REG
O registo OPTION_REG tem vrios bits de controlo, para congurar: divisor do TMR0/WDT, temporiza-
dor TMR0, Interrupo externa e Pull-ups da Porta B.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
65
RBPU - Interruptor dos Pull-ups da Porta B
1 - Pull-ups desligados
0 - Pull-ups ligados
INTEDG - Seleco do anco da interrupo
1 - Interrupo no anco ascendente do pino RB0/
INT
0 - Interrupo no anco descendente do pino RB0/
INT
T0CS - Seleco da fonte de clock para o TMR0
1 - Transio no pino T0CKI
0 - Clock interno a Fosc/4
T0SE - Seleco do anco para o contador TMR0,
no pino RA4/T0CKI
1 - Incrementa no anco descendente do pino
T0CKI
0 - Incrementa no anco ascendente do pino T0CKI
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
66
PSA - Selecciona a atribuio para o TMR0 ou
Watchdog, do divisor
1 - Divisor atribuido ao Watchdog
0 - Divisor atribuido ao TMR0
PS2, PS1 e PS0 - Bits de seleco da magnitude de diviso, do divisor interno
A magnitude de diviso, do divisor interno, congurada por estes trs bits, descritos na tabela abaixo. A mag-
nitude depende de se o divisor est atribuido ao TMR0, ou ao Watchdog.
PS2 PS1 PS0 TMR0 WDT
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8l 1:4
0 1 1 1:16 1:8
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128
De maneira a conseguir uma diviso de 1:1, quando o temporizador TMR0 usado, o divisor dever estar atri-
buido ao Watchdog. Como resultado, o temporizador TMR0 no usa o divisor, e conta directamente os pulsos
que lhe so chegados pelo oscilador interno, ou por via externa no pino RA4/T0CKI.
Registos do Sistema de Interrupes
Quando um pedido de interrupo chega ao microcontrolador, no signica que a interrupo seja automatica-
mente atendida pois, a mesma, ter de estar habilitada pelo programador. Devido a isto, h bits seleccionados
para ligar/desligar as interrupes.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
67
simples reconhecer estes bits, porque o seu nome tem a sigla IE (Interrupt Enable, ou Habilitao da Inter-
rupo). Alm disto, cada interrupo est associada com outro bit chamado de Flag (sinalizador), que indica
que o pedido de interrupo chegou ao microcontrolador, independentemente se a interrupo est habilitada,
ou no. Tambm so facilmente reconhecidos pelas ltimas letras IF (Interrup Flag, ou Sinalizador de Inter-
rupo).
Como j foi descrito, o princpio baseado numa ideia simples e eciente. Quando um pedido de interrupo
chega, o bit de ag tambm automatica e autonomamente ligado em primeiro lugar.
Registos do Sistema de Interrupes
Se o bit respectivo IE no est activado, este evento ser completamente ignorado pelo microcontrolador. De
outra forma, a interrupo ser trabalhada pelo CPU.
Se vrias fontes de interrupo esto activadas, ento necessrio detectar as que esto activas, antes de iniciar
a execuo da interrupo. A deteco feita, analisando quais os bits de ags que esto activos.
importante compreender que os bits de ag no so automaticamente limpos, depois da interrupo ser ex-
ecutada. Sim, devem ser apagados pelo programador, dentro do software de execuo da interrupo.
Se este pormenor no fr tomado em conta, outra interrupo ir disparar quando se voltar para o programa
principal, mesmo que no haja mais pedidos para a sua execuo. Resumindo, o bit de ag e o bit IE continu-
aro activados.
Todas as fontes de interrupo do microcontrolador PIC16F887, podero ser visualisadas na imagem abaixo.
De notar os seguintes pontos:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
68
bit GIE - activa/desactiva todas as interrupes
bit PEIE - activa/desactiva todas as interrupes de perifricos. No se aplicam ao TMR0 e Porta B.
Para habilitar as interrupes causadas pela mudana de estado na Porta B, necessrio activar cada bit sepa-
radamente. Neste caso, os bits do registo IOCB tem essa funo em particular.
SFRs - Special Function Registers das Interrupes
Registo INTCON
O registo INTCON contm vrios bits de activao, e ag, para o TMR0, Porta B e pino INT.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
69
GIE - Habilitao global e simultnea de Interrupes
1 - Activa todas as interrupes
0 - Desactiva todas as interrupes
PEIE - Habilita as Interrupes dos perifricos
1 - Activa todas as interrupes dos perifricos
0 - Desactiva todas as interrupes dos perifricos
T0IE - Habilita a interrupo de m de contagem do TMR, quando da contagem de 255 para 0.
1 - Activa interrupo do TMR0
0 - Desactiva interrupo do TMR0
INTE - Habilita interrupo externa em RB0/INT, causada pela mudana de estado no pino
1 - Activa interrupo do RB0/INT
0 - Desactiva interrupo do RB0/INT
RBIE - Habilita interrupo da Porta B, da mudana de estado nos pinos. Quando congurados como entra-
das, os pinos da Porta B podem causar interrupo, se mudarem de estado lgico. Seja com anco ascendente,
seja descendente. Interessa apenas que houve mudana.
1 - Activa interrupo por mudana de estado da Porta B
0 - Deactiva interrupo por mudana de estado da Porta B
T0IF - Flag de interrupo de m de contagem do TMR0
1 - TMR0 chegou ao m da contagem, ag dever ser limpa pelo software
0 - TMR0 no chegou ao m da contagem
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
70
INTF - Flag de interrupo externa por mudana de estado no pino RB0/INT
1 - Ocorreu interrupo externa em INT, ag dever ser limpa pelo software
0 - No ocorrer interrupo externa em INT
RBIF - Flag de interrupo pela mudana de estado nos pinos da Porta B
1 - Pelo meno um dos pinos da Porta B mudou de estado lgico. Aps a leitura da Porta B, a ag RBIF dever
ser limpa pelo software.
0 - Nenhum dos pinos da Porta B mudou de estado lgico.
Registo PIE1
O registo PIE1 contm os bits que habilitam as interrupes dos perifricos.
ADIE - Habilita a interrupo do Conversor A/D
1 - Liga a interrupo do conversor A/D
0 - Desliga a interrupo do conversor A/D
RCIE - Habilita a interrupo da Recepo da EUSART
1 - Liga a interrupo da Recepo da EUSART
0 - Desliga a interrupo da Recepo da EUSART
TXIE - Habilita a interrupo da Transmisso da EUSART
1 - Liga a interrupo da Transmisso da EUSART
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
71
0 - Desliga a interrupo da Transmisso da EUSART
SSPIE - Habilita a interrupo da Porta Srie Sncrona (MSSP), a cada transferncia efectuada
1 - Liga a interrupo MSSP
0 - Desliga a interrupo MSSP
CCP1IE - Habilita a interrupo do mdulo CCP1 (Capture/Compare/PWM - Captura/Compara/
PWM)
1 - Liga a interrupo CCP1
0 - Desliga a interrupo CCP1
TMR2IE - Habilita a interrupo por comparao entre PR2 e TMR2
1 - Liga a interrupo da comparao PR2 e TMR2
0 - Desliga a interrupo da comparao PR2 e TMR2
TMR1IE - Habilita a interrupo de m de contagem do TMR1, quando da contagem de 255 para 0.
1 - Activa interrupo do TMR1
0 - Desactiva interrupo do TMR1
Registo PIE2
O registo PIE2 tambm contm bits que habilitam as interrupes dos perifricos.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
72
OSFIE - Habilita interrupo por falha do Oscilador interno
1 - Liga interrupo por falha do Oscilador
0 - Desliga interrupo por falha do Oscilador
C2IE - Habilita interrupo do Comparador C2
1 - Liga interrupo do Comparador C2
0 - Desliga interrupo do Comparador C2
C1IE - Habilita interrupo do Comparador C1
1 - Liga interrupo do Comparador C1
0 - Desliga interrupo do Comparador C1
EEIE - Habilita a interrupo pela escrita da EEPROM
1 - Liga a interrupo pela escrita da EEPROM
0 - Desliga a interrupo pela escrita da EEPROM
BCLIE - Habilita a interrupo pela Coliso de Dados no Barramento
1 - Liga a interrupo pela Coliso de Dados no Barramento
0 - Desliga a interrupo pela Coliso de Dados no Barramento
ULPWUIE - Habilita a interrupo pelo Despertar em extrema baixa potncia
1 - Liga a interrupo pelo Despertar em extrema baixa potncia
0 - Desliga a interrupo pelo Despertar em extrema baixa potncia
CCP2IE - Habilita a interrupo do mdulo CCP2 (Capture/Compare/PWM - Captura/Compara/
PWM)
1 - Liga a interrupo CCP2
0 - Desliga a interrupo CCP2
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
73
Registo PIR1
O registo PIR1 contm as ags das interrupes.
ADIF - Flag da interrupo do conversor A/D
1 - A converso A/D est completa. Flag dever ser limpa por software
0 - A converso no est completa ou no foi iniciada
RCIF - Flag da interrupo da recepo da EUSART
1 - O buer de recepo da EUSART est completo. A ag limpa, lendo o registo RCREG.
0 - O buer de recepo da EUSART no est completo.
TXIF - Flag de interrupo da transmisso da EUSART
1- O buer de transmisso da EUSART est vazio. A ag limpa, escrevendo para o registo TXREG
0 - O buer de transmisso da EUSART est completo.
SSPIF - Flag de interrupo da Porta Srie Sncrona (MSSP)
1 - A interrupo MSSP durante a transmisso/recepo ocorreu. Estas condies diferem, dependendo do
modo em que se opera: SPI ou I2C. Esta ag deve ser limpa por software.
0 - Nenhuma interrupo MSSP ocorreu.
CCP1IF - Flag de interrupo de CCP1
1 - A interrupo de CCP1 ocorreu. Dependendo do modo de operao, ocorreu um valor coincidente com
sucesso na captura ou comparao. Em ambos os casos, a ag dever ser limpa por software. Este bit no
usado no modo de PWM.
0 - A interrupo de CCP1 no ocorreu.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
74
TMR2IF - Flag de interrupo de coincidncia de valores entre TMR2 e PR2
1 - Ocorreu coincidncia de valores entre o TMR2 e PR2. Este bit dever ser limpo por software.
0 - No ocorreu coincidncia de valores entre TMR2 e PR2.
TMR1IF - Flag de interrupo de m de contagem do TMR1
1 - O TMR1 chegou ao m da contagem. Este bit dever ser limpo por software.
0 - O TMR1 no chegou ao m da contagem.
Registo PIR2
O registo PIR2 tambm contm as ags das interrupes.
OSFIF - Flag de interrupo por falha do Oscilador
1 - O oscilador do sistema falhou, e o clock do sistema foi transferido para o oscilador INTOSC. Este bit de-
ver ser limpo por software
0 - O oscilador do sistema funciona normalmente.
C2IF - Flag de interrupo do comparador C2
1 - A sada do comparador C2 mudou de estado (bit C2OUT). Este bit dever ser limpo por software.
0 - A sada do comparador C2 no mudou de estado.
C1IF - Flag de interrupo do comparador C1
1 - A sada do comparador C1 mudou de estado (bit C1OUT). Este bit dever ser limpo por software.
0 - A sada do comparador C1 no mudou de estado.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
75
EEIF - Flag de interrupo da operao de escrita na EEPROM
1 - Escrita na EEPROM completa. Este bit dever ser limpo por software
0 - Escrita na EEPROM no est completa, ou no foi iniciada.
BCLIF - Flag de interrupo de coliso de transferncia de dados no Barramento
1 - Ocorreu uma coliso no barramento, quando o mdulo MSSP est congurado para I2C mestre. Este bit
dever ser limpo por software
0 - No ocorreu coliso no barramento
ULPWUIF - Flag de interrupo de Despertar em extrema baixa potncia
1 - Condio de Despertar ocorreu. Este bit dever ser limpo por software
0 - Condio de Despertar no ocorreu.
CCP2IF - Flag de interrupo de CCP2
1 - A interrupo de CCP2 ocorreu. Dependendo do modo de operao, ocorreu um valor coincidente com
sucesso na captura ou comparao. Em ambos os casos, a ag dever ser limpa por software. Este bit no
usado no modo de PWM.
0 - A interrupo de CCP2 no ocorreu.
Registo PCON
O registo PCON contm apenas duas ags, para diferenciar entre: Reset de Power-on, Reset de Brown-out,
Reset de Watchdog ou Reset externo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
76
ULPWUE - Habilitao do modo de Despertar em extrema baixa potncia
1 - Liga Despertar em extrema baixa potncia
0 - Desliga Despertar em extrema baixa potncia
SBOREN - Habilitao por software do Reset de Brown-out
1 - Liga Reset de Brown-out
0 - Desliga Reset de Brown-out
POR - Flag de estado do Reset de Power-on
1 - No ocorreu Reset de Power-on
0 - Reset de Power-on ocorreu. Este bit dever ser limpo por software, depois de um Reset de Power-on acon-
tecer.
BOR - Flag de estado do Reset de Brown-out
1 - No ocorreu Reset de Brown-out
0 - Reset de Brown-out ocorreu. Este bit dever ser limpo por software, depois de um Reset de Brown-out
acontecer.
Registos PCL e PCLATH
O tamanho da memria de programa do PIC16F887 de 8k. Ento, tem 8192 posies para armazenar o pro-
grama. Por esta razo, o contador de programa tem de ter 13 bits (2^13 = 8192). Por forma a que o contedo
de qualquer posio seja alterada por software durante a operao, o seu endereo dever ser acessvel atravs
de algum SFR. Como os SFRs so todos de 8 bits, este registo articialmente criado, dividindo os seus 13
bits por dois registos independentes: PCLATH e o PCL.
Se a execuo do programa no interferir com o contador de programa, o valor deste registo automatica e
constantemente incrementado +1, +1, +1, +1 ... Desta forma, o programa executado como est escrito - in-
struo a instruo, seguindo um constante incremento de endereo de memria de programa.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
77
Se o contador de programa alterado pelo software, ento h alguns pontos a ter considerao, para evitar
problemas:
Os oito bits menos signicativos so provenientes do registo PCL, que legvel e escrevvel, quando os
cinco bits mais signicativos provem do registo PCLATH que apenas escrevvel.
O registo PCLATH limpo aquando de qualquer RESET.
Em linguagem assembler, o valor do contador de programa marcado como PCL, mas obviamente apenas
se refere aos 8 bits menos signicativos. O programador dever ter em ateno quando usar a instruo
ADDWF PCL. O resultado um salto na posio de memria, atravs da soma de um nmero ao actual
endereo. bastante usado quando de saltos para tabelas de converso (look-up). Um problema surge
quando esta soma se arrasta para mais dos 8 bits do registo PCL. No esquecer que, acima destes 8 bits,
j se trata do registo PCLATH.
Executando qualquer instruo para o registo PCL, simultaneamente causa os bits do contador de pro-
grama serem substituidos pelo conteudo do registo PCLATH. No entanto, o PCL tem acesso a apenas
8 bits do resultado da instruo, e o salto consequente ser totalmente errneo. O problema resolvido
colocando essas instrues em endereos terminando por 0xXX00. Isto possibilita o programa saltar at
255 posies. Se saltos maiores so executados por esta instruo, o PCLATH dever ser incrementado
em uma unidade para cada excesso do PCL (255 para 0).
Aquando da chamada, ou salto, para subrotinas (instrues CALL e GOTO), o microcontrolador dispe
apenas de 11 bits para enderear. Por esta razo, como a RAM que tambm dividida em bancos, a ROM
est dividida em pginas de 2k cada. Tais instrues so executadas dentro destas pginas, sem quais-
quer problemas. Simplesmente, como o processador tem 11 bits de endereo do programa, pode enderear
qualquer posio dentro dos 2KB. A gura abaixo explica em mais detalhe esta situao, como um salto

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
78
para a subrotina PP1.
No entanto, se a subrotina, ou endereo de salto, no est dentro da mesma pgina da origem do mesmo, os
dois bits superiores em falta devem ser escritos no PCLATH. Esta operao est descrita na gura abaixo,
como um salto para o endereo da subrotina PP2.
Registos do PCLATH
Em ambos os casos, quando a subrotina encontra as instrues RETURN, RETLW ou RETFIE (para voltar
ao programa principal), o microcontrolador vai simplesmente continuar a execuo do programa de onde tinha
deixado, pois o endereo de retorno foi armazenado na stack que, como mencionado, consiste de registos de
13 bits.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
79
Endereamento Indirecto
Juntamente com o endereamento indirecto, o qual lgico por si s, este microcontrolador capaz de fazer
endereamento indirecto atravs dos registos INDF e FSR. E, por vezes, simplica em muito a escrita do pro-
grama. Todo o procedimento possvel porque o registo INDF no um verdadeiro registo (sicamente no
existe), mas apenas especica o registo que dado pelo valor que est no FSR. Devido a isto, escrever ou ler
do INDF, signica que se est a ler ou a escrever no registo que dado pelo valor que est no FSR. Por outras
palavras, os endereos dos registos so especicados pelo FSR, e o contedo dos registos est armazenado no
INDF.
A diferena entre endereamento directo e indirecto, exemplicado na gura abaixo.
Endereamento Directo e Indirecto
Como se pode ver, o problema dos bits de endereos no existentes, solucionado por pedi-los emprestado
de outro registo. Desta vez, o stimo bit chamado IRP, do registo STATUS.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
80
Portas I/O - Entrada/Sada
Funcionalidades e Funes
Uma das mais importantes funcionalidades do microcontrolador, o nmero de pinos I/O usados para ligao
aos perifricos externos. Neste caso do PIC16F887, h um total de 35 pinos I/O de uso geral.
De maneira a que o funcionamento dos pinos I/O coincida com a organizao a 8 bits, todos eles esto, simi-
larmente aos registos, agrupados em Portas denominadas A, B, C, D e E.
Todas tem caractersticas em comum:
Por razes prticas, a maioria dos pinos I/O tm vrias funes. Se um pino usado para uma qualquer
funo, no pode ser usado como I/O;
Cada porta tem um par, isto , o correspondente registo TRIS: TRISA, TRISB, TRISC, TRISD e TRISE,
que determina o funcionamento, mas no o contedo.
Limpando os bits do TRIS (bit=0), o correspondente pino da Porta congurado como Sada.
De igual forma, activando os bits do TRIS (bit=1), o correspondente pino da Porta congurado como En-
trada.
Esta regra simples de memorizar: 0 = Output (Sada), 1 = Input (Entrada)

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
81
Portas I/O - Entrada/Sada
Registos PORTA e TRISA
A Porta A um registo de 8 bits bidireccionais. Os bits do TRISA e ANSEL controlam os pinos da PORTA.
Todos os pinos da PORTA funcionam como I/O digital, e cinco deles ainda podem trabalhar como entradas
analgicas (descritas a AN):
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
82
Similarmente aos bits do TRISA, que determinam quais dos pinos vo ser congurados como entrada ou
sada, os bits respectivos do ANSEL determinam quais os pinos que vo ser usados como entradas analgicas
ou I/O digitais.
RA0 = AN0 (determinado pelo bit ANS0 do registo ANSEL);
RA1 = AN1 (determinado pelo bit ANS1 do registo ANSEL);
RA2 = AN2 (determinado pelo bit ANS2 do registo ANSEL);
RA3 = AN3 (determinado pelo bit ANS3 do registo ANSEL); e
RA5 = AN4 (determinado pelo bit ANS4 do registo ANSEL).
Cada bit desta porta tem uma funco adicional, relacionada com algum perifrico interno. Estas funes
adicionais vo ser discutidas mais frente.
Unidade ULPWU
O microcontrolador normalmente usado em dispositivos que tem que funcionar periodicamente e, comple-
tamente independentemente, usando energia de baterias. Nestes casos, o consumo de energia dever ser o mais
reduzido possvel e prioritrio. Exemplos tpicos dessas so: termmetro, sensores de deteco de incndio e
produtos de baixo consumo similares. Tambm sabido que, uma reduo na frequncia de relgio reduz o
consumo energtico, ento, uma das mais convenientes solues para esta situao reduzir o relgio (usar um
cristal de 32KHz em vez de 4MHz ou 20MHz).

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
83
Colocar o microcontrolador em modo de adormecido
(Sleep) outro passo a dar. No entanto, mesmo com ambas
as medidas aplicadas, outra situao aparece. Como acordar
o microcontrolador, e coloc-lo em modo normal de opera-
o. obviamente necessrio ter um sinal externo, que mude
de estado lgico em um dos pinos. Mesmo assim, a situao
ainda persisnte. Este sinal dever ser gerado por electrnica
adicional, o que causa um aumento do consumo de energia
do sistema.
A soluo ideal ser a de, o microcontrolador, acordar szinho peridicamente, o que perfeitamente possvel.
O circuito que o permite fazer, mostrado aqui.
O princpio de operao simples:
Um pino congurado como sada, e activado a nvel lgico 1. Isso causa o condensador ser carregado.
Imediatamente depois, o mesmo pino congurado como entrada. A mudana de estado lgico, habilita uma
interrupo, e o microcontrolador posto em modo Sleep.
Seguidamente no h nada a fazer, excepto aguardar que o condensador se descarregue, atravs da corrente
de fuga que ui pelo pino de entrada. Quando isso ocorre, uma interrupo gerada e o microcontrolador
continua a execuo do programa em modo normal. A sequncia outra vez repetida.
Teoricamente, esta uma soluo perfeita. O problema que, todos os pinos possveis de gerar uma interrup-
o, so digitais, e tem uma corrente de fuga excessivamente grande, quando a sua voltagem no est prxima
dos limites de Vdd ou Vss. Neste caso, o condensador descarregado rapidamente, pois a corrente de descarga
de vrias centenas de microamperes. Esta a razo pela qual o circuito ULPWU foi desenhado para ter lentas
quedas de tenso, e muito baixo consumo. A sua sada gera uma interrupo, enquanto que a entrada ligada
a um dos pinos do microcontrolador. Est no pino RA0. Vendo a gura abaixo, com R=200ohms e C=1nF,
descarrega em aproximadamente 30ms, enquanto que o consumo total do microcontrolador reduz-se em 1000
vezes (algumas centenas de nanoamperes).
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
84
Unidade ULPWU
Registos PORTB e TRISB
A Porta B um registo de 8 bits bidireccionais. Os bits do registo TRISB determinam a funo dos seus
pinos.
Similarmente Porta A, um 1 lgico no registo TRISB, congura o pino respectivo como entrada, e vice-versa.
Seis pinos desta porta podem ser congurados como entrada analgica (AN). Os bits do registo ANSELH
determinam quais destes pinos vo trabalhar como entradas analgicas ou I/O digitais.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
85
RB0 = AN12 (determinado pelo bit ANS12 do registo ANSELH);
RB1 = AN10 (determinado pelo bit ANS10 do registo ANSELH);
RB2 = AN8 (determinado pelo bit ANS8 do registo ANSELH);
RB3 = AN9 (determinado pelo bit ANS9 do registo ANSELH);
RB4 = AN11 (determinado pelo bit ANS11 do registo ANSELH); e
RB5 = AN13 (determinado pelo bit ANS13 do registo ANSELH).
Cada bit desta porta tem uma funo adicional, relacionada com algum perifrico interno. Estas funes adi-
cionais vo ser discutidas mais frente.
Todos os pinos desta porta tem resistncias pull-ups internas, o que faz deles ideais para ligar botes-
de-presso, interruptores, foto-acopladores, entre outros. De forma a ligar estas resistncias s portas dos
microcontroladores, o bit apropriado do registo WPUB deve ser activado.
Alm dos bits do WPUB, h outro bit que afecta a operao das resistncias pull-up: o bit RBPU do registo
OPTION_REG. um bit de uso geral, porque afecta a instalao global destas resistncias.
Sendo de alta impedncia, estes resistncias virtuais no afectam os pinos congurados como sadas, mas
servem de extraordinria ajuda para as entradas. Assim, esto ligadas s entradas dos circuitos lgicos CMOS.
De outra maneira, comportar-se-iam como se estivessem a utuar, devido ao estado de alta impedncia.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
86
Resistncias de Pull-up
Se habilitado, cada pino da Porta B congurado como entrada, pode causar uma interrupo, mudando o
seu estado lgico. De maneira a habilitar os pinos que podem gerar a interruo, o bit respectivo no registo
IOCB dever ser activado.
Devido a estas particularidades, os pinos da Porta B so normalmente usados para ligar botes-de-presso, ou
teclados, pois no h necessidade de perder ciclos de programa a fazer o varrimento destas entradas.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
87
Exemplo de Teclado
Quando os pinos X, Y e Z esto conguradas como sadas activadas ao estado lgico 1, apenas necessrio
esperar por um pedido de interrupo, que chega quando qualquer boto premido. Fazendo, ento, o var-
rimento das teclas, pode encontrar-se qual a que est a ser premida.
Pino RB0/INT
O pino RB0/INT uma fonte verdadeira de interrupo externa. Pode ser congurado para reagir a um anco
ascendente ou descentence. O bit INTEDG do registo OPTION_REG selecciona qual o sinal.
Pinos RB6 e RB7
O leitor j deve ter notado que o microcontrolador PIC no tem quaisquer pinos especiais para a programao
(escrever para a memria de programa). Os pinos I/O normalmente usados para o funcionamento normal, so
usados para este m (RB6 para o clock e RB7 para dados). Tambm, necessrio alimentar o chip com 5V em
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
88
Vdd e 0V em Vss, como tambm a tenso de programao Vpp da FLASH (12-14V). Durante a programa-
o, a tenso Vpp aplicada no pino de Reset (MCLR).
Apesar destas ligaes serem necessrias, o microcontrolador pode ser gravado mesmo estando j montado
no sistema nal. Normalmente, um programa j gravado pode ser alterado pelo mesmo processo. Esta funo
chama-se ICSP (In-Circuit Serial Programming - Programao Srie Dentro do Circuito).
necessrio planear o sistema, se se pretende usar esta funcionalidade.
No nada de complicado, basta instalar um conector de 5 pinos no sistema a gravar, para que as tenses do
hardware programador possam aceder ao microcontrolador. De maneira a que estas tenses no interram
com a restante electrnica, dever ser pensado um circuito para travar as mesmas, usando resistncias, dodos
ou jumpers.
Ligao ICSP
Registos PORTC e TRISC
A Porta C um registo de 8 bits bidireccionais. Os bits do registo TRISC determinam a funo dos seus pinos.
Todas as funes adicionais desta porta, sero explicadas mais frente.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
89
Registos PORTD e TRISD
A Porta D um registo de 8 bits bidireccionais. Os bits do registo TRISD determinam a funo dos seus
pinos.
Registos PORTE e TRISE
A Porta E um registo de 8 bits bidireccionais. Os bits do registo TRISE determinam a funo dos seus pinos.
A nica excepo o pino RE3, que apenas serve de entrada, e o seu bit TRIS l sempre 1.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
90
Similarmente s Portas A e B, trs pinos podem ser congurados como entradas analgicas. Os bits do registo
ANSELH determinam se o pino vai funcionar como entrada analgica (AN), ou se como I/O digital :
RE0 = AN5 (determinado pelo bit ANS5 do registo ANSELH);
RE1 = AN6 (determinado pelo bit ANS6 do registo ANSELH); e
RE2 = AN7 (determinado pelo bit ANS7 do registo ANSELH).
Registos ANSEL e ANSELH
Ambos estes registos so usados para congurar os pinos como analgico, ou I/O digital.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
91
Como faz-lo:
Para congurar um pino como entrada analgica, o bit respectivo do ANSEL, ou ANSELH, dever ser acti-
vado a 1. Para congurar o pino como I/O digital, o bit respectivo dever ser desactivado (0).
O estado dos bits ANSEL, no tem qualquer efeito nas funes de sada digitais. O resultado de qualquer
tentativa de leitura de um pino congurado como entrada analgica, 0.


www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
92
Quando se projecta um sistema, escolher a porta atravs da qual o microcontrolador vai comunicar com os
perifricos circundantes. Se se pretender usar apenas I/O digitais, pode escolher-se qualquer das portas. Se
se pretender usar algumas das entradas analgicas, dever escolher-se as portas apropriadas que suportam
essa congurao, AN0-AN13;
Qualquer pino pode ser congurado como entrada ou sada, excepto o RE3 apenas como entrada. Os bits
dos TRISA, TRISB, TRISC, TRISD e TRISE, determinam como os respectivos pinos das PORTA,
PORTB, PORTC, PORTD e PORTE se vo comportar;
Se se usarem quaisquer entradas analgicas, activar o bit respectivo no ANSEL e ANSELH, no incio do
programa;
Se se usarem interruptores ou botes-de-presso, devero ser ligados Porta B, porque esta tm resistncias
de pull-up. O uso destas resistncias habilitado pelo bit RBPU no OPTION_REG, e onde a activao
de resistncias individualmente possivel nos bits do WPUB; e
normalmente necessrio reagir, assim que os pinos de entrada mudam de estado lgico. No entanto, no
necessrio escrever um programa para mudar o estado lgico dos pinos. mais simples ligar estas entradas
aos pinos da PORTB, e habilitar a interrupo a cada mudana de estado lgico. Os bits dos registos
IOCOB e INTCON servem para tal.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
93
Temporizadores
Os temporizadores deste PIC, podem ser descritos sucintamente. H apenas trs temporizadores/contadores
totalmente independentes, mas dados como TMR0, TMR1 e TMR2. Mas no to simples quanto isso.
Temporizador TMR0
O temporizador TMR0 permite uma panplia de aplicaes prticas. bastante conveniente, e simples, de
usar, para gerar pulsos de durao arbitrria, medio do tempo, ou para contar pulsos externos. Isto tudo
quase sem limitaes.
O TMR0 um temporizador/contador de 8 bits, com as seguintes funcionalidades:
Temporizador/contador de 8 bit;
Divisor de 8 bit, partilhado com o Watchdog;
Fonte de relgio interna, ou externa, programavel;
Interrupo por m de contagem (255 -> 0);
Seleco do anco do relgio externo.
A gura abaixo representa o TMR0 com todos os bits que determinam a sua operao. Estes bits so armaze-
nados no registo OPTION_REG.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
94
Temporizador TMR0
Registo OPTION_REG
RBPU - Bit de habilitao dos Pull-ups da PORTB
0 - Os pinos da PORTB podem ser ligados a resistncias de Pull-up
1 - As resistncias de pull-up esto desactivadas
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
95
INTEDG - Bit de seleco do anco da Interrupo
0 - Interrupo no anco descendente no pino INT
1 - Interrupo no anco ascendente no pino INT
T0CS - Bit de seleco do relgio do TMR0
0 - Relgio interno (Fosc/4)
1 - Relgio atravs dos pulsos no pino RA4
T0SE - Bit de seleco do anco de incrementao do TMR0
0 - Incrementa no anco ascendente no pino RA4
1 - Incrementa no anco descendente no pino RA4
PSA - Bit de atribuio do Divisor
0 - Divisor atribuido ao TMR0
1 - Divisor atribuido ao Watchdog
PS2, PS1, PS0 - Bit de seleco da taxa de diviso
A taxa de diviso ajustada, combinando estes trs bits. Como se pode ver na tabela abaixo, a mesma
combinao dos bits, atribui diferentes taxas para o TMR0 e para o Watchdog, respectivamente.
PS2 PS1 PS0 TMR0 WDT
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 0 1:32 1:16
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128

A funo do bit PSA, descrita nas duas guras abaixo:

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
96
Funo do bit PSA = 0
Funo do bit PSA = 1
Como se v, o estado lgico do bit PSA determina qual a atribuio do divisor: se para o TMR0, se para o
Watchdog.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
97
Tambm, de valor acrescentar:
Quando o divisor atribuido ao TMR0, qualquer escrita no mesmo vai tambm limpar o divisor;
Quando o divisor atribuido ao Watchdog, a instruo CLRWDT vai limpar ambos o divisor e o WDT;
Escrever para o registo TMR0, usado como temporizador, no d o incio de qualquer contagem, mas sim
aps dois ciclos de relgio. Ento necessrio ajustar o valor escrito no registo TMR0;
Quando o microcontrolador posto em modo Sleep, o oscilador desligado. O overow (m de contagem,
255->0) no pode acontecer, pois no h pulsos para contar. por esta razo que, a interrupo por over-
ow do TMR0, no pode acordar o microcontrolador;
Quando usado como contador de pulsos externos, sem divisor, a durao mnima do pulso, ou pausa,
dever ser de 2 Tosc + 20ns. Tosc o periodo do oscilador interno;
Quando usado como contador de pulsos externos, com divisor, a durao mnima do pulso, ou pausa,
dever ser de 10ns;
O registo, do divisor de 8 bits, no est disponivel ao programador, o que signica que no pode ser directa-
mente lido/escrito;
Aquando da mudana da atribuio do divisor, do TMR0 para o Watchdog, a seguinte sequncia de in-
strues dever ser feita, de maneira a evitar um Reset:

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
98
BANKSEL TMR0
CLRWDT ;CLEAR WDT
CLRF TMR0 ;CLEAR TMR0 AND PRESCALER
BANKSEL OPTION_REG
BSF OPTION_REG,PSA ;PRESCALER IS ASSIGNED TO THE WDT
CLRWDT ;CLEAR WDT
MOVLW b11111000 ;SELECT BITS PS2,PS1,PS0 AND CLEAR
ANDWF OPTION_REG,W ;THEM BY INSTRUCTION LOGICAL AND
IORLW b00000101 ;BITS PS2, PS1, AND PS0 SET
MOVWF OPTION_REG ;PRESCALER RATE TO 1:32
Da mesma forma, aquando da mudana da atribuio do divisor, do Watchdog para o TMR0, a seguinte
sequncia de instrues dever ser feita:
BANKSEL TMR0
CLRWDT ;CLEAR WDT AND PRESCALER
BANKSEL OPTION_REG
MOVLW b11110000 ;SELECT ONLY BITS PSA,PS2,PS1,PS0
ANDWF OPTION_REG,W ;CLEAR THEM AFTERWARDS BY INSTRUCTION
;LOGICAL AND
IORLW b00000011 ;PRESCALER RATE IS 1:16
MOVWF OPTION_REG
De maneira a usar o TMR0 convenientemente, necessrio:
Seleccionar o modo:
O modo do TMR0 escolhido com o bit T0CS do OPTION_REG: 0=temporizador, 1=contador;
Quando usado, o divisor dever ser atribuido ao TMR0, desactivando o bit PSA do OPTION_REG. A

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
99
taxa do divisor atribuida pelos bits PS2-PS0 do mesmo registo; e
Quando se usa a interrupo, os bits GIE e TMR0IE do INTCON, devero ser activados.
Para medir tempo:
Limpar o valor do TMR0, ou escrever um valor conhecido;
O tempo decorrido (em microsegundos, quando se usa um cristal de 4MHz) medido lendo o TMR0; e
A ag TMR0IF do registo INTCON, automativamente activada, a cada vez que h um overow do
TMR0. Se activada, gerada uma interrupo.
Para contar pulsos:
A polaridade dos pulsos a contar no pino Ra4, seleccionada pelo bit T0SE do OPTION_REG: 0=anco
ascendente, 1=anco descendente; e
O nmero de pulsos pode ser lido do registo TMR0. O divisor, e interrupo, so usados da mesma ma-
neira do medidor de tempo.
Temporizador TMR1
O mdulo TMR1 um temporizador/contador de 16 bit, o que signica que tem dois registos, TMR1L e
TMR1H. Pode contar at 65535 pulsos num s ciclo, ou seja, antes do contador retornar a zero (overow).
Temporizador TMR1

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
100
Similarmente ao TMR0, estes registos podem ser lidos/escritos a qualquer momento. Em caso de overow,
uma interrupo gerada.
O TMR1 pode funcionar em um de dois modos bsicos: como temporizador, ou como contador. No entanto,
ao contrrio do TMR0, cada um destes mdulos tem funoes adicionais.
Partes do registo T1CON, controlam o funcionamento do TMR1.
Panormica do Temporizador TMR1
Divisor do TMR1
O TMR1 tem um divisor separado, o que permite divises por 1, 2, 4 ou 8, da entrada de relgio. No se pode
ler/escrever directamente o divisor. No entanto, o contador do divisor automaticamente limpo aquando de
uma escrita nos registos TMR1H ou TMR1L.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
101
Oscilador do TMR1
Os pinos RC0/T1OSO e RC1/T1OSI so usados para registar os pulsos dos perifricos externos, mas tam-
bm tem uma funcionalidade acrescida. Como se pode ver pela gura abaixo, so simultaneamente congura-
dos como entradas, pino RC1, e como sada, pino RC0, do oscilador adicional de baixa potncia de quartzo.
Este circuito adicional, principalmente desenhado para funcionar a baixas frequncias (at 200KHz), mais
precisamente, para ser usado com cristais de quartzo de 32.768 KHz. Estes cristais so usados nos relgios de
quartzo, pois simples de obter pulsos de um segundo, simplesmente dividindo a frequncia.
Como este oscilador no depende do relgio interno, pode funcionar quando no modo de Sleep. activado
pelo bit T1OSCEN do registo T1CON. O programador deve certicar-se que aguarda alguns milisegundos,
para garantir um bom arranque deste oscilador.
Oscilador do TMR1
A tabela abaixo, mostra os valores recomendados para os condensa-
dores do cristal de quartzo. Estes valores no tem necessriamente
de ser exactos.
Oscillator Frequency C1 C2
LP 32 kHz 33 pF 33 pF
LP 100 kHz 15 pF 15 pF
LP 200 kHz 15 pF 15 pF
Gate do TMR1
A origem da gate do TMR1 (interruptor que liga ou desliga), controlado por software para ser o pino TG1
ou a sada do comparador C2. Esta gate permite ao TMR1 contar eventos de estado lgico no pino TG1, ou
eventos analgicos usando a sada do comparador C2. Ver gura a baixo. De maneira a medir a durao de um
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
102
sinal, suciente ligar esta gate, e contar os pulsos que vo passando pela mesma.
TMR1 em modo de Temporizador
De maneira a seleccionar este modo, necessrio limpar o bit TMR1CS. Depois disto, o registo de 16 bits vai
ser incrementado a cada pulso que chegar do oscilador interno. Se um cristal de 4MHz estiver a ser usado, vai
haver uma incrementao a casa microsegundo.
Neste modo, o bit T1SYNC no afecta o temporizador, porque o mesmo est a contar pulsos do relgio
interno. Como toda a electrnica usa estes pulsos, no h necessidade de sincronizao.
TMR1 em modo de Temporizador
O relgio oscilador do microcontrolador no funciona durante o modo Sleep. Devido a isto, o Overow do
TMR1 no causa nenhuma interrupo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
103
Oscilador do TMR1
O consumo energtico do microcontrolador reduzido, ao seu nvel mnimo, quando no modo Sleep. O objec-
tivo parar o oscilador.
De qualquer forma, simples colocar o TMR1 neste modo - escrevendo uma instruo de SLEEP no pro-
grama. Surge o problema de como acordar o microcontrolador, porque apenas uma interrupo o pode fazer.
Como o microcontrolador dorme, uma interrupo tem que ser gerada por electrnica externa.
Oscilador do TMR1
De modo a resolver esta situao, um oscilador de baixo consumo a quartzo, que funciona quando no modo
Sleep, foi desenhado dentro do PIC. Aquilo que dantes era externo ao microcontrolador, est agora embutido
no silcio e destinado ao TMR1.
O oscilador ligado, activando o bit T1OSCEN do registo T1CON. Seguidamente, o bit TMR1CS usado
para indicar que o TMR1 usa pulsos desse oscilador.
O sinal deste oscilador de quartzo sincronizado, com o relgio do microcontrolador, desactivando o bit
T1SYNC. Neste caso, o TMR1 no pode trabalhar no modo Sleep. Simplesmente porque o circuito de
sincronizao usa o relgio do microcontrolador; e
A interrupo por Overow do TMR1 pode ser habilitada. Estas interrupes vo ocorrer no modo de
Sleep.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
104
TMR1 em modo de Contador
O TMR1 inica o seu funcionamento como contador, activando o bit TMR1CS. Signica que, o TMR1,
incrementado a cada anco ascendente do pino T1CKI. Se o bit de controlo T1SYNC estiver desactivado, os
pulsos externos vo ser sincronizados. Por outras palavras, o TMR1 sincronizado com o relgio de sistema
do microcontrolador, o que o torna um Contador Sncrono.
Quando o microcontrolador, funcionando desta maneira, posto em Sleep, os registos TMR1H e TMR1L
no so incrementados, mesmo havendo pulsos externos na entrada T1CKI. Como o relgio do sistema no
funciona quando em Sleep, no h relgio para sincronizao. No entanto, o divisor mantm o seu funciona-
mento, pois apenas um divisor de frequncia.
TMR1 em modo Contador
Este contador regista estados lgicos 1 na sua entrada.
importante compreender que, pelo menos, um anco de-
scendente tem que ser registado, antes do primeiro anco
ascendente. Ver gura abaixo. A seta mostra quando o
TMR1 incrementa.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
105
Registo T1CON
T1GINV - Bit de inverso da Gate do TMR1, serve de inverso do estado lgico do pino T1G ou da sada
do comparador C2 (C2OUT). Permite que o TMR1 incrementa, tanto quando recebe pulsos de anco ascen-
dente, como de anco descendente.
1 - TMR1 incrementa a cada anco ascendente; e
0 - TMR1 incrementa a cada anco descendente.
TMR1GE - Bit que habilita a Gate do TMR1, que determina se a gate do pino T1G, ou a sada do compara-
dor C2, vai estar activa, ou no. Este bit s funcional, se o bit TMR1ON estiver activo. De outra maneira, o
TMR1GE ignorado.
1 - TMR1 est ligado, apenas se a Gate estiver desligada; e
0 - A gate no afecta o funcionamento do TMR1
T1CKPS1, T1CKPS0 - Bits de seleco do divisor de frequncia da entrada de relgio do TMR1
T1CKPS1 T1CKPS0 Prescaler Rate
0 0 1:1
0 1 1:2
1 0 1:4
1 1 1:8
T1OSCEN - Bit que habilita o Oscilador de Baixa Potncia
1 - Oscilador de baixa potncia est activo como relgio do TMR1; e
0 - Oscilador de baixa potncia est desligado.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
106
T1SYNC - Bit de sincronizao do relgio externo do TMR1, habilita a sincronizao dos pulsos de entrada
no T1CKI ou pelo oscilador de baixa potncia. Quando conta pulsos do oscilador interno (TMR1CS=0), este
bit ignorado.
1 - No sincroniza a entrada externa de relgio; e
0 - Sincroniza a entrada externa de relgio.
TMR1CS - Bit de seleco da fonte de relgio do TMR1
1 - Conta pulsos do pino T1CKI, no anco ascendente; e
0 - Conta pulsos pelo relgio interno do microcontrolador.
TMR1ON - Bit que habilita o TMR1
1 - Liga o TMR1; e
0 - Desliga o TMR1.
De forma usar o TMR1 correctamente, necessrio o seguinte:
Como no possivel desligar o divisor, a sua taxa de diviso ajustada pelos bits T1CKPS1 e T1CKPS0,
do registo T1CON;
O modo dever ser escolhido pelo bit TMR1CS: 0=clock interno, 1=pulsos externos;
Activando o bit T1OSCEN, o TMR1 ligado, e os registos TMR1H e TMR1L so incrementados a cada
pulso do cristal externo. A contagem pra quando este bit desactivado;
O divisor limpo, quando se limpa ou escreve nos registos contadores TMR1H e TMR1L; e
Quando os registos TMR1H e TMR1L excedem o seu valor, a ag TMR1IF activada, e a contagem
comea do zero.
Temporizador TMR2
O temporizador TMR2 um mdulo temporizador que funciona de uma maneira especca, e controlado
por bits do registo T2CON.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
107
Temporizador TMR2
Os pulsos do oscilador interno, passam primeiro pelo divisor, em que a taxa pode ser alterada pelos bits
T2CKPS1 e T2CKPS0. A sada do divisor ento usada para incrementar o registo do TMR2, comeando
de 0x00.
Os valores do TMR2 e PR2, so constantemente comparados, e o TMR2 constantemente incrementado
at que o seu valor coincida com o de PR2. Quando ambos coincidem, o TMR2 automaticamente posto a
0x00. O ps-divisor incrementando, e a sua sada usada para gerar uma interrupo, se a mesma estiver
habilitada.
Ambos os registos TMR2 e PR2 so possiveis de ler e escrever. A contagem interrompida a qualquer mo-
mento, desactivando o bit TMR2ON, o que contribui para a poupana de energia.
Como opo extra, o momento do Reset do TMR2 pode, tambm, ser usado para determinar a velocidade de
comunicaes sncronas srie.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
108
Registo T2CON
TOUTPS3 - TOUTPS0 - Bits de seleco da taxa de diviso do ps-divisor do TMR2:
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 Postscaler Rate
0 0 0 0 1:1
0 0 0 1 1:2
0 0 1 0 1:3
0 0 1 1 1:4
0 1 0 0 1:5
0 1 0 1 1:6
0 1 1 0 1:7
0 1 1 1 1:8
1 0 0 0 1:9
1 0 0 1 1:10
1 0 1 0 1:11
1 0 1 1 1:12
1 1 0 0 1:13
1 1 0 1 1:14
1 1 1 0 1:15
1 1 1 1 1:16
TMR2ON - Bit que liga o TMR2
1 - TMR2 est ligado;
0 - TMR2 est desligado.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
109
T2CKPS1, T2CKPS0 - Bits de seleco da taxa de diviso do divisor do TMR2
T2CKPS1 T2CKPS0 Prescaler Rate
0 0 1:1
0 1 1:4
1 x 1:16

Quando se usa o TMR2, no devero ser esquecidos alguns detalhes que tem a ver com os seus registos:
Quando do Power-on, o registo PR2 tem o valor de 0xFF;
Ambos o divisor e ps-divisor, so limpos quando se escreve para o TMR2;
Ambos o divisor e ps-divisor, so limpos quando se escreve para o T2CON;
Em qualquer Reset, ambos o divisor e ps-divisor so limpos.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
110
Mdulos CCP
Capture/Compare/PWM - Captura/Compara/PWM
O mdulo CCP um perifrico que permite, ao programador, controlar e medir o tempo de diversos eventos.
Modo de Captura - permite a medio do tempo de durao de um evento. Este circuito monitoriza o estado
do TMR1, que constantemente muda de valor.
Modo de Comparao - compara valores entre os registos do TMR1 e CCPR. Tambm permite, ao pro-
gramador, gerar um sinal quando um determinado tempo j expirou.
Modo de PWM - Pulse Width Modulation = Modulao por Largura de Impulsos - gera sinais de frequncia
e Duty-Cycle variaveis.
O PIC 16F887 tem dois destes mdulos: CCP1 e CCP2.
Ambos so idnticos nas suas funes, com a excepo das funcionalidades avanadas do CCP1.
Mdulo CCP1
Uma parte importante deste circuito, o registo CCPR1 de 16 bits, que consiste nos registos CCPR1L e
CCPR1H. usado para capturar, ou comparar com o TMR1 (TMR1H and TMR1L).
Mdulo CCP1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
111
No modo de comparao, se habilitado por software, o Reset do temporizador TMR1 pode ocorrer com
coincidncia de valores. Alm disto, o mdulo CCP1 pode gerar sinais PWM, de frequncia e duty-cycle
variaveis.
Os bits do registo CCP1CON, controlam o mdulo CCP1.
Modo de Captura com CCP1
Neste modo, o TMR1 copiado para o CCP1, nas seguintes situaes:
Cada anco descendente no pino RC2/CCP1;
Cada anco ascendente no pino RC2/CCP1;
Cada 4 anco ascendente no pino RC2/CCP1;
Cada 16 anco ascendente no pino RC2/CCP1.
A combinao dos quatro bits (CCP1M3 - CCP1M0) do registo de controlo, determina destas situaes quais
vo disparar a transferncia dos 16 bits. Tambm, o pino RC2/CCP1 dever estar congurado como entrada,
e o TMR1 dever funcionar como temporizador ou contador sncrono.
CCP1 em modo de Captura

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
112
A ag CCP1IF activada quando a captura feita. Se tal acontecer, e se o bit PIE estiver activado, ento uma
interrupo gerada.
Quando o modo de captura mudado, interrupes de captura no desejaveis podero ser geradas. De maneira
a evitar esta situao, ambos os bits CCP1IE e CCP1IF devero ser desactivados, antes de fazer qualquer
mudana.
Interrupes no desejaveis tambm podero ser geradas, ao mudar de um divisor de captura para outro. Para
evitar esta situao, o mdulo CCP1 deve ser temporriamente desligado, antes de mudar de divisor.
recomendada a seguinte sequncia de comandos:
BANKSEL CCP1CON
CLRF CCP1CON ;CONTROL REGISTER IS CLEARED
;CCP1 MODULE IS OFF
MOVLW XX ;NEW PRESCALER MODE IS SELECTED
MOVWF CCP1CON ;NEW VALUE IS LOADED TO THE CONTROL REGISTER
;CCP1 MODULE IS SIMULTANEOUSLY SWITCHED ON
Modo de Comparao com CCP1
Neste modo, o valor do CCP1 constantemente comparado com o valor do TMR1. Quando os valores co-
incidem, o estado lgico da sada RC2/CCP1 pode alterar, o que vai depender do estado dos bits CCP1M3
- CCP1M0. A ag CCP1IF , tambm, simultaneamente activada.
Para congurar o mdulo CCP1 para funcionar deste modo, duas condies devem ser verdadeiras:
- O Pino RC2/CCP1 dever ser congurado como sada;
- O temporizador TMR1 dever ser sicronizado com o clock interno.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
113
CCP1 em modo de Comparao
Modo de PWM com CCP1
Sinais com frequncia e duty-cycle variavel, tem uma grande aplicao em automao. Um exemplo tpico
um circuito de controlo de potncia, que est na gura abaixo. Se um estado lgico 0 representa o interruptor-
desligado, e um estado lgico 1 representa o interruptor-ligado, a energia que a carga consome, directamente
proporcional durao do pulso. Esta relao chamada de Duty-Cycle, ou ciclo-activo.
CCP1 em modo de PWM
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
114
Outro exemplo muito comum, o uso de sinais PWM para gerar sinais ou formas de onda arbitrrias, como
por exemplo uma onda sinusoidal.
CCP1 em modo de PWM, com ltragem
Dispositivos que funcionam desta maneira, so frequentemente usados como reguladores comutados, que con-
trolam o funcionamento de motores: velocidade, acelerao, desacelerao, etc.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
115
Mdulo PWM
A gura acima, mostra o diagrama de blocos do mdulo CCP1 congurado no modo de PWM. De maneira
a gerar pulsos de forma arbitrria no pino de sada, necessrio determinar dois valores: a frequncia do pulso
e a sua durao.
Modo PWM
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
116
Periodo do PWM
O periodo (T) do pulso de sada especicado pelo registo PR2 do TMR2. O periodo do PWM pode ser
calculado pela seguinte equao:
PWM Periodo (T) = (PR2 +1) * 4Tosc * Valor Divisor TMR2
Se o periodo do PWM fr conhecido, facil de calcular a frequncia, pois esta o inverso do periodo -> F =
1 / T.
Duty-Cycle do PWM
O Duty-Cycle do PWM congurado usando 10 bits: oito MSbs (bits mais signicativos) do registo CCP1RL
e dois adicionais LSbs (bits menos signicativos) do registo CCP1CON (DC1B1 e DC1B0). O resultado
um nmero de 10 bits, presente na frmula:
Duty-Cycle = Largura do Pulso = (CCPR1L,DC1B1,DC1B0) * Tosc * Valor Divisor TMR2
A tabela seguinte, mostra como gerar sinais PWM de frequncia variavel, se se usar um cristal quartzo de
20MHz (Tosc=50ns)
Frequency [KHz] 1.22 4.88 19.53 78.12 156.3 208.3
TMR2 Prescaler 16 4 1 1 1 1
PR2 Register FFh FFh FFh 3Fh 1Fh 17h
A lembrar:
O pino de sada ser constantemente activado, caso a Largura do Pulso seja maior que o periodo do
PWM;
Nesta aplicao, o ps-divisor do TMR2 no pode ser usado para gerar periodos maiores de PWM.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
117
Resoluo do PWM
Um sinal de PWM no mais que uma sequncia de pulsos, com largura do pulso variavel. Para uma de-
terminada frequncia (nmero de pulsos por segundo), h um nmero limitado de combinaes de larguras
de impulso. Este nmero chamado de resoluo, e medido em bits. Por exemplo, uma resoluo de 10 bits,
resulta em 1024 larguras de impulso, onde uma resoluo de 8 bits, resulta em 256 larguras de impulso.
Relativamente a este microcontrolador, a resoluo especicada pelo PR2. O valor mximo obtido escre-
vendo 0xFF.
Frequncias e resoluo do PWM, com Fosc de 20MHz:
PWM Frequency 1.22kHz 4.88kHz 19.53kHz 78.12kHz 156.3kHz 208.3kHz
Timer Prescale 16 4 1 1 1 1
PR2 Value FFh FFh FFh 3Fh 1Fh 17h
Maximum Resolution 10 10 10 8 7 6
Frequncias e resoluo do PWM, com Fosc de 8MHz:
PWM Frequency 1.22kHz 4.90kHz 19.61kHz 76,92kHz 153.85kHz 200.0kHz
Timer Prescale 16 4 1 1 1 1
PR2 Value 65h 65h 65h 19h 0Ch 09h
Maximum Resolution 8 8 8 6 5 5
Registos CCP1CON
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
118
P1M1, P1M0 - bits de congurao da sada de PWM - em todos os modos, excepto no PWM, o pino P1A
a entrada do mdulo de Captura/Comparao. Os pinos P1B, P1C e P1D so I/O da Porta D. No modo de
PWM, estes bits afectam o mdulo CCP1, como mostra a tabela abaixo:
P1M1 P1M0 Mode
0 0
PWM com sada nica
Pino P1A, sada de sinal modulado,
Pinos P1B, P1C e P1D so I/O da porta D
0 1
Congurao em Ponte completa
Pino P1D, sada de sinal modulado
Pino P1A est activo
Pinos P1B e P1C esto inactivos
1 0
Congurao em Meia Ponte
Pinos P1A e P1B, sada modulada de sinal
Pinos P1C e P1D so I/O da porta D
1 1
Congurao em Ponte completa Reversa
Pino P1B, sada de sinal modulado
Pino P1C est activo
Pinos P1A e P1D esto inactivos
DC1B1, DC1B0 - MSbs do Duty-Cycle do PWM - so apenas usados no modo de PWM, em que represen-
tam os dois bits menos signicativos de um nmero de 10 bit. Este nmero determina a Largura de Impulso
do sinal PWM. Os restantes 8 bits, esto armazenados no registo CCP1RL.
CCP1M3-CCP1M0 - bits de seleco do modo de CCP1 :
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
119
CCP1M3 CCP1M2 CCP1M1 CCP1M0 Mode
0 0 0 0 Mdulo desligado
0 0 0 1 No usado
0 0 1 0
Modo de Comparao
bit CCP1IF activado quando coincide
0 0 1 1 No usado
0 1 0 0
Modo de Captura
A cada anco descendente no pino CCP1
0 1 0 1
Modo de Captura
A cada anco ascendente no pino CCP1
0 1 1 0
Modo de Captura
A cada 4 anco ascendente no pino CCP1
0 1 1 1
Modo de Captura
A cada 16 anco ascendente no pino CCP1
1 0 0 0
Modo de Comparao
Sada e bit CCP1IF so activados quando coincide
1 0 0 1
Modo de Comparao
Sada desactivada e bit CCP1IF activado quando
coincide
1 0 1 0
Modo de Comparao
Chamada de interrupo e bit CCP1IF activado
quando coincide
1 0 1 1
Modo de Comparao
bit CCP1IF activado e registos de temporizadores
1 ou 2 so limpos
1 1 0 0
Modo de PWM
Pinos P1A e P1C so activos a 1
Pinos P1B e P1D so activos a 1
1 1 0 1
Modo de PWM
Pinos P1A e P1C so activos a 1
Pinos P1B e P1D so activos a 0
1 1 1 0
Modo de PWM
Pinos P1A e P1C so activos a 0
Pinos P1B e P1D so activos a 1
1 1 1 1
Modo de PWM
Pinos P1A e P1C so activos a 0
Pinos P1B e P1D so activos a 0
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
120
Mdulo CCP2
Excluindo a diferena de nomes de registos e bits, este mdulo uma boa cpia do CCP1, em modo normal.
H apenas uma diferena entre ambos, quando o CCP2 opera no modo de Comparao.
Essa diferena centra-se no sinal de Reset do TMR1. Nomeadamente, se o conversor A/D est ligado, no
momento em que os valores de TMR1 e CCPR2 coincidem, o sinal de Reset do TMR1 vai automaticamente
iniciar uma converso A/D.
Mdulo CCP2
Similarmente ao mdulo anterior, este circuito controlador pelos bits do registo CCP2CON.
Registo CCP2CON
DC2B1, DC2B0 - MSbs do Duty-Cycle do PWM - so apenas usados no modo de PWM, em que represen-
tam os dois bits menos signicativos de um nmero de 10 bit. Este nmero determina a Largura de Impulso
do sinal PWM. Os restantes 8 bits, esto armazenados no registo CCP2RL.
CCP2M3-CCP2M0 - bits de seleco do modo de CCP2
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
121
CCP2M3 CCP2M2 CCP2M1 CCP2M0 Mode
0 0 0 0 Mdulo desligado
0 0 0 1 No usado
0 0 1 0
No usado
No usado
0 0 1 1 No usado
0 1 0 0
Modo de Captura
A cada anco descendente no pino CCP2
0 1 0 1
Modo de Captura
A cada anco ascendente no pino CCP2
0 1 1 0
Modo de Captura
A cada 4 anco ascendente no pino CCP2
0 1 1 1
Modo de Captura
A cada 16 anco ascendente no pino CCP2
1 0 0 0
Modo de Comparao
Sada e bit CCP2IF so activados quando coincide
1 0 0 1
Modo de Comparao
Sada desactivada e bit CCP2IF activado quando
coincide
1 0 1 0
Modo de Comparao
Chamada de interrupo e bit CCP2IF activado
quando coincide e pino CCP2 no afectado
1 0 1 1
Modo de Comparao
bit CCP2IF activado, registos do TMR1 so lim-
pos, ADC arranca se o ADC estiver ligado quando
coincide
1 1 x x Modo de PWM
Congurao do mdulo CCP1, para funcionamento em PWM
De maneira a congurar o mdulo CCP para funcionamento em PWM, os seguintes passos devem ter-se em
conta:
Congurar o pino CCP1 como entrada;
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
122
Ajustar o periodo do PWM, carregando o registo PR2;
Congurar o mdulo CCP, para o modo de PWM, combinando bits do registo CCP1CON;
Ajustar o Duty-Cycle do PWM, carregando o registo CCP1RL, e os bits DC1B1-DC1B0 do
CCP1CON;
Para congurar e ligar o TMR2:
Limpar a Flag de interrupo TMR2IF, no registo PIR1;
Ajustar o divisor do TMR2, carregando os bits T2CKPS1 e T2CKPS0 do registo T2CON;
Ligar o TMR2, activando o bit TMR2ON no T2CON;
Habilitar os pinos de sada do PWM, depois de um cclo de PWM ter passado;
Esperar pelo m de contagem do TMR2 (overow), bit TMR2IF do registo PIR1 activado;
Congurar o respectivo pino como sada, no registo TRISx.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
123
Mdulos de Comunicao Srie
O mdulo EUSART - Enhanced Universal Synchronous Asynchronous Receiver Transmitter - Receptor/
Transmissor Sncrono/Assncrono Srie Avanado, um perifrico interno de comunicaes I/O srie. Tam-
bm conhecido como SCI - Serial Communications Interface - Interface de Comunicaes Srie.
Contm todos os geradores de relgio, shift-registers e registos de dados necessrios para fazer uma emisso,
ou recepo, de dados srie, independentemente da execuo do programa principal. Como o seu nome indica,
aparte do uso do relgio para sincronizao, este mdulo tambm pode estabelecer comunicaes assncronas,
o que o torna insubstituivel em algumas aplicaes.
Como exemplo, no caso de ser dicil, ou impossivel,
de disponibilizar canais especiais de Relgio e Dados,
ex.: controlo remoto por rdio ou infravermelhos, o
mdulo EUSART uma soluo bastante conveni-
ente.
O sistema EUSART, dentro do PIC16F887, tem as seguintes caractersticas:
Transmisso/Recepo Assncrona em Full-Duplex (envia e recebe ao mesmo tempo);
Tamanho de dados conguravel entre 8 ou 9 bits;
Deteco de endereo no modo de 9 bits;
Deteco de erro, de registo de entrada j cheio;
Comunicao Hall-Duplex (ou envia, ou recebe) no modo Sncrono Mestre, ou Escravo.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
124
Modo Assncrono da EUSART
A EUSART transmite e recebe dados, usando um formato normalizado de non-return-to-zero (NRZ), ou
no-retorna-ao-zero. Como de pode ver na gura abaixo, este modo no usa sinal de relgio, enquanto os dados
esto a ser transferidos:
EUSART em modo Assncrono
Cada pacote de dados transferido da seguinte maneira:
Quando parado, o pino de sada est no estado lgico 1;
Cada transmisso de dados comea com um bit START, que sempre zero (0);
Cada pacote de dados tem 8 ou 9 bits de tamanho, onde o LSB sempre o primeiro a ser transferido;
Cada transmisso de dados termina com um bit de STOP, que tem sempre estado lgico (1).

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
125
Transmissor Assncrono da EUSART
Transmissor Assncrono da EUSART
De maneira a possibilitar a transmisso de dados com o mdulo EUSART, necessrio congur-lo para
trabalhar como transmissor. Ou seja, necessrio denir o estado dos seguintes bits:
TXEN = 1 - O transmissor da EUSART est ligado, activando este bit no registo TXSTA;
SYNC = 0 - A EUSART est congurada para funcionar em modo assncrono, desactivando este bit do
registo TXSTA;
SPEN = 1 - Activando este bit do registo RCSTA, a EUSART activada e o pino TX/CK automaticamente
congurado como sada. Se este bit simultaneamente usado para alguma funo analgica, esta deve ser
desactivada, limpando o bit correspondente no registo ANSEL.
O cerne do transmissor EUSART, o shift-register TSR, que no directamente acessivel pelo utilizador. De
maneira a iniciar a transmisso, o mdulo deve estar ligado, activando o bit TXEN. Os dados a enviar, devem
ser escritos no registo TXREG, o que vai causar a seguinte sequncia de eventos:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
126
O byte imediatamente transferido para o shift-register TSR;
O registo TXREG mantm-se vazio, o que indicado pela ag TXIF do PIR1. Se o bit TXIE do registo
PIE1 estiver activo, uma interrupo gerada. De qualquer modo, quer a interrupo esteja activa, ou no,
esta ag sempre activada. Tambm, no pode ser apagada pelo sotware, mas apagada quando se escreve
para o TXREG;
A electrnica empurra os dados para o pino TX, ao mesmo ritmo do relgio interno: START bit ... dados
... STOP bit;
Quando o ltimo bit abandona o TSR, o bit TRMT do registo TXSTA automaticamente activado;
Se, entretanto, o TXREG recebeu um novo caracter, todo o procedimento repetido imediatamente ao
STOP bit do caracter anteriormente transmitido.
O envio de dados de 9 bits, habilitado activando o bit TX9 do TXSTA. O bit TX9D do TXSTA o nono
MSB. Quando da transferncia, o TX9D dever ser escrito, antes de escrever para o TXREG. Todos os noves
bits de dados sero transmitidos, assim que a escrita no TXREG estiver completa.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
127
Receptor Assncrono da EUSART
Receptor Assncrono da EUSART
Para activar a recepo de dados, necessrio fazer o seguinte:
CREN = 1 - O receptor da EUSART ligado, activando este bit no registo RCSTA;
SYNC = 0 - A EUSART est congurada para funcionar em modo assncrono, desactivando este bit do
registo TXSTA;
SPEN = 1 - Activando este bit do registo RCSTA, a EUSART activada e o pino TX/CK automaticamente
congurado como sada. Se este bit simultaneamente usado para alguma funo analgica, esta deve ser
desactivada, limpando o bit correspondente no registo ANSEL.
Quando estes passos forem concluidos, e o START bit detectado, os dados so transferidos para o shift-regis-
ter RSR pelo pino RX. Quando o STOP bit fr recebido, a seguinte ocorre:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
128
Os dados so automaticamente transferidos para o RCREG, se vazio;
A ag RCIF activada, e uma interrupo, se estiver habilitada pelo bit RCIE no PIE1, ocorre. De igual
forma ao transmissor, a ag limpa apenas quando se l do RCREG. No esquecer que uma memria de
recepo de dois bytes, o que permite receber dois caracteres simultaneamente;
Se o RCREG estiver ocupado, com os dois bytes e o shift-register detectar um STOP bit, o bit the Over-
ow OERR vai ser activado. Neste caso, os dados que chegaram so perdidos, e o bit OERR dever ser
limpo pelo software. Tal feito desactivando e activando o bit CREN. NOTA: no possivel receber novos
dados, enquanto o bit OERR estiver activo;
Se o STOP bit for zero, o bit FERR do RCSTA activado, indicando erro na recepo;
Para receber dados com 9 bits, necessrio activar o bit RX9 no RCSTA.
Deteco de Erros na Recepo
H dois tipos de erros que o microcontrolador pode detectar automaticamente. O primeiro chamado de erro
de Framing, e ocorre quando o receptor no detecta o STOP bit no tempo certo. Este erro indicado pelo bit
FERR do RCSTA.
Se este bit estiver activado, signica que a ltima recepo de dados pode estar incorrecta.
importante lembrar:
Um erro de Framing no gera uma interrupo por si prprio;
Se este bit estiver activo, os ltimos dados tem erros;
Um erro de Framing, no impossibilita a recepo de dados;
O bit FERR limpo, lendo os dados recebidos;
O bit FERR no pode ser limpo por software. Se necessrio, pode ser limpo, desactivando o bit SPEN do
RCSTA. Vai simultaneamente causar Reset de todo o sistema EUSART.
Outro tipo de erro, chamado de Overrun. A memria de receoo pode conter dois caracteres. Um erro
overrun vai ser gerado se o terceiro caracter recebido. Simplesmente no h espao para outro byte, e um
error inevitavel. Quando esta situao acontece, o bit OERR do RCSTA activado. As consequncias so as
seguintes:

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
129
Os dados j recebidos, e armazenados na memria de recepo, podem ser normalmente lidos;
Nenhum byte adicional vai ser recebido, enquanto o bit OERR no for desactivado;
Este bit no directamente acessivel. Para o limpar, necessrio desactivar o bit CREN do RCSTA, ou
fazendo um Reset ao mdulo EUSART, limpando o bit SPEN do TCSTA.
Recepo de dados de 9 bits
Alm de receber dados de 8 bits, o sistema EUSART suporta recepo de dados com 9 bits.
No lado transmissor, o nono bit est agarrado ao byte original, mesmo antes do STOP bit. No lado receptor,
quando o bit RX9 do RCSTA est activo, o nono bit vai ser automaticamente escrito no bit RX9D, do mesmo
registo.
Quando este byte recebido, o programador deve ter em ateno em como o vai ler. O nono bit dever ser lido
antes de ler os restantes 8 bits, pois se no o zer, o nono bit ser automaticamente limpo.
Recepo de dados a 9 bits

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
130
Deteco de endereos
Quando o bit ADDEN do registo RCSTA est activo, o mdulo EUSART est habilitado a receber dados
de 9 bits, onde todos os dados de 8 bits sero ignorados. Embora parea uma restrio, este modo permite a
comunicao srie entre vrios microcontroladores.
O principio de operao simples. O Mestre envia 9 bits, que representa o endereo de um microcontrolador.
Todos os microcontroladores Escravos que partilham a linha de transmisso, recebem estes dados. Todos os
escravos devero ter o bit ADDEN activado, para permitir a deteco de endereo.
Depois da recepo, cada Escravo verica se esse endereo o seu. O software, depois de conrmar o endereo,
dever desactivar a deteco de endereo, limpando o bit ADDEN. O dispositivo Mestre continua o envio de
dados de 8 bits. Todos os dados passando pela linha de transmisso, vo ser recebidos e reconhecidos apenas
pelo Escravo j correctamente endereado. Aps receber o ltimo byte, o Escravo dever activar o bit AD-
DEN.
de maneira a poder detectar outra vez os endereos.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
131
Registo TXSTA
CSRC - Bit de seleco da origem do relgio. apenas usado no modo sncrono.
1 - modo Mestre. Clock gerado internamente pelo gerador de Baud Rate;
0 - modo Escravo. Clock gerado por uma fonte externa.
TX9 - Bit de activao de transmisso de 9 bits
1 - Transmisso a 9 bits
0 - Transmisso a 8 bits
TXEN - Bit de activao da Transmisso
1 - Transmisso activa
0 - Transmisso desligada
SYNC - Bit de seleco do modo da EUSART
1 - EUSART funciona no modo sncrono
0 - EUSART funciona no modo assncrono
SENDB - Bit de envio de caracter de break. Apenas usado em modo assncrono, e apenas no caso de desco-
brir o standard do barramento LIN
1 - O envio do caracter Break activado
0 - O envio do caracter Break terminou
BRGH - Bit de seleco de High Baud Rate (alta velocidade de relgio) no modo assncrono. No afecta a
EUSART no modo sncrono.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
132
1 - EUSART funciona em alta velocidade
0 - EUSART funciona em baixa velocidade
TRMT - Bit de estado do Shift-Register de Transmisso
1 - Registo TSR est vazio
0 - Registo TSR est cheio
TX9D - Nono bit de dados transmitidos. Pode ser usado para endereo ou para bit de paridade.
Registo RCSTA
SPEN - Bit de activao da porta Srie
1 - Porta Srie activa. Os pinos RX/DT e TX/CK so automaticamente congurados como entrada e sada,
respectivamente
0 - Porta Srie desactivada
RX9 - Bit de activao da Recepo de 9 bits
1 - Recepo de 9 bits
0 - Recepo de 8 bits
SREN - Bit de activao de Recepo singular. Usado apenas em modo sncrono, quando o microcontrolador
funciona como Mestre
1 - Recepo singular activada
0 - Recepo singular desactivada
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
133
CREN - Bit de activao de Recepo contnua
Modo Assncrono:
1 - Recepo contnua activada
0 - Recepo contnua desactivada
Modo Sncrono
1 - Recepo contnua activada, at o bit CREN ser limpo
0 - Recepo contnua desactivada
ADDEN - Bit de activao de Deteco de Endereo
1 - Activa a deteco de endereo, com recepo a 9 bits
0 - Desactiva a deteco de endereo, e o nono bit pode ser usado como bit de paridade
FERR - Bit de erro de Framing
1 - Na recepo, erro de Framing detectado
0 - Sem erro de Framing
OERR - Bit de erro de Overrun
1 - Na recepo, erro de Overrun detectado
0 - Sem erro de Overrun
RX9D - O nono bit dos dados recebidos, pode ser usado com endereo, ou bit de paridade
BRG - Baud Rate Generator - Gerador de Relgio para a EUSART
Se se olhar atentamente para o diagrama do receptor/transmissor assncrono da EUSART, em ambos os casos,
pode ver-se que o sinal de relgio do temporizador local BRG, usado para a sincronizao. A mesma fonte de
relgio usada no modo sncrono.
Este temporizador consiste em dois registos de 8 bits, num total de 16 bits.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
134
Gerador de Baud Rate da EUSART
Um nmero escrito para estes dois registos, determina o Baud Rate - Velocidade da porta Srie. Alm do mais,
ambos o bit BRGH do TXSTA e o bit BRGH16 do BAUDCTL, inuenciam a frequncia de relgio.
A frmula usada para calcular o Baud Rate, dada pela tabela abaixo:
Bits
BRG / EUSART Mode Baud Rate Formula
SYNC BRG1G BRGH
0 0 0 8-bit / assncrono Fosc / [64 (n + 1)]
0 0 1 8-bit / assncrono Fosc / [16 (n + 1)]
0 1 0 16-bit / assncrono Fosc / [16 (n + 1)]
0 1 1 16-bit / assncrono Fosc / [4 (n + 1)]
1 0 x 16-bit / assncrono Fosc / [4 (n + 1)]
1 1 x 16-bit / assncrono Fosc / [4 (n + 1)]
As tabelas seguintes, contem valores que devem ser escritos no registo SPBRG, e nos bits SYNC, BRGH e
BRGH16, de maneira a obter Baud Rates padronizadas.
As frmulas usadas para determinar o Baurd Rate, so:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
135
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
136
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
137
Registo BAUDCTL
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
138
ABDOVF - Flag de Overow da deteco de Auto-Baud-Rate, apenas usado no modo assncrono, durante
a deteco do baud rate
1 - Temporizador Auto Baud Rate chegou ao m
0 - Temporizador Auto Baud Rate no chegou ao m
RCIDL - Flag de Recepo parada, apenas usado no modo assncrono
1 - A recepo est parada
0 - O START bit foi recebido, e a recepo est em progresso.
SCKP - Bit de seleco da polaridade do Relgio Sncrono
Modo Assncrono:
1 - Dados invertidos na transmisso no pino RC6/TX/CK
0 - Dados no invertidos na transmisso no pino RC6/TX/CK
Modo Sncrono:
1 - Sincronizao no anco ascendente do relgio
0 - Sncronizao no anco descendente do relgio
WUE - Bit que habilita o Wake-up (acordar) pela EUSART
1 - O receptor aguarda por um anco descendente no pino RC7/RX/DT, para acordar o microcontrolador do
modo Sleep
0 - O receptor funciona normalmente
ABDEN - Bit de habilitao de Deteco Automtica do Baud Rate, apenas em modo assncrono
1 - Modo de deteco automtica do baud rate est ligado. Este bit automaticamente limpo aquando da
deteco do baud rate
0 - Modo de deteco automtica do baud rate est desligado
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
139
Resumidamente:
Enviar dados pela EUSART em modo assncrono:
O baud rate dever ser ajustado, pelos bits BRGH do registo TXSTA, e BRG16 do registo BAUDCTL,
e pelos registos SPBRGH eSPBRG;
O bit SYNC do TXSTA dever ser limpo, e o bit SPEN do RCSTA dever ser activado, de maneira a
ligar a porta srie;
Na transmisso de 9 bits, o bit TX9 do TXSTA dever ser activado;
A transmisso de dados habilitada, activando o bit TXEN do TXSTA. O bit TXIF do PIR1 automati-
camente activado;
Se for necessrio haver um interrupo, o bit TXIE do PIE1, e os GIE e PEIE do INTCON devero ser
activados;
Na transmisso de 9 bits, o valor do nono bit dever ser escrito no bit TX9D do TXSTA;
A transmisso inicia quando se escreve no registo TXREG;
Receber dados pela EURSAR em modo assncrono:
O baud rate dever ser ajustado, pelos bits BRGH do registo TXSTA, e BRG16 do registo BAUDCTL,
e pelos registos SPBRGH eSPBRG;
O bit SYNC do TXSTA dever ser limpo, e o bit SPEN do RCSTA dever ser activado, de maneira a
ligar a porta srie;
Se for necessrio haver uma interrupo, o bit RCIE do PIE1, e os GIE e PEIE do INTCON devero ser
activados;
Na recepo de 9 bits, o bit RX9 do RCSTA dever ser activado;
A recepo de dados dever ser habilitada, activando o bit CREN do RXSTA;
O registo RCSTA dever ser lido, para tirar a informao de possiveis erros que ocorreram durante a
transmissso. Na recepo a 9 bits, o nono bit estar armazenado neste registo;
O byte recebido e armazenado no registo RCREG, dever ser lido.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
140
Activar o modo de Deteco de Endereo:
O baud rate dever ser ajustado, pelos bits BRGH do registo TXSTA, e BRG16 do registo BAUDCTL,
e pelos registos SPBRGH e SPBRG;
O bit SYNC do TXSTA dever ser limpo, e o bit SPEN do RCSTA dever ser activado, de maneira a
ligar a porta srie;
Se for necessrio haver uma interrupo, o bit RCIE do PIE1, e os GIE e PEIE do INTCON devero ser
activados;
O bit RX9 do RCSTA dever ser activado;
O bit ADDEN do RCSTA dever ser activado, o que habilita que um caracter recebido, seja interpretado
como endereo;
A recepo de dados dever ser habilitada, activando o bit CREN do RXSTA;
Imediatamente aps os 9 bits serem recebidos, o bit RCIF do PIR1 automaticamente activado. Se habil-
itada, uma interrupo gerada;
O registo RCSTA dever ser lido, para tirar a informao de possiveis erros que ocorreram durante a
transmissso. Na recepo a 9 bits, o nono bit estar armazenado neste registo;
Os 8 bits recebidos e armazenados no registo RCREG, devero ser lidos. Agora deve ser feita a vericao
do endereo. Se coincidirem, necessrio limpar o bit ADDEN do RCSTA, o que possibilita a continui-
dade da recepo em 8 bits.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
141
Modo Sncrono da EUSART
O mdulo MSSP - Master Snchronous Serial Port, Porta Srie Sncrona Mestre, bastante til, porque ao
mesmo tempo um dos mais complexos circuitos dentro do microcontrolador. Ele permite comunicaes de alta
velocidade entre o microcontrolador e perifricos externos, usando algumas linhas de I/O. comum us-lo
para ligar a ecrns LCD, conversores A/D, EEPROMs srie, shift-registers, entre outros.
A principal funcionalidade deste tipo de comunicaes a de ser sncrona, e ptimo para sistemas onde h
um s Mestre, e um ou mais Escravos. O dispositivo Mestre tem os circuitos necessrios para a gerao do
Baud Rate, e fornece o Relgio para todos os dispositivos do sistema. Os dispositivos Escravos, podem dessa
maneira, eliminar o gerador de Relgio interno.
O mdulo MSSP funciona das seguintes maneiras:
Modo SPI, Serial Peripheral Interface
Modo I2C, Inter-Integrated Circuit
Mdulo MSSP

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
142
Como se pode ver na gura, um mdulo MSSP representa metade do hardware necessrio para estabelecer
uma comunicao srie, enquanto que a outra metade est presente no dispositivo com que se vai trocar a
informao. Apesar dos mdulos serem iguais em ambos os lados, os seus modos so essencialmente diferentes,
dependendo se operam como Mestre ou Escravo:
Se o microcontrolador a ser programado, controla outros dispositivos, ento vai funcionar como Mestre.
Um mdulo denido como tal, vai gerar o relgio quando necessrio, e apenas quando informao en-
viada/recebida.
Depende do Mestre, se a ligao estabelecida, ou no.
Se o microcontrolador a ser programado, parte de um sistema perifrico, ento vai funcionar como dis-
positivo Escravo. Ento, ter sempre de aguardar os pedidos por parte do Mestre.
Modo SPI
O modo de SPI permite o envio/recepo simultnea, de dados de 8 bits, usando 3 linhas I/O;
SDO - Sada de dados srie - linha de transmisso;
SDI - Entrada de dados srie - linha de recepo;
SCK - Relgio srie - linha de sncronizao.
Em conjunto com esta linha, se o microcontrolador trocar informao com vrios perifricos, a quarta linha,
SS, tambm pode ser usada. Ver gura abaixo.
SS - Seleco de Escravo - um pino adicional usado para seleco de dispositivo. Est apenas activo se o micro-
controlador est em modo Escravo.
Quando opera em modo SPI, o mdulo MSSP usa um total de 4 registos:
SSPSTAT - registo de estado;

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
143
SSPCON - registo de controlo;
SSPBUF - registo de armazenamento de dados;
SSPSR - shift register (no disponivel directamente)
Os primeiros trs registos so possiveis de escrever/ler, e podem ser alterado a qualquer momento, enquanto
que o quarto registo, como no est disponivel, usado para converter os dados para formato srie.
Modo SPI
Como pode ser visto na gura abaixo, o cerne do mdulo SPI consiste em, dois registos ligados aos pinos para
receber, transmitir e sincronizar.
Modo SPI
O Shift Register, SSPRS, directamente ligado aos pinos do microcontrolador, e usado para transmisso de
dados em formato srie. O SSPRS tem a sua entrada e sada, e desloca os dados para dentro/fora do disposi-
tivo. Por outras palavras, cada bit que aparece na entrada (linha de recepo) simultaneamente empurra outro
bit para a sada (linha de transmisso).
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
144
O registo SSPBUF, um bloco de memria para temporariamente armazenar a informao escrita no SSPRS,
at que os dados recebidos estejam prontos. Aps a recepo dos 8 bits de dados, esse byte deslocado para o
SSPBUF.
Esta dupla memria dos dados recebidos, SSPBUF, permite ao prximo byte ser recebido, antes de ler os dados
acabados de receber. Qualquer escrita no SSPBUF durante a transmisso/recepo de dados, ignorada.
Nomeadamente, se as conguraes do modo forem esquecidas, a transferncia de dados SPI signica que
apenas se escreve e l deste registo. Enquanto que o funcionamento do mdulo em si, automaticamente feito
por hardware.
Resumidamente:
Antes de inicializar o SPI, necessrio especicar certos pontos:
Modo Mestre, o pino SCK a sada de relgio;
Modo Escravo, o pino SCK a entrada de relgio;
Fase do bit de entrada, no meio ou no m do ciclo de relgio, bit SMP;
Flanco do relgio, bit CKE;
Baud Rate, s no modo Mestre;
Modo de seleco de Escravo, no modo Escravo apenas.
Passo 1
O byte a transmitir, deve ser escrito para a memria temporria SSPBUF.
Imediatamente depois, se o mdulo SPI opera em modo Mestre, o microcon-
trolador vai automaticamente fazer os passos 2, 3 e 4. Se o mdulo SPI opera
como Escravo, o microcontrolador no vai fazer nenhum destes passos, at
que o pino SCK detectar um sinal de relgio.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
145
Passo 2
Este byte agora deslocado para o registo SSPSR, e a memria temporria
SSPBUF no limpa.
Passo 3
Sincronizado com o relgio de entrada, este byte empurrado para o pino
de sada, sendo o MSB primeiro, enquanto o registo simultaneamente
preenchido com bits do pino de entrada. No modo Mestre, o microcon-
trolador gera o relgio, enquanto o Escravo usa o relgio externo SCK.
Passo 4
O registo SSPSR est preenchido, quando os 8 bits de dados
forem recebidos. indicado activando os bits BF e SSPIF. O byte
recebido automaticamente movido do SSPSR para o SSPBUF.
Como a transferncia feita automaticamente, o programa prin-
cipal normalmente executado, enquanto a transferncia est em
progresso. Nesse caso, a funo do bit SSPIF gerar uma inter-
rupo, quando a transmisso est completa.
Passo 5
Finalmente, o byte armazenado no SSPBUF est pronto a ser usado, e movido
para qualquer registo disponivel.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
146
Modo I2C
O modo I2C especialmente til quando, o microcontrolador e um circuito integrado com o qual o micro
dever trocar informao, estiverem montados no mesmo sistema. Esta forma de transmisso de dados co-
mum a outros microcontroladores, ou circuitos integrados especializados, tais como memrias, sensores de
temperatura, expansores de porta, relgios em tempo-real, etc.
Similarmente ao SPI, a transferncia de dados por I2C sncrona e bidireccional. Desta vez, apenas dois pinos
so usados para a transferncia de dados. Estes so o SDA, dados srie, e o SCL, relgio srie. O programador
deve congurar estes pinos como entradas/sadas, atravs dos bits do TRISC.
Provavelmente no directamente perceptivel, mas observando regras particulares (protocolos), este modo
possibilita que 122 dispositivos diferentes estajam simultaneamente ligados, usando apenas dois pinos I/O.
Funciona da seguinte maneira; o relgio necessrio para sincronizar a operao de ambos os dispositivos,
sempre gerado pelo Mestre. A frequncia de relgio mais habitual de 100KHz, mas no h limite no caso de
frequncia mnima.
Quando o Mestre e Escravo esto sincronizados com o relgio, toda a troca de dados sempre iniciada pelo
Mestre. Assim que o mdulo MSSP est activo, ca a aguardar uma condio de Start.
Primeiro, o Mestre envia o bit de Start, depois o endereo de 7 bits do Escravo, e nalmente o bit que especica
se vai ler ou escrever no Escravo. A seguir ao bit de Start, os oito bits so enviados para o registo SSPSR.
Todos os Escravos partilham a linha de transmisso, e vo simultaneamente receber o primeiro byte, mas
apenas um deles tem o endereo coincidente.
Congurao Mestre e Escravo
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
147
Depois do primeiro byte ter sido enviado, o Mestre entra em modo de recepo, e aguarda o ACK - Acknowl-
edge (conrmao) do Escravo com o endereo coindicente. Se o Escravo envia um ACK lgico 1, a transfern-
cia vai continuar at o Mestre enviar o bit de Stop.
Esta uma simples explicao de como dois dispositivos comunicam. Se necessrio, este microcontrolador
capaz de controlar situaes mais complicadas, onde 1024 dispositivos diferentes, partilhados por diferentes
Mestres, esto ligados.
Transferncia de Dados
A gura em baixo, mostra o diagrama de blocos do mdulo MSSP no modo I2C:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
148
Diagrama de blocos do mdulo MSSP, em modo I2C
O mdulo usa estes registos, para trabalhar em I2C.
SSPCON - registo de controlo 1
SSPCON2 - registo de controlo 2
SSPSTAT - registo de estado
SSPBUF - registo de memria temporria para transmisso/recepo
SSPSR - registo Shift-Register (no directamente acessvel)
SSPADD - registo de endereo
SSPMSK - registo de mscara.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
149
Registo SSPSTAT
SMP - Bit de amostragem
Modo SPI Mestre, este bit indica a fase dos dados
1 - O estado lgico lido no m do ciclo de relgio,
0 - O estado lgico lido no meio do ciclo de relgio.
Modo SPI Escravo. Este bit deve estar limpo, quando se usa SPI Escravo
Modo I2C, Mestre ou Escravo
1 - Slew Rate - Controlo de interferncias desligado, para velocidades de 100KHz;
0 - Slew Rate - Controlo de interferncias ligado, para velocidades de 400KHz ou maiores.
CKE - Bit de seleco do anco de relgio
CKP=0:
1 - Os dados so transmitidos no anco ascendente;
0 - Os dados so transmitidos no anco descendente.
CKP=1:
1 - Os dados so transmitidos no anco descendente.
0 - Os dados so transmitidos no anco ascendente;
D/A - bit de Dados/Endereo, usado no modo I2C apenas
1 - Indica que o ltimo byte recebido ou transmitido, foi de dados;
0 - Indica que o ltimo byte recebido ou transmitido, foi de endereo.
P - O bit de Stop, usado no modo I2C apenas
1 - O Stop bit foi detectado;

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
150
0 - O Stop bit no foi detectado;
S - Bit de Start, usado no modo I2C apenas
1 - O bit de Start foi detectado;
0 - O bit de Start no foi detectado;
R/W - Bit de Escrita/Leitura, usado em I2C apenas. Este bit guarda a informao R/W a seguir ao endereo.
S vlido desde a coincidncia de endereo, at ao prximo bit de Start, Stop ou no-ACK.
I2C Escravo:
1 - Ler dados;
0 - Escrever dados.
I2C Mestre:
1 - Transmisso em progresso;
0 - Transmisso parada.
UA - Bit de refrescamento do endereo. usado no modo de 10 bits de I2C.
1 - Indica que necessrio fazer o refrescamento do endereo no registo SSPADD;
0 - O endereo no SSPADD est correcto, e no precisa de ser refrescado.
BF - Bit de estado do Buer - memria intermdia temporria
Durante a recepo em SPI ou I2C:
1 - Recepo completa. O SSPBUF est completo;
0 - Recepo no completa. O SSPBUF est vazio.
Durante a transmisso em SPI ou I2C:
1 - Transmisso de dados em andamento (no inclui os bits ACK e STOP);
0 - Transmisso de dados completa (no inclui os bits ACK e STOP).
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
151
Registo SSPCON
WCOL - bit de deteco de Coliso de Escrita
1 - Coliso detectada. Uma escrita para o SSPBUF foi tentada, enquanto que a condio I2C no era vlida
para uma transmisso se iniciar;
0 - No houve coliso.
SSPOV - Bit indicador de Overow de Recepo
1 - Um novo byte foi recebido, enquanto o SSPSR continha o byte anterior. Como no h espao para a recep-
o dos dados, um destes dois bytes deve ser limpo. Neste caso, o byte dentro do SSPSR perdido;
0 - Dados srie correctamente recebidos.
SSPEN - Bit que habilita a porta srie sncrona, e inicializa o mdulo MSSP:
No modo SPI:
1 - Liga mdulo MSSP e congura os pinos SCK, SDO, SDI e SS, para a porta srie;
0 - Desliga mdulo MSSP e congura estes pinos como portas I/O.
No modo I2C:
1 - Liga mdulo MSSP e congura os pinos SDA e SCL, para a porta srie;
0 - Desliga mdulo MSSP e congura estes pinos como portas I/O.
CKP - Bit de seleco da polaridade do Relgio, no usado em I2C Mestre
No modo SPI:
1 - Modo de descanso para o relgio, nvel lgico alto;
0 - Modo de descanso para o relgio, nvel lgico baixo.
No modo I2C Escravo:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
152
1 - Habilita o relgio;
0 - Mantm o relgio a estado lgico 0, para dar mais tempo estabilizao dos dados.
SSPM3-SSPM0 - Bits de seleco da porta srie Sncrona. O modo denido por estes trs bits:
SSPM3 SSPM2 SSPM1 SSPM0 Mode
0 0 0 0 SPI Mestre, clock = Fosc/4
0 0 0 1 SPI Mestre, clock = Fosc/16
0 0 1 0 SPI Mestre, clock = Fosc/64
0 0 1 1 SPI Mestre, clock = (sada TMR)/2
0 1 0 0 SPI Escravo, pino SS de controlo ligado
0 1 0 1
SPI Escravo, pino SS de controlo desligado, SS pode ser
usado como pino I/O
0 1 1 0 IC Escravo, endereo de 7-bit usado
0 1 1 1 IC Escravo, endereo de 10-bit usado
1 0 0 0 IC Mestre, clock = Fosc / [4(SSPAD+1)]
1 0 0 1 Mscara usada no modo IC Escravo
1 0 1 0 No usado
1 0 1 1 Modo controlado IC Mestre
1 1 0 0 No usado
1 1 0 1 No usado
1 1 1 0
IC Escravo, endereo de 7-bit usado, bits START e STOP
activam a interrupo
1 1 1 1
IC Escravo, endereo de 10-bit usado, bits START e STOP
activam a interrupo
Registo SSPCON2
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
153
GCEN - Bit de habilitao de Chamada Geral
No modo I2C Escravo apenas:
1 - Habilita uma interrupo, quando uma chamada geral de endereo 0x000 recebida no SSPSR;
0 - Chamada geral de endereo desligado.
ACKSTAT - Bit de estado de ACKnowledge - conrmao
No modo I2C Mestre transmisso apenas:
1 - ACK no foi recebido do Escravo;
0 - ACK foi recebido do Escravo.
ACKDT - Bit de ACKnowledge
No modo I2C Mestre recepo apenas:
1 - No houve ACK;
0 - Houve ACK.
ACKEN - Bit de habilitao de ACKnowledge
No modo I2C Mestre recepo apenas:
1 - Inicia condio ACK nos pinos SDA e SCL, e transmite bit ACKDT. automaticamente limpo por
hardware;
0 - Condio ACK no iniciada.
RCEN - Bit habilitao da Recepo
No modo I2C Mestre apenas:
1 - Possibilita a recepo no modo I2C;
0 - Recepo desligada.
PEN - Bit de habilitao da condio de STOP
No modo I2C Mestre apenas:
1 - Inicia uma condio de STOP nos pinos SDA e SCL. Seguidamente, este bit automaticamente limpo por
hardware;
0 - Condio de STOP no iniciada.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
154
RSEN - Bit de habilitao da condio de Repetio de START
No modo I2C Mestre apenas:
1 - Inicia uma condio de START nos pinos SDA e SCL. Seguidamente, este bit automaticamente limpo
por hardware;
0 - A repetio de START no iniciada.
SEN - Bit de habilitao de condio de START ligada/prolongada (Enabled/Stretch)
No modo I2C Mestre apenas:
1 - Inicia uma condio de START nos pinos SDA e SCL. Seguidamente, este bit automaticamente limpo
por hardware;
0 - A condio de START no iniciada.
I2C em modo Mestre
O caso mais comum quando o microcontrolador funciona como Mestre, e os perifricos como Escravos. Esta
a razo de apenas se falar aqui deste modo. Tambm se vai considerar que o endereo de 7 bits, e o sistema
electrnico s tem um microcontrolador, ou um s mestre.
De maneira a ligar o mdulo MSSP neste modo, necessrio fazer o seguinte:
Congurar o Baud Rate, registo SSPADD;
Congurar o Slew Rate - Controlo de interferncias, bit SMP no registo SSPSTAT;
Seleccionar o modo, registo SSPCON.
Depois destes passo feitos, e do mdulo ter sido ligado pelo bit SSPEN do SSPCON, dever esperar-se pela
electrnica interna indicar que est pronta para transmisso: bit SSPIF do registo PIR1 activado.
Este bit dever ser limpo por software, e seguidamente o microcontrolador est pronto a iniciar uma comuni-
cao com os perifricos.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
155
I2C em modo Mestre
Transmisso de dados no modo I2C Mestre
Cada condio de relgio no pino SDA, iniciado com estado lgico 0, que aparece aps ligar o bit SEN do
SSPCON2. Mesmo depois de ligar, o microcontrolador aguarda um momento antes de iniciar a comunicao.
a chamada Condio de Start, durante a qual h estabilizao interna da electrnica. Se todas as condies
satisfazerem, o bit SSPIF do PIR1 activado, e a transferncia de dados iniciada, assim que o registo SSP-
BUF for carregado com um byte.
Como s um mximo de 112 dispositivos podem partilhar
a mesma linha de transmisso, o primeiro byte enviado
contm o endereo de apenas um Escravo. Cada compo-
nente tem o seu endereo escrito no prprio datasheet. O
oitavo bit deste primeiro byte, especica se o Mestre vai
enviar ou receber dados. Neste caso vai-se receber infor-
mao, e o oitavo bit dever ser lgico 0.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
156
Quando o endereo coincide, o microcontrolador
tem de esperar pelo bit de ACK. O Escravo con-
rma o endereo, limpando o bit ACKSTAT do
SSPCON2. Se houver coincidncia de endereo,
todos os bytes sero enviados da mesma forma.
A transmisso de dados termina activando o
bit SEN do SSPCON2. A condio de STOP
ocorre, o que possibilita o pino SDA a receber
a condio: Start - Endereo - ACK - Dados -
ACK ..... Dados - ACK - Stop.
Recepo de dados no modo I2C Mestre
A preparao para a recepo de dados, similar de transmisso de dados, com a excepo de que, o ltimo bit
do byte de endereo, lgico 1. Especica que o Mestre espera receber informao do Escravo endereado.
O seguinte vai ocorrer:
Depois da preparao interna terminar e do bit START ser activado, o Escravo d incio ao envio de um byte
de cada vez. Estes bytes so armazenados no registo SSPSR. Cada byte carregado para o SSPBUF, de onde
pode ser lido. Ao ler este registo, o bit ACK automaticamente enviado, signicando que o Mestre est pronto
para receber novo byte.
No nal, a recepo de dados termina activando o bit STOP:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
157
Recepo de dados no modo I2C Mestre
Start - Endereo - ACK - Dados - ACK .... Dados - ACK - Stop.
desta maneira que o ACK enviado ao Escravo.
Gerador de Baud Rate
De maneira a sincronizar as comunicaes, todos os eventos no pino SDA devem ser sncronizados com o
relgio gerado no Mestre. Este relgio gerado por um simples oscilador, em que a frequncia depende do
oscilador principal do microcontrolador, do valor escrito no registo SSPADD e do modo corrente de SPI e
I2C.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
158
A frequncia de relgio dos modos descritos neste manual, dependem do cristal de quartzo e do registo
SSPADD. A frmula usada para a calcular est na gura abaixo:
Gerador de Baud Rate
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
159
Quando o microcontrolador comunica com os perifricos, pode acontecer que a transferncia de dados falha
por alguma razo. Neste caso, recomendada a vericao do estado de alguns bit, que podem ajudar a clari-
car o problema. Na prtica, o estado destes bits vericado atravs da execuo de uma subrotina, depois da
transmisso/recepo de um byte.
WCOL - SPCON,7 - Se se tentar escrever um novo byte para o SSPBUF, enquanto estiver em progresso uma
transmisso/recepo, o bit WCOL vai ser activado e o contedo do SSPBUF mantm-se inalterado. A escrita
no ocorre e, depois disto, o WCOL dever ser limpo por software.
BF - SSPSTAT,0 - No modo de transmisso, este bit activado quando o CPU escreve para o SSPBUF, e
mantm-se activo enquanto o byte deslocado para fora do registo SSPSR. No modo de recepo, este bit
activado quando um byte carregado para o SSPBUF. limpo quando o SSPBUF lido.
SSPOC - SSPCON,6 - No modo de recepo, este bit activado quando um novo byte recebido pelo
SSPSR, quando o byte anterior ainda no foi lido do SSPBUF.
Pinos SDA e SCL - Quando o mdulo SSP est activo, estes pinos transformam-se em sadas Open Drain
(Dreno Comum). Signica que, estes pinos, devem ser ligados a resistncias de Pull-Up (entre o pino e o
terminal positivo da alimentao).
Resistncias de sada para os Drenos Abertos dos Transistores internos
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
160
Resumidamente:
De maneira a estabelecer uma comunicao srie no modo I2C, o seguinte tem que ser tomado em conta:
Ajustar o modo e enviar o endereo:
O valor que determina o Baud Rate, deve ser escrito para o registo SSPADD
Slew Rate - Controlo de interferncias, deve ser desligado, limpando o bit SMP do registo SSPSTAT
De modo a escolher modo Mestre, o valor binrio 1000 dever ser escrito nos bits SSPM3-SSPM0 do
registo SSPCON
O bit SEN do registo SSPCON2 dever ser activado - Condio START
O bit SSPIF automaticamente activado no m do START, quando o mdulo est pronto a funcionar.
Dever ser limpo por software
O endereo do Escravo dever ser escrito para o SSPBUF
Quando o byte enviado, o bit SSPIF automaticamente activado quando o ACK recebido do Escravo.
Transmisso de dados:
Os dados a enviar, devero ser carregados no SSPBUF
Quando o byte enviado, o bit SSPIF automaticamente activado quando o ACK recebido do Escravo
De maneira a informar o Escravo que a transmisso est completa, uma condio de STOP dever ser
iniciada, activando o bit PEN no SSCON.
Recepo de dados:
De maneira a ligar a recepo de dados, o bit RSEN do SSPCON2 dever ser activado
O bit SSPIF assinala a recepo de um byte. Quando o byte lido do SSPBUF, o bit ACKEN do SSP-
CON2 dever ser activado, de maneira a enviar o bit de ACK
De maneira a informar o Escravo que a transmisso est completa, uma condio de STOP dever ser
iniciada, activando o bit PEN no SSCON.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
161
Mdulos Analgicos
Alm de uma variedade de linhas digitais de I/O, este PIC tem ainda vrias entradas analgicas. Estas, pos-
sibilitam ao microcontrolador reconhecer, no s os estados lgicos 0 e 1, bem como fazer a medio precisa da
sua tenso e converte-la para um valor digital. Todo o procedimento acontece no mdulo conversor A/D, que
tem as seguintes caractersticas:
O conversor gera um resultado binrio de 10 bits, usando o mtodo de aproximao sucessiva (SAR), e
armazena o resultado nos registos ADRESL e ADRESH;
Disponibiliza 14 entradas analgicas;
O conversor possibilita a converso de um sinal analgico, para um nmero binrio de 10 bits;
Escolhendo tenses diferentes para o Vref- e Vref+, a resoluo mnima, ou qualidade de converso, pode
ser ajustada necessidade do projecto.
Registos e Modo do ADC - Conversor A/D
Apesar do uso de um ADC parecer deveras complicado, na prtica bastante simples. Mais simples do que
usar temporizadores e comunicaes srie.
O mdulo est sob o controlo dos bits de quatro registos:
ADRESH - Byte alto do resultado da converso
ADRESL - Byte baixo do resultado da converso
ADCON0 - Registo de controlo 0
ADCON1 - Registo de controlo 1

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
162
Registos e modo do Conversor A/D
Registos ADRESH e ADRESL
Quando se converte um sinal analgico, o resultado dos 10 bits vai ser guardado em dois registos. De maneira
a lidar com este valor mais facilmente, o mesmo pode aparecer em dois formatos: justicado esquerda, ou
justicado direita. O bit ADFM do registo ADCON1 determina o formato de converso.
No caso de o ADC no ser usado, estes registos podem ser usado para quaisquer ns.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
163
Registos ADRESL e ADRESH
Requisitos da Aquisio A/D
Para o ADC ter a exactido especicada, necessrio que haja um certo atraso entre a escolha da entrada
analgica, e a medio. Este atraso chama-se Tempo de Aquisio, e depende apenas da impedncia da fonte
de sinal. H uma equao para o clculo exacto deste atraso, que no pior dos casos de 20 microsegundos.
Momentaneamente, aps escolher a entrada analgica, e antes de iniciar a converso, necessrio esperar 20
microsegundos para que a converso seja o mais exacta possvel.
Periodo do ADC
O tempo necessrio para completar a converso de um-bit, denido como TAD. O TAD necessrio de pelo
menos 1.6 microsegundos. Uma converso completa de 10 bits demora cerca de 11 TAD. No entanto, como
ambos o relgio e a fonte de converso so congurados por software, uma das combinaes disponiveis dos bits
ADCS1 e ADCS0, dever ser escolhida antes da medio analgica. Estes bits esto no registo ADCON0.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
164
Origem Relgio
ADC
ADCS1 ADCS0
Frequncia do micro (Fosc)
20MHz 8MHz 4MHz 1MHz
Fosc/2 0 0 100 nS 250 nS 500 nS 2 uS
Fosc/8 0 1 400 nS 1 uS 2 uS 8 uS
Fosc/32 1 0 1.6 uS 4 uS 8 uS 32 uS
Frc 1 1 2 - 6 uS 2 - 6 uS 2 - 6 uS 2 - 6 uS
Perodo de Relgio do ADC
Qualquer mudana na frequncia de relgio do sistema, vai afectar o relgio do ADC, o que poder afectar o
resultado do ADC. Os valores nas clulas com fundo cinza, esto fora do recomendando.
Como usar o Conversor A/D
De maneira a possibilitar o ADC a funcionar sem problemas, bem como a evitar resultados inesperados,
necessrio considerar o seguinte:
O ADC no distingue entre tenses analgicas ou digitais. De maneira a evitar erros na medio, ou es-
tragos no chip, os pinos devem ser congurados como entradas analgicas, antes de iniciar a converso. Os
bits usados para este m, esto nos registos TRIS e ANSEL.
Quando a porta com entradas analgicas CH0-CH13 lida, os bits correspondentes vo estar a lgico 0
A medio de tenso no conversor, baseada na comparao da tenso de entrada, com uma escala interna
que tem 1024 posies. O nvel mais baixo da escala o Vref-, e o nvel mais alto o Vref+. A gura abaixo
mostra os nveis possiveis para cada um deles.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
165
Como usar o ADC
Registo ADCON0
ADCS1-ADCS0 - Bits de seleco do Relgio de Converso do ADC, usado para sincronizao interna do
ADC. Tambm afecta a durao da converso.
ADCS1 ADCS2 Clock
0 0 Fosc/2
0 1 Fosc/8
1 0 Fosc/32
1 1 RC *
* Relgio gerado por oscilador interno no microcontrolador
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
166
CHS3-CHS0 - Bits de seleco do Canal analgico, escolhem qual o canal analgico a converter.
CHS3 CHS2 CHS1 CHS0 Channel Pin
0 0 0 0 0 RA0/AN0
0 0 0 1 1 RA1/AN1
0 0 1 0 2 RA2/AN2
0 0 1 1 3 RA3/AN3
0 1 0 0 4 RA5/AN4
0 1 0 1 5 RE0/AN5
0 1 1 0 6 RE1/AN6
0 1 1 1 7 RE2/AN7
1 0 0 0 8 RB2/AN8
1 0 0 1 9 RB3/AN9
1 0 1 0 10 RB1/AN10
1 0 1 1 11 RB4/AN11
1 1 0 0 12 RB0/AN12
1 1 0 1 13 RB5/AN13
1 1 1 0 CVref
1 1 1 1 Vref = 0.6V
Bits de escolha do Canal Analgico
GO/DONE - Bit de Estado da Converso A/D
1 - Converso A/D est em curso
0 - Converso A/D est completa. Este bit automaticamente limpo por hardware, quando a converso A/D
termina.
ADON - Bit que liga/desliga o Conversor A/D
1 - Conversor A/D ligado
0 - Conversor A/D desligado
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
167
Registo ADCON1
ADFM - Bit de seleco do Formato do Resultado A/D
1 - Resultado justicado direita. Os seis bits mais signicantes do ADRESH no so usados
0 - Resultado justicado esquerda. Os seis bits menos signicantes do ADRESL no so usados
VCFG1 - Bit da Tenso de Referncia, escolhe a fonte de tenso para o pino Vref-
1 - Tenso externa aplicada no pino Vref-
0 - Tenso de alimentao interna, Vss, usada como Vref-
VCFG0 - Bit da Tenso de Referncia, escolhe a fonte de tenso para o pino Vref+
1 - Tenso externa aplicada no pino Vref+
0 - Tenso de alimentao interna, Vdd, usada como Vref+
Resumidamente:
De forma a medir uma tenso com o ADC, o seguinte dever ser feito:
Congurar a porta
escrever lgico 1 no bit correspondente do registo TRIS, para congurar como entrada
escrever lgico 1 no bit correspondente do registo ANSEL, para congurar como entrada analgica
Congurar mdulo ADC
Congurar a referncia de tenso no ADCON1

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
168
Escolher o relgio de converso para o ADC, no ADCON0
Escolher um dos canais de entrada CH0-CH13, no ADCON0
Escolher o formato dos dados, pelo bit ADFM no ADCON1
Ligar o ADC, activando o bit ADON no ADCON0
Congurar a interrupo ADC (opcional)
Limpar o bit ADIF
Activar os bits ADIE, PEIE e GIE
Aguardar pelo tempo de aquisio, 20 microsegundos
Iniciar a converso, activando o bit GO/DONE no ADCON0
Aguardar para que a converso A/D termine
necessrio vericar por software, se o bit GO/DONE j est limpo, ou esperar pela interrupo do
ADC
Ler os resultados do ADC, nos registos ADRESL e ADRESH.
Comparador Analgico
Em conjunto com o ADC, existe outro mdulo que s recentemente comeou a ser introduzido dentro de mi-
crocontroladores. Como natural encontrar-se estes componenetes em quaisquer circuitos electrnicos, dois
comparadores de alta qualidade, com electrnica adicional, esto integrados no microcontrolador, e ligados aos
seus pinos.
Como funciona o comparador? Basicamente, o comparador analgico um amplicador que compara a mag-
nitude de tenses s suas duas entradas. Observando as suas funcionalidades fsicas, tem duas entradas e uma
sada. Dependendo de qual entrada tem uma tenso maior (valor analgico), um sinal lgico 0 ou 1 (valor
digital) ir estar na sua sada:

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
169
Comparador Analgico
Quando a tenso no Vin- maior que a tenso em Vin+, a sada do comparador est ao lgico 0;
Quando a tenso no Vin+ maior que a tenso em Vin-, a sada do comparador est ao lgico 1.
Este microcontrolador tem dois destes comparadores, em que as entradas esto ligadas aos pinos I/O RA0-
RA3, e onde as sadas esto ligadas aos pinos RA4 e RA5. Tambm est disponivel um referencial de tenso
interno, dentro do microcontrolador.
Os comparadores so controlados pelos bits dos seguintes registos:
CM1CON0 controla o comparador C1;
CM2CON0 controla o comparador C2;
CM2CON1 controla o comparador C2.
Fonte de Tenso de Referncia interna
Para gerar esta tenso de referncia, fontes externas ou interna podem ser usadas. Aps escolher a fonte da
tenso, o Vref derivado desta, por intermdio de uma rede por escada, baseada em 16 resistncia que formam
um divisor de tenso. A fonte de tenso escolhida para ambas as pontas deste divisor, pelo bit VRSS do
registo VRCON.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
170
A tenso a tirar do divisor de tenso resistivo, escolhida pelos bits VR0-VR3, e usada como tenso de refer-
ncia. Ver gura abaixo.
Mdulo Fonte de Tenso de Referncia
A referncia de tenso do comparador tem duas gamas, com 16 nveis em cada. A escolha da gama controlada
pelo bit VRR do registo VRCON. E a tenso de referncia pode ser disponibilizada na sada do pino RA2/
AN2.
Esta operao realizada pelo registo VRCON.
Comparadores e funcionamento com Interrupes
O bit ag CMIF do registo PIR, activada a cada mudana de estado lgico da sada do comparador. As
mesmas mudanas tambm podem gerar uma interrupo, se os seguintes bits estiverem activos:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
171
Bit CMIE do registo PIE
Bit PEIE do registo INTCON
Bit GIE do registo INTCON
Se a interrupo estiver habilitada, qualquer mudana na sada do comparador, vai acordar o microcontrola-
dor do modo de Sleep, se estiver nesse modo.
Registo CM1CON0
Os bits deste registo, so os que controlam o Comparador C1. Afectam principalmente a congurao das
entradas. Para entender melhor, observar a gura abaixo, que mostra apenas uma parte da electrnica afectada
pelos bits deste registo.
Diagrama interno do Comparador C1

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
172
C1ON - Bit que activa o Comparador C1
1 - Comparador C1 est ligado
0 - Comparador C1 est desligado
C1OUT - Este o bit de sada do comparador C1
Se C1POL=1 (sada do comparador invertida)
1 - A tenso analgica em C1Vin+ menor que a tenso em C1Vin-
0 - A tenso analgica em C1Vin+ maior que a tenso em C1Vin-
Se C1POL=0 (sada do comparador no-invertida)
1 - A tenso analgica em C1Vin+ maior que a tenso em C1Vin-
0 - A tenso analgica em C1Vin+ menor que a tenso em C1Vin-
C1OE - Bit de activao da sada do Comparador C1
1 - A sada do comparador C1 est ligada ao pino C1OUT (obrigatoriedade: C1ON=1 e o bit TRIS=0)
0 - A sada do comparador C1 interna
C1POL - Bit de seleco da Polaridade da sada do Comparador C1, permite a inverso do estado da sada
1 - A sada do comparador C1 invertida
0 - A sada do comparador C1 no-invertida
C1R - Bit de seleco da Referncia do Comparador C1
1 - A entrada no-inversora C1Vin+ ligada tenso de referncia C1Vref
0 - A entrada no-inversora C1Vin+ ligada ao pino C1IN+
C1CH1 e C1CH0 - Bits de seleco de canais do Comparador C1
C1CH1 C1CH0 Entrada do Comparador C1Vin-
0 0 Entrada C1Vin- est ligada ao pino C12IN0-
0 1 Entrada C1Vin- est ligada ao pino C12IN1-
1 0 Entrada C1Vin- est ligada ao pino C12IN2-
1 1 Entrada C1Vin- est ligada ao pino C12IN3-

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
173
Registo CM2CON0
Os bits deste registo, so os que controlam o Comparador C2. Similarmente ao caso anterior, a gura abaixo
mostra um esquema simplicado do circuito afectado por estes bits.
Diagrama interno do Comparador C2
C2ON - Bit que activa o Comparador C2
1 - Comparador C2 est ligado
0 - Comparador C2 est desligado
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
174
C2OUT - Este o bit de sada do comparador C2
Se C2POL=1 (sada do comparador invertida)
1 - A tenso analgica em C2Vin+ menor que a tenso em C2Vin-
0 - A tenso analgica em C2Vin+ maior que a tenso em C2Vin-
Se C2POL=0 (sada do comparador no-invertida)
1 - A tenso analgica em C2Vin+ maior que a tenso em C2Vin-
0 - A tenso analgica em C2Vin+ menor que a tenso em C2Vin-
C2OE - Bit de activao da sada do Comparador C2
1 - A sada do comparador C2 est ligada ao pino C2OUT (obrigatoriedade: C2ON=1 e o bit TRIS=0)
0 - A sada do comparador C2 interna
C2POL - Bit de seleco da Polaridade da sada do Comparador C2, permite a inverso do estado da sada
1 - A sada do comparador C2 invertida
0 - A sada do comparador C2 no-invertida
C2R - Bit de seleco da Referncia do Comparador C2
1 - A entrada no-inversora C2Vin+ ligada tenso de referncia C2Vref
0 - A entrada no-inversora C2Vin+ ligada ao pino C2IN+
C2CH1 e C2CH0 - Bits de seleco de canais do Comparador C2
C2CH1 C2CH0 Entrada do Comparador C2Vin-
0 0 Entrada C2Vin- est ligada ao pino C12IN0-
0 1 Entrada C2Vin- est ligada ao pino C12IN1-
1 0 Entrada C2Vin- est ligada ao pino C12IN2-
1 1 Entrada C2Vin- est ligada ao pino C12IN3-

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
175
Registo CM2CON1
MC1OUT - Cpia do bit C1OUT
MC2OUT - Cpia do bit C2OUT
C1RSEL - Bit de seleco da Referncia do Comparador C1
1 - A tenso de referncia CVref programavel, usada como referncia para Comparador C1
0 - A tenso de referncia xa 0.6V, usada como referncia para Comparador C1
C2RSEL - Bit de seleco da Referncia do Comparador C2
1 - A tenso de referncia CVref programavel, usada como referncia para Comparador C2
0 - A tenso de referncia xa 0.6V, usada como referncia para Comparador C2
T1GSS - Bit de seleco da Gate do Temporizador TMR1
1 - A gate do TMR1 T1G
0 - A gate do TMR1 o comparador SYNCC2OUT
C2SYNC - Bit de sincronizao da sada do Comparador C2
1 - A sada do comparador C2 sincronizada no anco descendente do relgio do TMR1
0 - A sada do comparador C2 assncrona
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
176
Registo VRCON
VREN - Bit de habilitao da tenso de referncia do Comparador C1
1 - A tenso de referncia CVref est ligada
0 - A tenso de referncia CVref est desligada
VROE - Bit de habilitao da tenso de referncia do Comparador C2
1 - A tenso de referncia CVref est ligada ao pino
0 - A tenso de referncia CVref no est ligada ao pino
VRR - Bit de seleco da gama da Tenso de Referncia CVref
1 - A tenso de referncia est seleccionada para a gama baixa
0 - A tenso de referncia est seleccionada para a gama alta
VRSS - Bit de seleco da gama Vref do Comparador
1 - A tenso de referncia est na gama de Vref+ a Vref-
0 - A tenso de referncia est na gama de Vdd a Vss (tenso de alimentao)
VR3-VR0 - Seleco dos valores CVref para Tenso de Referncia
Se VRR = 1 (gama baixa), a tenso de referncia calcula-se pela frmula: CVref = ([VR3:VR0]/24)Vdd
Se VRR = 0 (gama alta), a tenso de referncia calcula-se pela frmula: CVref = Vdd/4 + ([VR3:VR0]/
32)Vdd
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
177
Em resumo :
De forma a convenientemente usar os Comparadores internos, necessrio o seguinte:
1 - Congurar o mdulo:
De modo a escolher o modo apropriado, os bits dos registos CM1CON0 e CM2CON0 devem ser congura-
dos. A interrupo de ser desligada, quando da mudana de modos.
2 - Congurar a tenso de referncia interna Vref (se usada). No registo VRCON necessrio:
Escolher uma das duas gamas de tenso, pelo bit VRR
Congurar a tenso de referncia Vref, pelos bits VR3-VR0
Activar o bit VROE se necessrio
Activar a tenso de referncia Vref, activando o bit VREN
Frmulas usadas para calcular a tenso de referncia:
VRR = 1 (gama baixa)
CVref = ([VR3:VR0]/24)VLADDER
VRR = 0 (gama alta)
CVref = (VLADDER/4) + ([VR3:VR0]VLADDER/32)
Vladder = Vdd ou ([Vref+] - [Vref-]) ou Vref+
3 - O arranque:
Activar interrupo, activando os bits CMIE (registo PIE), PEIE e GIE (no registo INTCON)
Ler os bits C1OUT e C2OUT do registo CMCON
Ler a Flag CMIF do registo PIR. Depois de activada, dever ser limpa por software.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
178
Outros circuitos internos
Oscilador, EEPROM e Reset
Como se pode ver pela gura abaixo, o relgio pode ser gerado por um de dois osciladores internos:
Dois oscliadores internos
Um Oscilador Externo instalado na proximidade do microcontrolador, e ligado aos pinos OSC1 e OSC2.
chamado de externo, porque consiste em electrnica externa que gera o sinal de relgio e a estabilizao de
frequncia, tal como um cristal de quartzo, ressoador cermico ou resistncia-condensador.
O modo do oscilador escolhido por bits que so enviados durante a programao fsica, numa chamada
Palavra de Congurao, ou Fusveis.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
179
O oscilador interno, consiste em dois osciladores internos separados:
O HFINTOSC um oscilador interno de alta-frequncia, que funciona a 8MHz. O microcontrolador pode
usar a fonte de relgio a essa velocidade, ou dividi-la com um divisor.
O LFINTOSC um oscilador interno de baixa-frequncia, que funciona a 31KHz. O seu relgio usado
para o Watch-dog e temporizadores Power-up, mas pode tambm ser usado como fonte de relgio para todo
o microcontrolador.
O relgio do sistema pode ser escolhido entre externo e interno, atravs do bit SCS - System Clock Select, do
registo OSCCON.
Registo OSCCON
O registo OSCCON controla o relgio de sistema, e as opes de seleco da frequncia. Contm os seguintes
bit:
Bits de seleco de frequncia, IRCF2-IRCF0
Bits de estado da frequncia, HTS e LTS
Bits de controlo do relgio do sistema, OSTA e SCS
IRCF2-IRCF0 - Bits de seleco da Frequncia do Oscilador Interno. A combinao destes bits determina a
taxa de diviso. A frequncia de relgio do oscilador interno tambm determinada desta forma.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
180
IRCF2 IRCF1 IRCF0 Frequency OSC.
1 1 1 8 MHz HFINTOSC
1 1 0 4 MHz HFINTOSC
1 0 1 2 MHz HFINTOSC
1 0 0 1 MHz HFINTOSC
0 1 1 500 kHz HFINTOSC
0 1 0 250 kHz HFINTOSC
0 0 1 125 kHz HFINTOSC
0 0 0 31 kHz LFINTOSC
OSTS - Bits de estado do Start-up Time-out do Oscilador. Indica que fonte de relgio est, no momento, em
uso. apenas de leitura.
1 - Oscilador externo em uso
0 - Um dos osciladores internos est em uso (HFINTOSC ou LFINTOSC)
HTS - bit de estado do HFINTOSC (125KHz - 8MHz). Indica se o oscilador de alta-frequncia est a
funcionar com estabilidade
1 - HFINTOSC est estavel
0 - HFINTOSC est instavel
LTS - bit de estado do LFINTOSC (31KHz). Indica se o oscilador de baixa-frequncia est a funcionar com
estabilidade
1 - LFINTOSC est estavel
0 - LFINTOSC est instavel
SCS - Bit de seleco do Relgio do Sistema. Determina qual o oscilador a usar como fonte de relgio
1 - O oscilador interno usado como fonte de relgio do sistema
0 - O oscilador externo usado como fonte de relgio do sistema
O modo do oscilador escolhido por bits que so enviados durante a programao fsica, numa chamada
Palavra de Congurao, ou Fusveis.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
181
Modos de Relgio Externo
De maneira a habilitar o oscilador externo a funcionar a diferentes velocidades, e a usar diferentes componentes
para a estabilizao da frequncia, este pode ser congurado por um de vrios modos.
A seleco do modo pode ser incluida junto com o software, no momento da escrita, ou ento pode ser ajustada
no software de programao no PC.
Durante a programao, os bytes da Palavra de Congurao - Fusiveis, so escritos na memria ROM do
microcontrolador, e guardados em registos especiais, que no esto disponiveis para o o programador. com
base nestes bits, que o microcontrolador sabe o que fazer.
Congurao dos Fusiveis do PIC
Modo EC - Oscilador Externo
O modo de relgio externo, EC, usa o relgio do sistema congurado para oscilador externo. A frequncia
deste relgio ilimitada (0-20MHz).
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
182
Este modo tem as seguintes vantagens:
A fonte de relgio externo ligada ao pino OSC1, e o pino OSC2 est disponivel para I/O geral
possivel sincronizar o funcionamento do microcontrolador, com o resto da electrnica
Neste modo, o microcontrolador arranca o funcionamento assim que o sistema energizado
Se se parar o relgio externo temporariamente, o microcontrolador congela o funcionamento, deixando
todos os dados intactos. Assim que se restabelecer o relgio, o microcontrolador resume o funcionamento,
do ponto de onde parou, como se nada tivesse acontecido
Oscilador Externo em modo EC

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
183
Modo LP, XT ou HS - Oscilador Externo
Dois tipos diferentes de cristais de quartzo
Os modos LP, XT e HS, suportam o uso do oscilador interno, para congurar a fonte de relgio. A frequn-
cia desta fonte determinada por cristais de quartzo, ou ressoadores cermicos, ligados aos pinos OSC1 e
OSC2.
Dependendo do tipo de cristal usado, escolher um dos seguintes modos:
Modo LP (Low Power - Baixa Potncia) - usado apenas para cristais de quartzo de baixa-frequncia. Este
modo foi desenhado para acolher cristais de 32.768KHz, normalmente usados para relgios de quartzo. So
simples de reconhecer, pela sua forma cilndrica, e o consumo de corrente a mais baixa de todos os modos.
Modo XT - usado para cristais de quartzo de frequncias at os 8MHz. O consumo de corrente mediano.
Modo HS (High Speed - Alta Velocidade) - usado para cristais quartzo de frequncias acima dos 8MHz. O
consumo de corrente o mais elevado.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
184
Esquema elctrico do Oscilador Externo, e de alguns componentes adicionais
Ressoador Cermico no modo XT ou HS
Ressoador cermico
Os ressoador cermicos tem caractersticas bastante similares aos cristais de quartzo. Por isso so ligados da
mesma maneira. Mas tem a vantagem de serem muito menos onerosos, no tendo to boa estabilidade de
frequncia como os cristais. So usados para frequncias de relgio entre os 100KHz e os 20MHz.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
185
Modo RC e RCIO - Oscilador Externo
H certamente muitas vantagens em usar elementos para estabilizao de frequncia. Mas, por vezes, so per-
feitamente desnecessrios.
suciente que o oscilador funcione a uma frequncia no denida, e a soluo mais simples e menos onerosa,
usar uma resistncia-condensador para fazer o oscilador funcionar.
H dois modos:
Modo RC:
Neste modo, o circuito RC ligado ao pino OSC1, como se
mostra na gura. O pino OSC2 tem na sua sada, a frequn-
cia do oscilador RC, dividido por 4. Este sinal pode ser usado
para calibrao, sincronizao ou outros.
Modo RCIO:
Similar ao anterior, com a diferena de que o pino OSC2
usado como um I/O geral
Em ambos os casos, recomendado usar componentes como mostram nas guras.
A frequncia deste oscilador calculada pela frmula f = 1 / T , onde:
f = Frequncia [Hertz]
T = R*C = constante de tempo [segundos]
R = Resistncia [Ohm]
C = Capacidade [Farad]
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
186
Modos de Relgio Interno
O oscilador interno consiste em dois osciladores separados, que podem ser escolhidos como fonte de relgio
do sistema:
O oscilador HFINTOSC calibrado de fbrica, e oscila a 8MHz. Esta frequncia pode ser ajustada pelo
programador, usado bits do registo OSCTUNE.
O oscilador LFINTOSC no calibrado de fbrica, e oscila a 31KHz.
Da mesma forma que o oscilador externo, o interno tambm pode funcionar em vrios modos. O modo selec-
cionado da mesma maneira que o oscilador externo - pelos bits da Palavra de Congurao - Fusiveis.
Modo INTOSC - Oscilador Interno
Neste modo, o pino OSC1 est disponivel para I/O
geral, enquanto que o pino OSC2 tem disponivel a
frequncia de onscilao interna dividida por 4.
Modo INTOSCIO - Oscilador Interno
Neste modo, ambos os pinos OSC1 e OSC2 esto
disponiveis para I/O.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
187
Congurao do Oscilador Interno
O oscilador interno consiste em dois circuitos separados.
1.
O oscilador interno de alta-frequncia HFINTOSC, est ligado a um divisor de frequncia. calibrado de
fbrica, e funciona a 8MHz. Usando o divisor, este oscilador pode ter na sua sada, uma de sete frequncias, que
podem ser escolhidas pelos bits IRCF2-IRCF0 do registo OSCCON.
O HFINTOSC ligado, escolhendo uma de sete frequncias (entre 125KHz e 8MHz), e activando o bit
SCS do OSCCON. Como se pode ver pela gura abaixo, toda a congurao realizada pelos bits do registo
OSCCON.
Conguraes do Oscilador Interno
2.
O oscilador interno de baixa-frequncia LFINTOSC, funciona a 31KHz e no vem calibrado de fbrica.
activado, escolhendo esta frequncias (bits no OSCCON), e activando o bit SCS do mesmo registo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
188
Modo de Arranque de Relgio a Duas-Velocidades
O Modo de Arranque de Relgio a Duas-Velocidades, usado para dar poupanas energticas adicionais,
quando o microcontrolador funciona em modo Sleep.
Quando congurado no modo LP, XT ou HS, o oscilador externo vai estar desligado quando em Sleep, de
maneira a reduzir o consumo mdio energtico do microcontrolador.
Quando as condies para acordar esto reunidas, o microcontrolador no vai retomar o servio automatica-
mente, porque tem que aguardar que o sinal de relgio que estavel. Este atraso de exactamente 1024 pulsos.
Depois destes, o microcontrolador procede com a execuo do programa.
O problema que, quase sempre, so apenas umas poucas instrues executadas, antes de o microcontrolador
entrar em Sleep. Signica que, na maior parte do tempo, a energia desperdiada.
Este problema solucionado, usando o oscilador interno para a execuo do programa, enquanto os 1024
pulsos so contados. Seguidamente, e assim que o oscilador externo car estvel, vai automaticamente tomar o
lugar principal. Todo o processo habilitado, activando o bit IESO nos Fusiveis.
Fail-Safe Clock Monitor - FSCM - Monitor contra falhas de Relgio
O FSCM monitoriza o funcionamento do oscilador externo, e permite, ao microcontrolador, continuar a ex-
ecuo do programa, mesmo que o oscilador externo falhe por alguma razo. Neste caso, o oscilador interno
assume a operao.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
189
Monitor de Relgio contra falhas
O FSCM detecta a falha do oscilador, comparando as fontes de relgio Interna e Externa. Caso o oscilador
esterno demore mais de 2 milisegundos a chegar aos pinos do microcontrolador, a fonte de relgio mudada
automaticamente para o oscilador interno, que continua a operao, controlado pelos bits do OSCCON.
Quando o bit OSFIE do registo PIE2 estiver activo, uma interrupo gerada.
O relgio de sistema continuar a ser o interno, at que o oscilador externo retome o funcionamento. A tran-
sio feita automaticamente.
Este mdulo activado, pela congurao do bit FCMEN nos Fusiveis, aquando da programao fsica do
microcontrolador.
Registo OSCTUNE
Quaisquer modicaes no registo OSCTUNE, afectam a frequncia HFINTOSC, mas no a LFINTOSC.
Tambm, no h indicao durante a operao, de que houve mudana.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
190
TUN4-TUN0 - Bits de Sintonizao da Frequncia. Pela combinao destes cinco bit, a frequncia do oscila-
dor de 8MHz varia. Desta maneira, as frequncias obtidas pelo divisor, tambm mudam.
TUN4 TUN3 TUN2 TUN1 TUN0 Frequncia
0 1 1 1 1 Mxima
0 1 1 1 0
0 1 1 0 1
. . . . .
. . . . .
0 0 0 0 1
0 0 0 0 0 Calibrado
1 1 1 1 1
. . . . .
. . . . .
1 0 0 1 0
1 0 0 0 1
1 0 0 0 0 Mnima

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
191
Memria EEPROM
A EEPROM no pertence, nem memria do programa (ROM FLASH), nem memria de dados (RAM),
mas sim a um grupo especial. Mesmo estas posies de memria no sendo facil e rapidamente acessiveis como
os outros registos, so de grande importncia pois, os dados da EEPROM, so permanentemente gravados. Os
dados da EEPROM podem ser alterados a qualquer momento. Devido a estas excepcionais qualidades, cada
byte de EEPROM valioso.
O PIC estudado neste manual tem 256 posies de EEPROM, controlados pelos bits dos seguintes registos:
EECON1 - registo de controlo
EECON2 - registo de controlo
EEDAT - grava dados prontos para ler/escrever
EEADR - grava endereo a ser acedido
No entanto, o EECON2 no um registo verdadeiro, pois no existe sicamente. apenas usado na sequncia
de escrita.
Os registos EEDATH e EEADRH, pertencem ao mesmo grupo de registos usados durante a escrita/leitura
da EEPROM. Ambos so udados, tambm, para escrita/leitura da memria do programa (ROM FLASH).
Como esta considerada uma zona de risco, pois no queremos inadvertidamente apagar o programa do mi-
crocontrolador, ca o aviso.
Registo EECON1

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
192
EEPGD - Bit de seleco de acesso memria de Programa ou EEPROM de Dados
1 - Acede memria de Programa, ROM FLASH
0 - Acede memria de Dados, EEPROM
WRERR - Flag de error na EEPROM
1 - A operao de escrita foi prematuramente terminada e um erro ocorreu
0 - A operao de escrita terminada
WREN - Bit de habilitao da escrita da EEPROM
1 - Escrita na EEPROM permitida
0 - Escrita na EEPROM proibida
WR - Bit de controlo da Escrita
1 - D incio escrita na EEPROM
0 - Escrita para a EEPROM est completa
RD - Bit de controlo da Leitura
1 - D incio leitura da EEPROM
0 - Leitura da EEPROM desactivada
Leitura da EEPROM
De modo a se poder ler da EEPROM, o seguinte procedimento dever ser executado:
Escrever um endereo (0x00 a 0xFF) no registo EEADR
Seleccionar o acesso EEPROM, pelo bit EEPGD no registo EECON1
Para ler a posio, activar o bit RD no mesmo registo
Os dados so armazenados no registo EEDAT, e prontos a serem usados.
O seguinte exemplo mostra a leitura da EEPROM:
1.
2.
3.
4.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
193
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Access bank 2
MOVF ADDRESS,W ; Move address to the W register
MOVWF EEADR ; Write address
BSF STATUS,RP0 ; Access bank 3
BCF EECON1,EEPGD ; Select EEPROM
BSF EECON1,RD ; Read data
BCF STATUS,RP0 ; Access bank 2
MOVF EEDATA,W ; Data is stored in the W register
Escrita da EEPROM
De modo a escrever na EEPROM, deve escrever-se o endereo no registo EEADR, e depois o byte de dados
no registo EEDAT. Seguidamente necessrio fazer uma sequncia de segurana, para iniciar a escrita de cada
byte. As interrupes devem ser desligadas durante esta sequncia.
O seguinte exemplo mostra a escrita na EEPROM:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
194
BSF STATUS,RP1
BSF STATUS,RP0
BTFSC EECON,WR1 ; Wait for the previous write to complete
GOTO $-1 ;
BCF STATUS,RP0 ; Bank 2
MOVF ADDRESS,W ; Move address to W
MOVWF EEADR ; Write address
MOVF DATA,W ; Move data to W
MOVWF EEDATA ; Write data
BSF STATUS,RP0 ; Bank 3
BCF EECON1,EEPGD ; Select EEPROM
BSF EECON1,WREN ; Write to EEPROM enabled
BCF INCON,GIE ; All interrupts disabled
MOVLW 55h ; Required sequence start
MOVWF EECON2
MOVLW AAh
MOVWF EECON2 ; Required sequence end
BSF EECON1,WR
BSF INTCON,GIE ; Interrupts enabled
BCF EECON1,WREN ; Write to EEPROM disabled
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
195
Reset! Black-out, Brown-out ou Ruidos?
No Reset, o microcontrolador imediatamente pra o funcionamento, e limpa os seus registos.
O sinal de Reset pode ser gerado externamente a qualquer momento, pelo nivel lgizo 0 no pino MCLR. Se
necessrio, tambm pode ser gerado pela electrnica interna. O Power-on gera sempre um Reset. Nomeada-
mente, devido a vrios eventos que acontecem quando a fonte de alimentao est ligada (maus contactos de
interruptores, arcos elctricos, tenso a subir vagarosamente, estabilizao gradual da frequncia de relgio,
etc), necessrio forar um atraso de tempo, antes do microcontrolador iniciar o funcionamento.
Dois temporizadores internos - PWRT e OST, esto encarregados deste servio. O primeiro pode ser ligado/
desligado durante a execuo do programa.
Funciona da seguinte maneira:
Quando a fonte de alimentao alcana os 1.2-1.7V,
o circuito de Power-up pe o microcontrolador
em Reset, por aproximadamente 72 milisegundos.
Imediatamente a este temporizador ter terminado,
outro sinal de Reset gerado pelo Oscilador de
Start-up, que aguarda 1024 periodos do oscilador
de quartzo. Quando este atraso termina, marcado a
T Reset na gura, e o pino MCLR estiver a lgico 1,
o microcontrolador d incio execuo da primeira
instruo do programa.
Atraso de Incio do Oscilador
H, ainda, mais dois Resets, que podem ocorrer durante o funcionamento, bem como no momento em que a
energia desligada.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
196
Reset por Black-out - Falha de Energia Sbita
O Reset de Black-out acontece quando a energia de
alimentao desligada. Nesse caso, o microcontro-
lador no tem tempo para realizar nenhuma funo
imprevisivel, simplesmente porque a tenso cai
abruptamente abaixo do seu valor mnimo.
Por outras palavras, no possivel fazer nada quando
esta situao acontece.
Perda de Energia Sbita
Reset por Brown-out - Descida de Tenso Lenta e Gradual
Quando a tenso de alimentao desce lentamente,
tpico de sistemas alimentados a baterias, a electrni-
ca interna gradualmente pra o seu funcionamento,
e o chamado reset por brown-out acontece. Neste
caso, antes do microcontrolador parar a execuo do
programa, h uma grave perigo de que, circuitos que
trabalhem a uma tenso superior, comecem a trabal-
har de forma descontrolada. Esta problemtica, tam-
bm, pode causar alteraes fatais no programa em si,
porque est gravado na memria FLASH.
Perda de Energia Gradual
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
197
Ruidos
Este um tipo especial de Reset por Brown-out, que
ocorre em ambientes industriais, quando a fonte de
alimentao oscila por um momento, e deixa cair o
seu valor abaixo do nvel mnimo.
Mesmo que curtos, estes ruidos na linha de alimenta-
o, podem causar problemas no funcionamento do
dispositivo.
Rudos
Pino de MCLR
Um nvel lgico 0 no pino MCLR, faz um Reset imediato. recomendado que seja ligado como mostra a
gura abaixo. A funo dos componentes adicionais, a de conseguir suster um estado lgico 1 puro, durante
o funcionamento normal.
De maneira a evitar qualquer erro que possa acontecer
com um Reset por Brown-out, este microcontrolador
tem incluido um sistema de defesa.
um circuito simples, mas ecaz, que reage de cada
vez que a tenso de alimentao desce abaixo de 4V,
e se matm assim por mais de 100 microsegundos.
Nesse caso, este circuito gera um sinal de Reset e,
desde esse momento, todo o microcontrolador fun-
ciona como se tivesse sido acabado de ligar.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
198
Conjunto de Instrues
J dissemos que um microcontrolador no como qualquer outro circuito integrado. Quando saem da cadeia
de produo, a maioria dos circuitos integrados, esto prontos para serem introduzidos nos dispositivos, o que
no o caso dos microcontroladores.
Para que um microcontrolador cumpra a sua tarefa, ns temos que lhe dizer exactamente o que fazer. Por
outras palavras, ns temos que escrever o programa que o microcontrolador vai executar. Neste captulo iremos
descrever as instrues que constituem o assembler, ou seja, a linguagem de baixo nvel para os microcontrola-
dores PIC.

Conjunto de Instrues da Famlia PIC16Fxx de Microcontroladores
O conjunto completo compreende 35 instrues, e mostra-se na tabela que se segue. Uma razo para este
pequeno nmero de instrues, resulta, principalmente do facto de estarmos a falar de um microcontrolador
RISC, cujas instrues foram optimizadas tendo em vista a rapidez de funcionamento, simplicidade de arqui-
tectura e compactao de cdigo.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
199
*1 - Se o porto de entrada/sada for o operando origem, lido o estado dos pinos do microcontrolador.
*2 - Se esta instruo for executada no registo TMR0 e se d=1, o divisor atribudo a esse temporizador
automaticamente limpo.
*3 - Se o PC for modicado, ou se resultado do teste for verdadeiro, a instruo executada em dois ciclos
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
200
Transferncia de dados
A transferncia de dados num microcontrolador, ocorre entre o registo de trabalho W e um registo f que
representa um qualquer local de memria na RAM interna (quer se trate de um registo especial ou de um
registo de uso genrico).
As primeiras trs instrues (observar a tabela anterior), referem-se escrita de uma constante no registo W
(MOVLW uma abreviatura para MOVa Literal para W), cpia de um dado do registo W para o registo
f , e cpia de um dado de um registo f para o registo W (ou nele prprio, caso em que apenas a ag do zero
afectada).
A instruo CLRF, escreve a constante 0 no registo f , e CLRW escreve a constante 0 no registo W.
A instruo SWAPF troca o nibble (conjunto de 4 bits) mais signicativo, com o nibble menos signicativo de
um registo, passando o primeiro a ser o menos signicativo, e o outro o mais signicativo do registo.

Lgicas e aritmticas
De todas as operaes aritmticas possveis, os microcontroladores PIC, tal como a grande maioria dos outros
microcontroladores, apenas suportam a subtraco e a adio. Os bits ou ags C, DC e Z, so afectados con-
forme o resultado da adio ou da subtraco, com uma nica excepo: uma vez que a subtraco executada
como uma adio com um nmero negativo, a ag C (Carry), comporta-se inversamente no que diz respeito
subtraco. Por outras palavras, posta a 1 se a operao possvel, e posta a 0 se um nmero maior tiver
que ser subtrado de outro mais pequeno.
A lgica dentro do PIC tem a capacidade de executar as operaes AND, OR, EX-OR, complemento (COMF)
e rotaes (RLF e RRF).
Estas duas ltimas instrues, rodam o contedo do registo, atravs desse registo e da ag C, em uma casa
para a esquerda (na direco do bit 7), ou para a direita (na direco do bit 0). O bit que sai do registo escrito
na ag C e o contedo anterior desta ag, escrito no bit situado do lado oposto no registo. Ver imagem com
exemplo.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
201

Rotao pelo Bit de Carry
Operaes com bits
As instrues BCF e BSF, pem a 0 ou a 1 qualquer bit de qualquer local da memria. Apesar de parecer
uma operao simples, ela executada do seguinte modo, o CPU primeiro l o byte completo, altera o valor de
um bit e, a seguir, escreve o byte completo no mesmo stio.
Controlo de Execuo de um Programa
As instrues GOTO, CALL e RETURN so executadas do mesmo modo que em todos os outros microcon-
troladores. A diferena que a pilha (stack) independente da RAM interna, e limitada a oito nveis.
A instruo RETLW k idntica instruo RETURN, excepto que, ao regressar de uma subrotina, escrita
no registo W uma constante denida pelo operando k da instruo. Esta instruo, permite implementar
facilmente listagens (tambm chamadas tabelas de look-up).
Esta tabela pode apresentar-se como um subprograma, que consiste numa srie de instrues RETLW k,
onde as constantes k so membros da tabela.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
202
Main movlw 2 ;escreve nmero 2 para o acumulador
call Lookup ;salta para a tabela
Lookup addwf PCL,f ;adiciona acumulador ao contador de programa PCL
retlw k0 ;retorno da subrotina (acumulador contem k0)
retlw k1 ;...
retlw k2 ;...
... ;...
... ;...
retlw kn ;retorno da subrotina (acumulador contem kn)
Escreve-se a posio de um membro da nossa tabela no registo W e, usando a instruo CALL, chama-se
o subprograma que contm a tabela.
A primeira linha do subprograma, ADDWF PCL,f, adiciona a posio na tabela (que est escrita em
W) ao endereo do incio da tabela (que est no registo PCL), assim, obtm-se o endereo real do dado da
tabela na memria de programa.
Quando se regressa do subprograma, ter-se- no registo W, o contedo do membro da tabela endereado.
No exemplo anterior, a constante k2 estar no registo W, aps o retorno do subprograma.
RETFIE (RETurn From Interrupt Interrupt Enable, ou regresso da rotina de interrupo com as inter-
rupes habilitadas) um regresso da rotina de interrupo, e difere de RETURN apenas em que, automatica-
mente, pe a 1 o bit GIE (Global Interrupt Enable - habilitao global das interrupes).
Quando a interrupo comea, este bit automaticamente reposto a 0. Tambm, quando a interrupo tem
incio, somente o valor do contador de programa posto no cimo da pilha.
O PIC no tem capacidade automtica de armazenamento dos registos de estado. Ou seja, os registos de
trabalho do microcontrolador devem ser guardados assim que se entra na rotina de interrupo, para que mais
tarde, mesmo antes de sar, se reponham estes registos de trabalho.
1.
2.
3.
4.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
203
Os saltos condicionais esto sintetizados em duas instrues: BTFSC e BTFSS. Consoante o estado lgico do
bit do registo f que est a ser testado, a instruo seguinte no programa , ou no, executada.
Perodo de execuo da instruo
Todas as instrues so executadas num nico ciclo, excepto as instrues de ramicao condicional se a
condio for verdadeira, ou se o contedo do contador de programa for alterado pela instruo. Nestes casos,
a execuo requer dois ciclos de instruo, e o segundo ciclo executado como sendo um NOP (Nenhuma
Operao).
Quatro oscilaes de clock, perfazem um ciclo de instruo. Se estivermos a usar um oscilador com 4MHz de
frequncia, o tempo normal de execuo de uma instruo ser de 1 microsegundo e, no caso de uma ramica-
o condicional, de 2 microsegundos.

Listagem das instrues
f - qualquer local de memria num microcontrolador
W - registo de trabalho
b - posio de bit no registo f
d - registo de destino
label - grupo de oito caracteres que marca o incio de uma parte do programa (rtulo)
TOS - cimo da pilha
[] - opcional
<> - grupo de bits num registo
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
204
MOVLW - Escrever constante no registo W
Sintaxe: [rtulo] MOVLW k
Descrio: A constante de 8-bits k vai para o registo W.
Operao: k -> ( W )
Operando: 0 <= k <= 255
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: MOVLW 0x5A
Depois da instruo: W= 0x5A
Exemplo 2: MOVLW REGISTAR
Antes da instruo: W = 0x10 e REGISTAR = 0x40
Depois da instruo: W = 0x40
MOVWF Copiar W para f
Sintaxe: [rtulo] MOVWF f
Descrio: O contedo do registo W copiado para o registo f
Operao: W -> ( f )
Operando: 0 <= k <= 127
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: MOVWF OPTION_REG
Antes da instruo: OPTION_REG = 0x20
W = 0x40
Depois da instruo: OPTION_REG = 0x40
W = 0x40
Exemplo 2: MOVWF INDF
Antes da instruo: W = 0x17
FSR = 0xC2
Contedo do endereo 0xC2 = 0x00
Depois da instruo: W = 0x17
FSR = 0xC2
Contedo do endereo 0xC2 = 0x17
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
205
MOVF Copiar f para d
Sintaxe: [rtulo] MOVF f, d
Descrio: O contedo do registo f guardado no local determinado pelo operando d
Se d = 0, o destino o registo W
Se d = 1, o destino o prprio registo f
A opo d = 1, usada para testar o contedo do registo f, porque a execuo
desta instruo afecta a ag Z do registo STATUS.
Operao: f -> ( d )
Operando: 0 <= k <= 127, d E [0, 1]
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: MOVF FSR, 0
Antes da instruo: FSR = 0xC2
W = 0x00
Depois da instruo: W = 0xC2
Z = 0
Exemplo 2: MOVF INDF, 0
Antes da instruo: W = 0x17
FSR = 0xC2
contedo do endereo 0xC2 = 0x00
Depois da instruo: W = 0x00
FSR = 0xC2
contedo do endereo 0xC2 = 0x00
Z = 1

CLRW Escrever 0 em W
Sintaxe: [rtulo] CLRW
Descrio: O contedo do registo W passa para 0 e a ag Z do registo STATUS toma o
valor 1.
Operao: 0 -> ( W )
Operando: -
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
206
Exemplo: CLRW
Antes da instruo: W = 0x55
Depois da instruo: W = 0x00
Z = 1

CLRF Escrever 0 em f
Sintaxe: [rtulo] CLRF f
Descrio: O contedo do registo f passa para 0 e a ag Z do
registo STATUS toma o valor 1.
Operao: 0 -> f
Operando: 0 <= k <= 127
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: CLRF STATUS
Antes da instruo: STATUS = 0xC2
Depois da instruo: STATUS = 0x00
Z = 1
Exemplo 2: CLRF INDF
Antes da instruo: FSR = 0xC2
contedo do endereo 0xC2 = 0x33
Depois da instruo: FSR = 0xC2
contedo do endereo 0xC2 = 0x00
Z = 1

SWAPF Copiar o contedo de f para d, trocando a posio dos 4 primeiros bits com a dos 4 ltimos
Sintaxe: [rtulo] SWAPF f, d
Descrio: Os 4 bits + signicativos e os 4 bits signicativos de f, trocam de
posies.
Se d = 0, o resultado guardado no registo W
Se d = 1, o resultado guardado no registo f
Operao: f <0:3>-> d <4:7>, f <4:7>-> d <0:3>,
Operando: 0 <= k <= 127, d E [0, 1]
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
207
Exemplo 1: SWAPF REG, 0
Antes da instruo: REG = 0xF3
Depois da instruo: REG = 0xF3
W = 0x3F
Exemplo 2: SWAPF REG, 1
Antes da instruo: REG = 0xF3
Depois da instruo: REG = 0x3F

ADDLW Adicionar W a uma constante
Sintaxe: [rtulo] ADDLW k
Descrio: O contedo do registo W, adicionado constante de 8-bits k e o resul-
tado guardado no registo W.
Operao: ( W ) + k -> W
Operando: 0 <= k <= 255
Flag: C, DC, Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: ADDLW 0x15
Antes da instruo: W= 0x10
Depois da instruo: W= 0x25
Exemplo 2: ADDLW REG
Antes da instruo: W = 0x10
REG = 0x37
Depois da instruo: W = 0x47

ADDWF Adicionar W a f
Sintaxe: [rtulo] ADDWF f, d
Descrio: Adicionar os contedos dos registos W e f
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: (W) + ( f ) -> d, d E [0, 1]
Operando: 0 <= k <= 127
Flag: C, DC, Z
Nmero de palavras: 1
Nmero de ciclos: 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
208
Exemplo 1: ADDWF FSR, 0
Antes da instruo: W = 0x17
FSR = 0xC2
Depois da instruo: W = 0xD9
FSR = 0xC2
Exemplo 2: ADDWF INDF,0
Antes da instruo: W = 0x17
FSR = 0xC2
contedo do endereo 0xC2 = 0x20
Depois da instruo: W = 0x37
FSR = 0xC2
Contedo do endereo 0xC2 = 0x20

SUBLW Subtrair W a uma constante
Sintaxe: [rtulo] SUBLW k
Descrio: O contedo do registo W, subtrado constante k e, o resultado, guar-
dado no registo W.
Operao: k - ( W ) -> W
Operando: 0 <= k <= 255
Flag: C, DC, Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: SUBLW 0x03
Antes da instruo: W= 0x01, C = x, Z = x
Depois da instruo: W= 0x02, C = 1, Z = 0 Resultado > 0
Antes da instruo: W= 0x03, C = x, Z = x
Depois da instruo: W= 0x00, C = 1, Z = 1 Resultado = 0
Antes da instruo: W= 0x04, C = x, Z = x
Depois da instruo: W= 0xFF, C = 0, Z = 0 Resultado < 0
Exemplo 2: SUBLW REG
Antes da instruo: W = 0x10
REG = 0x37
Depois da instruo: W = 0x27
C = 1 Resultado > 0

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
209
SUBWF Subtrair W a f
Sintaxe: [rtulo] SUBWF f, d
Descrio: O contedo do registo W subtrado ao contedo do registo f
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: ( f ) - (W) -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: C, DC, Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo: SUBWF REG, 1
Antes da instruo: REG= 3, W= 2, C = x, Z = x
Depois da instruo: REG= 1, W= 2, C = 1, Z = 0 Resultado
> 0
Antes da instruo: REG= 2, W= 2, C = x, Z = x
Depois da instruo: REG=0, W= 2, C = 1, Z = 1 Resultado
= 0
Antes da instruo: REG=1, W= 2, C = x, Z = x
Depois da instruo: REG= 0xFF, W=2, C = 0, Z = 0 Resultado
< 0
ANDLW Fazer o E lgico de W com uma constante
Sintaxe: [rtulo] ANDLW k
Descrio: executado o E lgico do contedo do registo W, com a constante k
O resultado guardado no registo W.
Operao: ( W ) .AND. k -> W
Operando: 0 <= k <= 255
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: ANDLW 0x5F
Antes da instruo: W= 0xA3 ; 0101 1111 (0x5F)
; 1010 0011 (0xA3)
Depois da instruo: W= 0x03; 0000 0011 (0x03)
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
210
Exemplo 2: ANDLW REG
Antes da instruo: W = 0xA3 ; 1010 0011 (0xA3)
REG = 0x37 ; 0011 0111 (0x37)
Depois da instruo: W = 0x23 ; 0010 0011 (0x23)
ANDWF Fazer o E lgico de W com f
Sintaxe: [rtulo] ANDWF f, d
Descrio: Faz o E lgico dos contedos dos registos W e f
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: (W) .AND. ( f ) -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: ANDWF FSR, 1
Antes da instruo: W= 0x17, FSR= 0xC2; 0001 1111 (0x17)
; 1100 0010 (0xC2)
Depois da instruo: W= 0x17, FSR= 0x02 ; 0000 0010 (0x02)
Exemplo 2: ANDWF FSR, 0
Antes da instruo: W= 0x17, FSR= 0xC2; 0001 1111 (0x17)
; 1100 0010 (0xC2)
Depois da instruo: W= 0x02, FSR= 0xC2; 0000 0010 (0x02)

IORLW Fazer o OU lgico de W com uma constante
Sintaxe: [rtulo] IORLW k
Descrio: executado o OU lgico do contedo do registo W, com a constante de
8 bits k, o resultado guardado no registo W.
Operao: ( W ) .OR. k -> W
Operando: 0 <= k <= 255
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
211
Exemplo 1: IORLW 0x35
Antes da instruo: W= 0x9A
Depois da instruo: W= 0xBF
Z= 0
Exemplo 2: IORLW REG
Antes da instruo: W = 0x9A
contedo de REG = 0x37
Depois da instruo: W = 0x9F
Z = 0
IORWF Fazer o OU lgico de W com f
Sintaxe: [rtulo] IORWF f, d
Descrio: Faz o OU lgico dos contedos dos registos W e f
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: (W) .OR. ( f ) -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: IORWF REG, 0
Antes da instruo: REG= 0x13, W= 0x91
Depois da instruo: REG= 0x13, W= 0x93
Z= 0
Exemplo 2: IORWF REG, 1
Antes da instruo: REG= 0x13, W= 0x91
Depois da instruo: REG= 0x93, W= 0x91
Z= 0

XORLW OU- EXCLUSIVO de W com uma constante
Sintaxe: [rtulo] XORLW k
Descrio: executada a operao OU-Exclusivo do contedo do registo W, com a
constante k. O resultado guardado no registo W.
Operao: ( W ) .XOR. k -> W
Operando: 0 <= k <= 255
Flag: Z
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
212
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: XORLW 0xAF
Antes da instruo: W= 0xB5 ; 1010 1111 (0xAF)
; 1011 0101 (0xB5)
Depois da instruo: W= 0x1A; 0001 1010 (0x1A)
Exemplo 2: XORLW REG
Antes da instruo: W = 0xAF ; 1010 1111 (0xAF)
REG = 0x37 ; 0011 0111 (0x37)
Depois da instruo: W = 0x98 ; 1001 1000 (0x98)
Z = 0

XORWF OU-EXCLUSIVO de W com f
Sintaxe: [rtulo] XORWF f, d
Descrio: Faz o OU-EXCLUSIVO dos contedos dos registos W e f
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: (W) .XOR. ( f ) -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: XORWF REG, 1
Antes da instruo: REG= 0xAF, W= 0xB5 ; 1010 1111
(0xAF)
; 1011 0101 (0xB5)
Depois da instruo: REG= 0x1A, W= 0xB5 001 1010
(0x1A)
Exemplo 2: XORWF REG, 0
Antes da instruo: REG= 0xAF, W= 0xB5; 1010 1111
(0xAF)
; 1011 0101 (0xB5)
Depois da instruo: REG= 0xAF, W= 0x1A ; 0001 1010
(0x1A)

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
213
INCF Incrementar f
Sintaxe: [rtulo] INCF f, d
Descrio: Incrementar de uma unidade, o contedo do registo f.
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: ( f ) + 1 -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: INCF REG, 1
Antes da instruo: REG = 0xFF
Z = 0
Depois da instruo: REG = 0x00
Z = 1
Exemplo 2: INCF REG, 0
Antes da instruo: REG = 0x10
W = x
Z = 0
Depois da instruo: REG = 0x10
W = 0x11
Z = 0

DECF Decrementar f
Sintaxe: [rtulo] DECF f, d
Descrio: Decrementar de uma unidade, o contedo do registo f.
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: ( f ) - 1 -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
214
Exemplo 1: DECF REG, 1
Antes da instruo: REG = 0x01
Z = 0
Depois da instruo: REG = 0x00
Z = 1
Exemplo 2: DECF REG, 0
Antes da instruo: REG = 0x13
W = x
Z = 0
Depois da instruo: REG = 0x13
W = 0x12
Z = 0

RLF Rodar f para a esquerda atravs do Carry
Sintaxe: [rtulo] RLF f, d
Descrio: O contedo do registo f rodado um espao para a esquerda, atravs de
C (ag do Carry).
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: ( f <n>) -> d<n+1>, f<7> -> C, C -> d<0>;
Operando: 0 <= k <= 127, d E [0, 1]
Flag: C
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: RLF REG, 0
Antes da instruo: REG = 1110 0110
C = 0
Depois da instruo: REG = 1110 0110
W = 1100 1100
C = 1
Exemplo 2: RLF REG, 1
Antes da instruo: REG = 1110 0110
C = 0
Depois da instruo: REG = 1100 1100
C = 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
215
RRF Rodar f para a direita atravs do Carry
Sintaxe: [rtulo] RRF f, d
Descrio: O contedo do registo f rodado um espao para a direita, atravs de C
(ag do Carry).
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: ( f <n>) -> d<n-1>, f<0> -> C, C -> d<7>;
Operando: 0 <= k <= 127, d E [0, 1]
Flag: C
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: RRF REG, 0
Antes da instruo: REG = 1110 0110
W = x
C = 0
Depois da instruo: REG = 1110 0110
W = 0111 0011
C = 0
Exemplo 2: RRF REG, 1
Antes da instruo: REG = 1110 0110
C = 0
Depois da instruo: REG = 0111 0011
C = 0

COMF Complementar f
Sintaxe: [rtulo] COMF f, d
Descrio: O contedo do registo f complementado.
Se d=0, o resultado guardado no registo W
Se d=1, o resultado guardado no registo f
Operao: () -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: Z
Nmero de palavras: 1
Nmero de ciclos: 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
216
Exemplo 1: COMF REG, 0
Antes da instruo: REG= 0x13 ; 0001 0011 (0x13)
Depois da instruo: REG= 0x13 ; complementar
W = 0xEC ; 1110 1100 (0xEC)
Exemplo 2: COMF INDF, 1
Antes da instruo: FSR= 0xC2
contedo de FSR = (FSR) = 0xAA
Depois da instruo: FSR= 0xC2
contedo de FSR = (FSR) = 0x55

BCF Pr a 0 o bit b de f
Sintaxe: [rtulo] BCF f, b
Descrio: Limpar (pr a 0), o bit b do registo f
Operao: 0 -> f<b>
Operando: 0 <= k <= 127, 0 <= b <= 7
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: BCF REG, 7
Antes da instruo: REG = 0xC7 ; 1100 0111 (0xC7)
Depois da instruo: REG = 0x47 ; 0100 0111 (0x47)
Exemplo 2: BCF INDF, 3
Antes da instruo: W = 0x17
FSR = 0xC2
contedo do endereo em FSR (FSR) = 0x2F
Depois da instruo: W = 0x17
FSR = 0xC2
contedo do endereo em FSR (FSR) = 0x27

BSF Pr a 1 o bit b de f
Sintaxe: [rtulo] BSF f, b
Descrio: Pr a 1, o bit b do registo f
Operao: 1 -> f<b>
Operando: 0 <= k <= 127, 0 <= b <= 7
Flag: -
Nmero de palavras: 1
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
217
Nmero de ciclos: 1
Exemplo 1: BSF REG, 7
Antes da instruo: REG = 0x07 ; 0000 0111 (0x07)
Depois da instruo: REG = 0x17 ; 1000 0111 (0x87)
Exemplo 2: BSF INDF, 3
Antes da instruo: W = 0x17
FSR = 0xC2
contedo do endereo em FSR (FSR) = 0x2F
Depois da instruo: W = 0x17
FSR = 0xC2
contedo do endereo em FSR (FSR) = 0x28

BTFSC Testar o bit b de f, saltar por cima se for = 0
Sintaxe: [rtulo] BTFSC f, b
Descrio: Se o bit b do registo f for igual a zero, ignorar instruo seguinte. Se este
bit b for zero, ento, durante a execuo da instruo actual, a execuo
da instruo seguinte no se concretiza e executada, em vez desta, uma
instruo NOP, fazendo com que a instruo actual, demore dois ciclos
de instruo a ser executada.
Operao: Ignorar a instruo seguinte se (f<b>) = 0
Operando: 0 <= k <= 127, 0 <= b <= 7
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1 ou 2 dependendo do valor lgico do bit b
Exemplo: LAB_01 BTFSC REG, 1; Testar o bit 1 do registo REG
LAB_02 ........... ; Ignorar esta linha se for 0
LAB_03 ........... ; Executar esta linha depois da anterior, se for 1
Antes da instruo, o contador de programa contm o endereo LAB_01.
Depois desta instruo, se o bit 1 do registo REG for zero, o contador de
programa contm o endereo LAB_03. Se o bit 1 do registo REG for um,
o contador de programa contm o endereo LAB_02.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
218
BTFSS Testar o bit b de f, saltar por cima se for = 1
Sintaxe: [rtulo] BTFSS f, b
Descrio: Se o bit b do registo f for igual a um, ignorar instruo seguinte. Se du-
rante a execuo desta instruo este bit b for um, ento, a execuo da
instruo seguinte no se concretiza e executada, em vez desta, uma
instruo NOP, assim, a instruo actual demora dois ciclos de instruo
a ser executada.
Operao: Ignorar a instruo seguinte se (f<b>) = 1
Operando: 0 <= k <= 127, 0 <= b <= 7
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1 ou 2 dependendo do valor lgico do bit b
Exemplo: LAB_01 BTFSS REG, 1; Testar o bit 1 do registo REG
LAB_02 ........... ; Ignorar esta linha se for 1
LAB_03 ........... ; Executar esta linha depois da anterior, se for 0
Antes da instruo, o contador de programa contm o endereo LAB_01.
Depois desta instruo, se o bit 1 do registo REG for um, o contador de
programa contm o endereo LAB_03. Se o bit 1 do registo REG for
zero, o contador de programa contm o endereo LAB_02.

INCFSZ Incrementar f, saltar por cima se der = 0
Sintaxe: [rtulo] INCFSZ f, d
Descrio: Descrio: O contedo do registo f incrementado de uma unidade.
Se d = 0, o resultado guardado no registo W.
Se d = 1, o resultado guardado no registo f.
Se o resultado do incremento for = 0, a instruo seguinte substituda
por uma instruo NOP, fazendo com que a instruo actual, demore dois
ciclos de instruo a ser executada.
Operao: (f ) + 1 -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1 ou 2 dependendo do resultado
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
219
Exemplo: LAB_01 INCFSZ REG, 1; Incrementar o contedo de REG de uma
unidade
LAB_02 ........... ; Ignorar esta linha se resultado = 0
LAB_03 ........... ; Executar esta linha depois da anterior, se der
0
Contedo do contador de programa antes da instruo, PC = endereo
LAB_01. Se o contedo do registo REG depois de a operao REG =
REG + 1 ter sido executada, for REG = 0, o contador de programa aponta
para o rtulo de endereo LAB_03. Caso contrrio, o contador de pro-
grama contm o endereo da instruo seguinte, ou seja, LAB_02.

DECFSZ Decrementar f, saltar por cima se der = 0
Sintaxe: [rtulo] DECFSZ f, d
Descrio: O contedo do registo f decrementado uma unidade.
Se d = 0, o resultado guardado no registo W.
Se d = 1, o resultado guardado no registo f.
Se o resultado do decremento for = 0, a instruo seguinte substituda
por uma instruo NOP, fazendo assim com que a instruo actual, de-
more dois ciclos de instruo a ser executada.
Operao: (f ) - 1 -> d
Operando: 0 <= k <= 127, d E [0, 1]
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1 ou 2 dependendo do resultado
Exemplo: LAB_01 DECFSZ REG, 1; Decrementar o contedo de REG de uma
unidade
LAB_02 ........... ; Ignorar esta linha se resultado = 0
LAB_03 ........... ; Executar esta linha depois da anterior, se der
0
Contedo do contador de programa antes da instruo, PC = endereo
LAB_01. Se o contedo do registo REG depois de a operao REG
= REG 1 ter sido executada, for REG = 0, o contador de programa
aponta para o rtulo de endereo LAB_03. Caso contrrio, o contador de
programa contm o endereo da instruo seguinte, ou seja, LAB_02.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
220
GOTO Saltar para o endereo
Sintaxe: [rtulo] GOTO k
Descrio: Salto incondicional para o endereo k.
Operao: k -> PC<10:0>, (PCLATH<4:3>) -> PC<12:11>
Operando: 0 <= k <= 2048
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 2
Exemplo: LAB_00 GOTO LAB_01; Saltar para LAB_01
:
LAB_01 ............
Antes da instruo: PC = endereo LAB_00
Depois da instruo: PC = endereo LAB_01

CALL Chamar um programa
Sintaxe: [rtulo] CALL k
Descrio: Esta instruo, chama um subprograma. Primeiro, o endereo de retorno
(PC+1) guardado na pilha, a seguir, o operando k de 11 bits, corre-
spondente ao endereo de incio do subprograma, vai para o contador de
programa (PC).
Operao: PC+1 -> Topo da pilha (TOS Top Of Stack)
Operando: 0 <= k <= 2048
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 2
Exemplo: LAB_00 CALL LAB_02 ; Chamar a subrotina LAB_02
LAB_01 :
:
LAB_02 ............
Antes da instruo: PC = endereo LAB_00
TOS = x
Depois da instruo: PC = endereo LAB_02
TOS = LAB_01

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
221
RETURN Retorno de um subprograma
Sintaxe: [rtulo] RETURN
Descrio: O contedo do topo da pilha guardado no contador de programa.
Operao: TOS -> Contador de programa PC
Operando: -
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 2
Exemplo: RETURN
Antes da instruo: PC = x
TOS = x
Depois da instruo: PC = TOS
TOS = TOS - 1
RETLW Retorno de um subprograma com uma constante em W
Sintaxe: [rtulo] RETLW k
Descrio: A constante k de 8 bits, guardada no registo W.
Operao: (k) -> W; TOS -> PC
Operando: 0 <= k <= 255
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 2
Exemplo: RETLW 0x43
Antes da instruo: W = x
PC = x
TOS = x
Depois da instruo: W = 0x43
PC = TOS
TOS = TOS 1

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
222
RETFIE Retorno de uma rotina de interrupo
Sintaxe: [rtulo] RETLW k
Descrio: Retorno de uma subrotina de atendimento de interrupo. O contedo do
topo de pilha (TOS), transferido para o contador de programa (PC). Ao
mesmo tempo, as interrupes so habilitadas, pois o bit GIE de habilita-
o global das interrupes, posto a 1.
Operao: TOS -> PC ; 1 -> GIE
Operando: -
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 2
Exemplo: RETFIE
Antes da instruo: PC = x
GIE = 0
Depois da instruo: PC = TOS
GIE = 1

NOP Nenhuma operao
Sintaxe: [rtulo] NOP
Descrio: Nenhuma operao executada, nem qualquer ag afectada.
Operao: -
Operando: -
Flag: -
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo: NOP

CLRWDT Iniciar o temporizador do watchdog
Sintaxe: [rtulo] CLRWDT
Descrio: O temporizador do watchdog reposto a zero. O prescaler do temporiza-
dor de Watchdog tambm reposto a 0 e, tambm, os bits do registo de
estado e so postos a um.
Operao: 0 -> WDT
0 -> prescaler de WDT
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
223
Operando: -
Flag:
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo: CLRWDT
Antes da instruo: Contador de WDT = x
Prescaler de WDT = 1:128
Depois da instruo: Contador do WDT = 0x00
Prescale do WDT = 0

SLEEP Modo de repouso
Sintaxe: [rtulo] SLEEP
Descrio: O processador entra no modo de baixo consumo. O oscilador pra. O bit
(Power Down) do registo Status reposto a 0. O bit (Timer Out) posto
a 1. O temporizador de WDT (Watchdog) e o respectivo prescaler so
repostos a 0.
Operao: 0 -> WDT
0 -> prescaler do WDT
1 -> TO
0 -> PD
Operando: -
Flag:
Nmero de palavras: 1
Nmero de ciclos: 1
Exemplo 1: SLEEP
Antes da instruo: Contador do WDT = x
Prescaler do WDT = x
Depois da instruo: Contador do WDT = 0x00
Prescaler do WDT = 0



www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
224
Como programar um Microcontrolador
A capacidade de comunicar, da maior importncia nesta rea. Contudo, isso s possvel se ambas as partes
usarem a mesma linguagem, ou seja, se seguirem as mesmas regras para comunicarem. Isto mesmo se aplica
comunicao entre os microcontroladores e o homem.
A linguagem que o microcontrolador, e o homem, usam para comunicar entre si designada por linguagem
assembly. O prprio ttulo no tem um signicado profundo, trata-se de apenas um nome como por exemplo
ingls ou francs. Mais precisamente, linguagem assembly apenas uma soluo transitria. Os programas
escritos em linguagem assembly, devem ser traduzidos para uma linguagem de zeros e uns, de modo a que um
microcontrolador a possa receber.
-> Linguagem assembly e assembler so coisas diferentes.
A primeira, representa um conjunto de regras usadas para escrever um programa para um microcontrolador,
e, a outra, um programa que corre num computador pessoal que traduz a linguagem assembly para uma
linguagem de zeros e uns.
Um programa escrito em zeros e uns diz-se que est escrito em linguagem mquina, ou cdigo mquina.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
225
Fisicamente, Programa representa um cheiro num disco de computador (ou na memria se estivermos a ler
de um microcontrolador), e escrito de acordo com as regras do assembly, ou qualquer outra linguagem de
programao de microcontroladores.
O homem pode entender a linguagem assembly, j que ela constituda por smbolos alfabticos e palavras. Ao
escrever um programa, certas regras devem ser seguidas para alcanar o efeito desejado. Um Tradutor (compi-
lador) interpreta cada instruo escrita em linguagem assembly como uma srie de zeros e uns com signicado
para a lgica interna do microcontrolador.
Consideremos, por exemplo, a instruo RETURN que um microcontrolador utilizada para regressar de uma
subrotina.
Quando o assembler a traduz, ns obtemos uma srie de uns e zeros, correspondentes a 14 bits, que o micro-
controlador sabe como interpretar.
Exemplo: RETURN 00 0000 0000 1000

O resultado desta traduo da linguagem assembly, designado por um cheiro de execuo. Muitas vezes
encontramos o nome de cheiro HEX. Este nome provm de uma representao hexadecimal desse cheiro,
bem como o suxo hex no ttulo, por exemplo correr.hex. Uma vez produzido, o cheiro de execuo
inserido no microcontrolador atravs de um programador fsico.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
226
Linguagem Assembly
Um programa, em Linguagem Assembly, escrito por intermdio de um processador de texto (editor), e ca-
paz de produzir um cheiro ASCII no disco de um computador, ou em ambientes prprios como o MPLAB.
Os elementos bsicos da linguagem assembly so:
Labels (etiquetas - rtulos)
Instrues
Operandos
Directivas
Comentrios
Um Label (etiqueta/rtulo) uma designao textual (geralmente de fcil leitura) de uma linha num programa
ou de uma seco de um programa para onde um microcontrolador deve saltar ou, ainda, o incio de um con-
junto de linhas de um programa. Tambm pode ser usado para executar uma ramicao de um programa (tal
como Goto....), o programa pode ainda conter uma condio que deve ser satisfeita, para que uma instruo
Goto seja executada.
importante que uma etiqueta seja iniciada com uma letra do alfabeto, ou com um trao baixo _ (under-
score). O comprimento de uma label pode ir at 32 caracteres. tambm importante que a label comece na
primeira coluna.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
227
Instrues
As instrues so especcas para cada microcontrolador, assim, se quisermos utilizar a linguagem assembly
temos que estudar as instrues desse microcontrolador.
O modo como se escreve uma instruo designado por sintaxe. No exemplo que se segue, possvel recon-
hecer erros de escrita, dado que as instrues movlp e gotto no existem no microcontrolador PIC.
Operandos
Operandos so os elementos da instruo necessrios, para que a instruo possa ser executada. Normalmente
so registos, variveis e constantes. As constantes so designadas por literais. A palavra literal signica nme-
ro.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
228
Comentrios
O comentrio um texto que o programador escreve no programa, am de o tornar mais claro e legvel.
colocado logo a seguir a uma instruo, e deve comear com um ponto-e-vrgula ;.
Directivas
Uma directiva parecida com uma instruo mas, ao contrrio desta, independente do tipo de microcontro-
lador e uma caracterstica inerente prpria linguagem assembly.
As directivas servem-se de variveis, ou registos, para satisfazer determinados propsitos. Por exemplo, NIVEL,
pode ser uma designao para uma varivel localizada no endereo 0x0D da memria RAM. Deste modo, a
varivel que reside nesse endereo, pode ser acedida pela palavra NIVEL. muito mais fcil a um programador
recordar a palavra NIVEL, que lembrar-se que o endereo 0x0D contm informao sobre o nvel.
Directiva PROCESSOR
Esta directiva deve ser escrita no incio de todos os programas. Dene o tipo de microcontrolador, para o qual
o programa vai ser/est escrito. Como exemplo:
Processor 16f887
Directiva EQU
Esta directiva usada para substituir um valor numrico, por um smbolo. Desta forma, a uma posio espec-
ca de memria RAM atrbuido um nome. Como exemplo:
MAXIMUM EQU H25
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
229
Isto signica que, posio de memria 0x25, atribuido o nome MAXIMUM. A cada uso da label MAXI-
MUM no programa, esta vai ser interpretada pelo assembler como endereo 0x25 (MAXIMUM = 0x25).
Os smbolos podem ser especicados desta forma, e apenas uma vez no programa. Esta directiva usada es-
sencialmente no nicio do mesmo.
Directiva ORG
Esta directiva especica uma posio na memria do programa, onde as instrues a seguir directiva vo ser
colocadas. Como exemplo:
ORG 0x100
START ... ...
...
ORG 0x1000
TABLE ...
...
Este programa comea na posio 0x100.
A tabela que tem os dados, vai ser guardada na posio 0x1000.
Directiva END
Cada programa tem, obrigatoriamente, que ser terminado por esta directiva. Onde o compilador encontrar esta
directiva, imediatamente deixa de compilar. Como exemplo:
...
END ;Fim de programa
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
230
Directiva $INCLUDE
O nome desta directiva, expressa bem o seu propsito. Durante a compilao do assembler, possibilita o pro-
grama a usar outro cheiro que est no disco do computador. Como exemplo:
...
#include <p16f887.inc>
Directivas CBLOCK e ENDC
Todas as variaveis (nomes e endereos) que vo ser usados no programa, tem que ser denidos no incio do
programa. Devido a esta funcionalidade, no necessrio especicar o endereo de cada variavel, mais tarde
no programa. Em vez disso, apenas necessrio escrever o endereo da primeira variavel, usando a directiva
CBLOCK, e listar todas as outras variaveis a seguir. O compilador automaticamente atribui, a estas variaveis,
os correspondentes endereos, pela ordem como so escritas. Por m, a directiva ENDC indica o m da lista
de variaveis.
CBLOCK 0x20
START ; endereo 0x20
RELE ; endereo 0x21
STOP ; endereo 0x22
LEFT ; endereo 0x23
RIGHT ; endereo 0x24
ENDC
...
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
231
Directivas IF, ENDIF e ELSE
Estas directivas so usadas, para criar os chamados blocos condicionais de um programa. Cada um destes
blocos comea com uma directiva IF, e termina com a directiva ENDIF ou ELSE. Uma declarao, ou smbolo,
(em parnteses), a seguir directiva IF, representa uma condio que determina qual parte do programa a ser
compilada.
Se a declarao estiver correcta, ou se o valor de um smbolo igual a 1, o programa compila todas as instrues
antes da directiva ELSE ou ENDIF.
Se a declarao no estiver correcta, ou o valor de um smbolo igual a zero, apenas as instrues escritas
depois das directivas ELSE ou ENDIF, so para compilar.
Exemplo 1:
IF (VERSION>3)
CALL Table_2
CALL Extension
ENDIF
Se o programa lanado depois da verso 3 (declarao correcta), ento, as subrotinas Table 2 e Extension
so executadas. Se a declarao em parnteses falsa, (VERSION<3), as duas instrues que chamas as sub-
rotinas so ignoradas, e no vo ser compiladas.
Exemplo 2:
Se o valor do smbolo Model igual a 1, ento as duas instrues depois da directiva IF so compiladas, bem
como as instrues depois da directiva ENDIF (todas as instrues entre ELSE e ENDIF so ignoradas).
De outro forma, se Model igual a 0, ento as instrues entre IF e ELSE so ignoradas, onde as instrues
depois de ELSE so compiladas.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
232
IF (Model)
MOVFW BUFFER
MOVWF MAXIMUM
ELSE
MOVFW BUFFER1
MOVWF MAXIMUM
ENDIF
...
Directiva BANKSEL
De maneira a aceder a um registo SFR, necessrio escolher o banco da memria RAM apropriado, usando
os bits RP0 e RP1 do registo STATUS. Esta directiva usada neste caso. Como o cheiro de dados .inc
contm j a lista de todos os registos, bem como o seu endereo de memria, o compilador sabe a que banco
corresponde este registo. Depois de encontrar esta directiva, o compilador escolhe os bits RP0 e RP1 para o
registo especicado, de forma automtica. Como exemplo:
...
BANKSEL TRISB
CLRF TRISB
MOVLW B01001101
BANKSEL PORTB
MOVWF PORTB
...
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
233
Operadores aritmticos de assembler
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
234
Exemplo de como escrever um Programa
O exemplo que se segue, ilustra como um programa escrito em linguagem assembly se apresenta:
Quando se escreve um programa, alm das regras fundamentais, existem princpios que, embora no ob-
rigatrios, conveniente serem seguidos. Um deles, escrever no seu incio, o nome do programa, aquilo que
o programa faz, a verso deste, a data em que foi escrito, tipo de microcontrolador para o qual foi escrito e o
nome do programador.
Uma vez que estes dados no interessam ao tradutor de assembly, so escritos na forma de comentrios. Deve
ter-se em ateno que um comentrio comea sempre com ponto e vrgula, e pode ser colocado na linha seguinte,
ou logo a seguir instruo. Depois deste comentrio inicial ter sido escrito, devem incluir-se as directivas. Isto
mostra-se no exemplo de cima.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
235
Para que o seu funcionamento seja correcto, preciso denir vrios parmetros para o microcontrolador, tais
como:
Tipo de oscilador;
Se o temporizador do watchdog est ligado; e
Se o circuito interno de reset est habilitado.
Tudo isto denido na directiva seguinte:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
Logo que todos os elementos que precisamos tenham sido denidos, podemos comear a escrever o pro-
grama.
Primeiro, necessrio denir o endereo para que o microcontrolador deve ir quando se liga a alimentao.
esta a nalidade de (org 0x00).
O endereo para onde um programa salta se ocorrer uma interrupo, (org 0x04).
Como este um programa simples, suciente dirigir o microcontrolador para o incio de um programa com
uma instruo goto Main (Main = programa principal).
As instrues encontradas em Main, seleccionam o banco 1 (BANK1) de modo a poder aceder-se ao registo
TRISB, am de que o porto B seja denido como uma sada (banksel TRISB).
O prximo passo seleccionar o banco de memria 0, e colocar os bits do porto B no estado lgico 1 e, assim,
o programa principal ca terminado (movlw 0xFF, movwf PORTB).
preciso, no entanto, um outro ciclo (loop), onde o microcontrolador possa permanecer sem que ocorram er-
ros. Trata-se de um loop innito, que executado continuamente, enquanto a alimentao no for desligada.
Finalmente, necessrio colocar a palavra end no m de cada programa, de modo a informar o compilador
de que o programa no contm mais instrues.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
236
Ficheiros criados ao compilar um programa
Os cheiros resultantes, da compilao de um programa escrito em linguagem assembly, so os seguintes:
Ficheiro de execuo (nome_do_programa.hex)
Ficheiro de erros no programa (nome_do_programa.err)
Ficheiro de listagem (nome_do_programa.lst)
O primeiro cheiro contm o programa traduzido, e que vai ser introduzido no microcontrolador quando
este programado. O contedo deste cheiro no d grande informao ao programador, por isso, no vai ser
discutido.
O segundo cheiro contm erros possveis, que foram cometidos no processo de escrita e que foram noticados
pelo compilador durante a traduo. Estes erros tambm so mencionados no cheiro de listagem list. No en-
tanto, prefervel utilizar este cheiro de erros err, em casos em que o cheiro lst muito grande e, portanto,
difcil de consultar.
O terceiro cheiro o mais til para o programador. Contm muita informao, tal como o posicionamento das
instrues e variveis na memria e a sinalizao dos erros.
No incio de cada pgina, encontra-se informao acerca do nome do cheiro, data em que foi criado e nmero
de pgina.
A primeira coluna, contm o endereo da memria de programa, onde a instruo mencionada nessa linha,
colocada. A segunda coluna, contm os valores de quaisquer smbolos denidos com as directivas: SET,
EQU, VARIABLE, CONSTANT ou CBLOCK. A terceira coluna, tem, o cdigo da instruo que o PIC
ir executar. A quarta coluna contm instrues assembler e comentrios do programador. Possveis erros so
mencionados entre as linhas, a seguir linha em que o erro ocorreu.
No m do cheiro de listagem, apresentada uma tabela dos smbolos usados no programa.
Uma caracterstica til do cheiro list a apresentao de um mapa da memria utilizada. Mesmo no m,
existe uma estatstica dos erros, bem como a indicao da memria de programa utilizada e da disponvel.

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
237
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
238
MPLAB
O MPLAB, um pacote de programas que correm no Windows e que tornam mais fcil escrever ou desen-
volver um programa. Pode descrever-se ainda melhor, como sendo um ambiente de desenvolvimento para uma
linguagem de programao normalizada, e destinado a correr num computador pessoal (PC). Anteriormente,
as operaes incidiam sobre uma linha de instruo e contemplavam um grande nmero de parmetros, at
que se introduziu o IDE Integrated Development Environment (Ambiente Integrado de Desenvolvimento)
e as operaes tornaram-se mais fceis, usando o MPLAB. Mesmo agora, as preferncias das pessoas divergem
e alguns programadores preferem ainda os editores standard e os intrpretes linha a linha. Em qualquer dos
casos, o programa escrito legvel e uma ajuda bem documentada est disponvel.

Instalando o programa - MPLAB
O MPLAB compreende vrias partes:
Agrupamento de todos os cheiros do mesmo projecto, num nico projecto (Gestor de Projecto)
Escrever e processar um programa (Editor de Texto)
Simular o funcionamento no microcontrolador do programa que se acabou de escrever (Simulador)
Alm destes, existem sistemas de suporte para os produtos da Microchip, tais como o PICSTART Plus, ICD2
(In Circuit Debugger - Deteco de erros com o microcontrolador a funcionar) e o Pickit2.
Os requisitos mnimos para um computador que possa correr o MPLAB, so:
Computador PC com microprocessador 486 ou superior
Microsoft Windows 3.1x, Windows 95 ou verses mais recente do sistema operativo Windows.
Placa grca VGA
8MB de memria (32MB recomendados)
200 MB de espao no disco rgido
Rato

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
239
Antes de iniciarmos o MPLAB, temos primeiro que o instalar. A instalao o processo de copiar os cheiros
do MPLAB para o disco duro do computador, a partir do cheiro de instalo disponivel do CD, ou da pgina
internet do fabricante. Existe uma opo em cada nova janela que permite regressar anterior. Assim, os erros
no constituem problema e, o trabalho de instalao, torna-se mais fcil. Este modo de instalao comum
maioria dos programas Windows. Primeiro, aparece uma janela de boas vindas, a seguir pode-se escolher
entre as opes indicadas e, no m do processo, obtm-se uma mensagem que informa de que o programa est
instalado e pronto a funcionar.
Depois de clicar em Finish, a instalao do MPLAB est terminada.
Clicar no icon do MPLAB, de maneira a iniciar o programa.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
240
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
241
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
242
Como pode ver-se, o aspecto do MPLAB o mesmo da maioria dos programas Windows. Perto da rea de
trabalho existe um menu (faixa azul em cima, com as opes File, Edit, etc.), toolbar (barra com guras que
preenchem pequenos quadrados), e a linha de status no fundo da janela. Assim, pretende-se seguir uma regra
no Windows, que tornar tambm acessveis por baixo do menu, as opes usadas mais frequentemente no
programa. Deste modo, possvel aced-las de um modo mais fcil, e tornar o nosso trabalho mais rpido. Ou
seja, aquilo que est disponvel na barra de ferramentas, tambm est disponvel no menu.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
243
A implementao de um PROJECTO
Seguir os seguintes passos, para preparar o programa a carregar no microcontrolador:
Criar um Projecto
Escrever o Programa
Compilar
De maneira a criar o Projecto, necessrio clicar na opo PROJECT, e depois PROJECT WIZARD.
Uma janela de boas vindas aparece.
Clicar em NEXT, e escolher o microcontrolador que se vai usar.
1.
2.
3.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
244
No m, atribuido um nome ao projecto, que normalmente indica o objectivo, e contedo, do programa es-
crito. O projecto dever ser movido para a pasta pretendida.
Documentos contidos no Projecto, no tem necessriamente que ter sido escritos no MPLAB. Documentos
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
245
escritos por outro programa, tambm podem ser includos no Projecto.
Clicar FINISH para completar o projecto. A janela em si, j contm parmetros do Projecto.
Escrever um novo Programa
Quando um projecto criado, uma janela como a da gura abaixo, dever aparecer:
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
246
O prximo passo escrever um programa.
Abrir um novo documento em FILE > NEW. O editor de texto do MPLAB vai abrir-se.
Gravar o documento na pasta do projecto, usando os comandos FILE > SAVE, e dar-lhe o nome pretendido.
Depois de XPTO.asm ter sido criado, dever ser incluido no projecto, fazendo clique direito na opo
SOURCE FILES, na janela xxxx.MCW. A seguir, uma pequena janela dar duas opes, das quais ser
seleccionada ADD FILES.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
247
Clicando nessa opo, abre outra janela que contm as pastas dos disco rgido. Escolher a pasta do projecto, e
o cheiro XPTO.asm. Ver gura abaixo.
O primeiro programa
A escrita do programa no pode ser iniciada, antes destas operaes anteriores terem sido realizadas.
O programa abaixo um exemplo de como se faz:
;Program to set port B pins to logic one (1).
;Version: 1.0 Date: April 25,2007 MCU: PIC16F887
;***** Declaration and con guration of the microcontroller *****
PROCESSOR 16f887
#include p16f887.inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
248
;***** Variable declaration *****
Cblock 0x20 ; First free RAM location
endc ; No variables

;;***** Program memory structure *****
ORG 0x00 ; Reset vector
goto Main ; After reset jump to this location

ORG 0x04 ; Interrupt vector
goto Main ; No interrupt routine
Main ; Start the program
banksel TRISB ; Select bank containing TRISB
clrf TRISB ; Port B is con gured as output
banksel PORTB ; Select bank containing PORTB
movlw 0xFF ; W=FF
movwf PORTB ; Move W to port B
Loop goto Loop ; Jump to label Loop
End
O programa deve ser escrito na janela xxxx.ASM. Quando completada a escrita, o programa dever ser com-
pilado para um cheiro executavel de formato HEX, usando a opo PROJECT > BUILD ALL, e uma nova
janela vai aparecer. A ltima frase a mais importante, porque diz se a compilao foi bem sucedida, ou no. Se
houver dvidas, a mensagem BUILD SUCCEEDED signica que no houve nenhum erro.
Em caso de ocorrncia de erro, necessrio fazer duplo clique em cima da linha de erro, na janela Output, que
automaticamente mudada a janela, e o cursor ser posicionado na linha do programa que contm o erro.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
249
Simulador
O simulador faz parte do ambiente do MPLAB, e que d uma maior perspectiva do funcionamento do micro-
controlador. Uma simulao uma tentativa de imitar uma hipottica situao da vida real, para que possa ser
estudada e compreender como funcionar.
, tambm, atravs do simulador que se faz a monitorizao das variaveis, registos e estado dos pinos das
portas. Em programas complexos que usam Temporizadores, diferentes condies e pedidos, especialmente
matemticas, o simulador pode ser de grande ajuda.
Tal como o microcontrolador, o simulador executa as instrues uma-a-uma, linha-por-linha, e faz o refres-
camento constante do estado de todos os registos. Desta maneira, o programador simplesmente monitoriza a
execuo do programa.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
250
No m de escrever um programa, o programador dever primeiro test-lo no simulador, antes de o usar no
ambiente real.
O simulador activado clicando em DEBUGGER > SELECT TOOL > MPLAB SIM, como ilustra a gura.
Como resultado, vrios cones do simulador aparecem. O seu signicado o seguinte:
Inicia a execuo do programa velocidade mxima. O simulador executa o programa velo-
cidade mxima, at ser parado clicando no cone abaixo.
Faz pausa execuo do programa. O programa pode continuar passo-a-passo, ou velocid-
ade mxima outra vez.
Inicia a execuo do programa velocidade congurada. A velocidade de execuo ajustada
no men Debugger > Settings > Animation > Realtime Updates.
Inicia a execuo do programa passo-a-passo. As instrues so executadas uma depois da
outra. Clicando no cone, possibilita a entrada nas subrotinas.
Este cone tem a mesma funo do anterior, excepto que d a possibilidade de saltar as sub-
rotinas.
Faz Reset ao microcontrolador. Clicando neste cone, o Contador de Programa posicionado
no incio do programa, e a simulao pode iniciar.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
251
Como no ambiente real, a primeira coisa a ser feita o RESET ao microcontrolador, usando a opo DEBUG-
GER > RESET, ou clicando no cone respectivo. Como consequncia, uma linha verde posicionada no incio
do programa, e o Contador de Programa PCL limpo para zero. Ver imagem abaixo com os SFRs.
Aparte dos SFRs, tambm se pode ver os Registos normais. Clicando em VIEW > FILE REGISTERS, uma
janela onde estes esto, vai aparecer.
Se o programa tem variaveis prprias, tambm bom poder ver o seu valor. Clicando em VIEW > WATCH,
aparece uma janela onde podem ser acrescentadas estas variaveis.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
252
Aps todas as variaveis e registos de interesse estarem disponiveis, na rea do simulador, o processo simples.
A prxima instruo pode ser passo-a-passo, ou outro tipo. As instrues passo-a-passo podem ser executa-
das, tambm, atravs da tecla <F7> no teclado. Normalmente, todas as funes importantes, tem j teclas
atribuidas.
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Bibliografia
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
253
Bibliograa
Microchip: PIC16F886. www.microchip.com
www.microchipc.com
Iovine, John. PIC Microcontroller Project Book, 2000
Microchip. PICmicro - Introduction to Programming in Assembler for PIC16 Products, 701 PIC. Mi-
crochip Masters, 2003
Predko, Mike. PICmicro microcontroller Pocket Reference. 2001
MikroElektronika: http://www.mikroe.com/en/
Stevens, Fred. Getting Started with PIC microcontrollers, 1997
Katzen, Sid. The Quintessential PIC Microcontroller, 2000
www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo
ant ni o sr gi o sena
www. senaeng. com : : sol ues em el ect r ni ca e mi cr ocont r ol ador es
+351. 967033209
254
antnio srgio sena
www. senaeng. com : : sol ues em el ect r ni ca
+351. 967033209
CONTACTOS
Antni o Srgi o Sena, Eng.
asena@senaeng. com
www. senaeng. com : : proj ectos e sol ues em el ectrni ca
i nfo@senaeng. com
+351. 967033209
+351. 236215256 (fax)
www.mecatronicadegaragem.blogspot.com

Você também pode gostar