3. microcontroladores PIC Índice
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 3
Índice de Conteúdos
COMO TUDO COMEÇOU.................................................................... 10
Microcontrolador versus Microprocessador .............................................. 13
Conceitos Básicos ...................................................................................... 14
Um mundo de números......................................................................................................................14
Sistema de numeração Binário...........................................................................................................15
Sistemas de numeração Hexadecimal................................................................................................16
O código BCD....................................................................................................................................17
Conversão de Binário para Decimal ..................................................................................................17
Conversão de Hexadecimal para Decimal.........................................................................................18
Conversão de Hexadecimal para Binário...........................................................................................18
Bit.......................................................................................................................................................19
Byte....................................................................................................................................................19
Circuitos Lógicos...............................................................................................................................20
Porta lógica AND...............................................................................................................................20
Porta lógica OR..................................................................................................................................21
Porta lógica NOT...............................................................................................................................21
Porta lógica EXCLUSIVE OR / XOR...............................................................................................22
Registo ...............................................................................................................................................23
SFR / Special Function Register - Registo de Função Especial ........................................................23
Portas de Entrada/Saída - I/O.............................................................................................................24
Unidade de memória..........................................................................................................................26
Interrupções........................................................................................................................................27
CPU - Unidade Central de Processamento ........................................................................................28
Barramento.........................................................................................................................................29
Comunicações Série...........................................................................................................................29
Baud Rate - Velocidade de transferência ...........................................................................................30
Oscilador............................................................................................................................................32
Circuito de Alimentação ....................................................................................................................32
Temporizadores e Contadores............................................................................................................33
Temporizadores / Contadores ............................................................................................................34
Contadores .........................................................................................................................................37
Temporizador Watchdog....................................................................................................................37
Conversores Analógico/Digital..........................................................................................................38
4. microcontroladores PIC Índice
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 4
Arquitectura Interna.................................................................................. 40
Arquitectura von-Neumann ...............................................................................................................40
Arquitectura Harvard .........................................................................................................................40
Conjunto de Instruções.............................................................................. 42
Como escolher o microcontrolador certo para a aplicação? ........................ 43
Microcontroladores PIC............................................................................ 43
Microcontrolador PIC16F887 .................................................................. 44
Uma panorâmica........................................................................................ 44
Descrição dos pinos ...........................................................................................................................48
CPU....................................................................................................................................................51
Memória.............................................................................................................................................52
Registos de função geral - GPR.........................................................................................................54
Registos de função especial - SFR.....................................................................................................55
Bancos de Memória ...........................................................................................................................55
Pilha de memória - Stack...................................................................................................................59
Sistema de interrupção.......................................................................................................................60
Como usar os Registos de função especial - SFR..............................................................................61
Os Registos de Função Especial - SFR - do CPU....................................... 62
Características e Funções........................................................................... 62
Registo STATUS................................................................................................................................62
Registo OPTION_REG......................................................................................................................64
Registos do Sistema de Interrupções .................................................................................................66
Registo PCON....................................................................................................................................75
Registos PCL e PCLATH...................................................................................................................76
Endereçamento Indirecto ...................................................................................................................79
Portas I/O - Entrada/Saída....................................................................... 80
Funcionalidades e Funções......................................................................... 80
5. microcontroladores PIC Índice
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+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
Módulos CCP............................................................................................ 110
Capture/Compare/PWM - Captura/Compara/PWM.............................. 110
Módulo CCP1 ........................................................................................... 110
Modo de Captura com CCP1.............................................................................................................111
Modo de Comparação com CCP1......................................................................................................112
6. microcontroladores PIC Índice
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 6
Modo de PWM com CCP1 ................................................................................................................113
Periodo do PWM................................................................................................................................116
Duty-Cycle do PWM .........................................................................................................................116
Resolução do PWM ...........................................................................................................................117
Registos CCP1CON...........................................................................................................................117
Módulo CCP2 ........................................................................................... 120
Registo CCP2CON ............................................................................................................................120
Configuração do módulo CCP1, para funcionamento em PWM ............... 121
Modo avançado do CCP1 .......................................................................... 122
Módulos de Comunicação Série................................................................. 123
Modo Assíncrono da EUSART ................................................................. 124
Transmissor Assíncrono da EUSART................................................................................................125
Receptor Assíncrono da EUSART.....................................................................................................127
BRG - Baud Rate Generator - Gerador de Relógio para a EUSART ................................................133
Registo BAUDCTL............................................................................................................................137
Resumidamente:.................................................................................................................................139
Modo Síncrono da EUSART..................................................................... 141
Modo SPI ...........................................................................................................................................142
Modo I2C...........................................................................................................................................146
I2C em modo Mestre .........................................................................................................................154
Módulos Analógicos .................................................................................. 161
Registos e Modo do ADC - Conversor A/D.......................................................................................161
Registos ADRESH e ADRESL..........................................................................................................162
7. microcontroladores PIC Índice
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 7
Requisitos da Aquisição A/D .................................................................... 163
Periodo do ADC.................................................................................................................................163
Como usar o Conversor A/D..................................................................... 164
Registo ADCON0 ..............................................................................................................................165
Registo ADCON1 ..............................................................................................................................167
Resumidamente:.................................................................................................................................167
Comparador Analógico.............................................................................. 168
Fonte de Tensão de Referência interna ..............................................................................................169
Comparadores e funcionamento com Interrupções............................................................................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 Relógio Externo ........................................................................ 181
Modo EC - Oscilador Externo ...........................................................................................................181
Modo LP, XT ou HS - Oscilador Externo..........................................................................................183
Ressoador Cerâmico no modo XT ou HS..........................................................................................184
Modo RC e RCIO - Oscilador Externo..............................................................................................185
8. microcontroladores PIC Índice
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 8
Modos de Relógio Interno ......................................................................... 186
Modo INTOSC - Oscilador Interno ...................................................................................................186
Modo INTOSCIO - Oscilador Interno...............................................................................................186
Configuração do Oscilador Interno............................................................ 187
Modo de Arranque de Relógio a Duas-Velocidades .................................. 188
Fail-Safe Clock Monitor - FSCM - Monitor de Relógio contra falhas..............................................188
Registo OSCTUNE............................................................................................................................189
Memória 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 Súbita..................................................................................196
Reset por Brown-out - Descida de Tensão Lenta e Gradual..............................................................196
Ruidos ................................................................................................................................................197
Pino de MCLR...................................................................................................................................197
Conjunto de Instruções ............................................................................. 198
Conjunto de Instruções da Família PIC16Fxx de Microcontroladores ...... 198
Transferência de dados.............................................................................. 200
Lógicas e aritméticas.................................................................................. 200
Operações com bits.................................................................................... 201
9. microcontroladores PIC Índice
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 9
Controlo de Execução de um Programa.............................................................................................201
Período de execução da instrução......................................................................................................203
Listagem das instruções.....................................................................................................................203
Como programar um Microcontrolador .................................................... 224
Linguagem Assembly................................................................................. 226
Instruções.................................................................................................. 227
Operandos................................................................................................. 227
Comentários.............................................................................................. 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 aritméticos 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 implementação de um PROJECTO................................................................................................243
Escrever um novo Programa..............................................................................................................245
O primeiro programa..........................................................................................................................247
Simulador...........................................................................................................................................249
10. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 1
COMO TUDO COMEÇOU
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 Hoff estava en-
carregue do projecto.Tendo experiência em trabalhar com um computador, o PDP8, ele teve a ideia de sugerir
soluções diferentes, ao invés dos designs sugeridos pelos Japoneses.A ideia dele presumia que o funcionamento
do circuito integrado, era determinado pelo programa armazenado dentro do chip. Significava que a configura-
ção era mais simples, mas iria requerer muito mais memória que o projecto dos engenheiros Japoneses.
Após um certo tempo, apesar de os Japoneses estarem ainda a tentar encontrar uma solução 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 após 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
licença da BUSICOM. Durante esse ano, um microprocessador chamado 4004 foi lançado no mercado. Esse
foi o primeiro processador de 4 bits, com a velocidade de 6000 instruções por segundo.
Não 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 lançado no mercado. Podia endereçar 16Kb de memória, tinha 45
instruções e uma velocidade de 300.000 instruções por segundo. Esse microprocessador foi o predecessor de
todos os actuais microprocessadores.
A INTEL continuou o desenvolvimento e, em Abril de 1974, lançou um processador de 8 bits, chamado de
8080. Podia endereçar 64Kb de memória, tinha 75 instruções, e um preço inicial de $360.
Outra empresa Americana chamada MOTOROLA, depressa se apercebeu do potencial, e então lançaram o
11. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 2
microprocessador de 8 bit, 6800. O engenheiro chefe era Chuck Peddle. Aparte do microprocessador, a MO-
TOROLA também fabricava periféricos como o 6820 e 6850.
Nessa altura muitas empresas reconheciam a importância dos microprocessadores, e iniciaram o seu próprio
desenvolvimento. Chuck Peddle deixou a MOTOROLA, juntou-se à MOS Technology, e continuou o traba-
lho intensivo no desenvolvimento em microprocessadores.
Na exposição WESCON, nos EUA em 1975, um evento crucial na história 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 sensação, que muita gente pensava em fraude, considerando
que a concorrência vendia o 8080 e 6800, a $179 cada.
No primeiro dia da exposição, em resposta à concorrência, 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 instruções, e capaz de endereçar directamente 64Kb de memória.
Devido ao seu baixo preço, o 6502 tornou-se muito popular, e então 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 começaram 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 milhões de unidades por
ano.
Outras empresas não desistiram. Frederico Faggin deixou a INTEL, e abriu a sua própria empresa chamada
ZILOG INC. Em 1976 a ZILOG anunciou o Z80. Quando desenhou este processador, Faggin tomou uma
decisão crucial. O 8080 já tinha sido desenvolvido, e ele apercebeu-se que muitos iriam continuar fieis a esse
processador, devido aos grandes gastos em reescrever todos os programas. Então, 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 decisão, muitas outras funcionalidades foram acrescentadas, para que o Z80 fosse o micropro-
12. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 3
cessador mais poderoso da altura. Podia endereçar directamente 64Kb de memória, tinha 176 instruções, um
grande número de registos, uma opção 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.
Além da ZILOG, outros fabricantes como Mostek, NEC, SHARP e SGS apareceram logo a seguir. O Z80
era o coração de muitos computadores, tais como: Spectrum, Partner, TRS703, Z-3 and Galaxy.
Em 1976 a INTEL lançou uma versão melhorada do microprocessador de 8 bits, chamado de 8085. No en-
tanto, o Z80 era muito melhor, e a INTEL perdeu a batalha.
Mesmo após outros microprocessadores terem aparecido no mercado, 6809, 2650, SC/MP, etc, não havia
grandes melhoramentos que justificasse aos fabricantes mudarem de processador, por isso o 6502, o Z80 e o
6800 continuaram os microprocessadores dominantes, e durante muito tempo.
13. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+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 memória, têem que ser ligados ao chip. Mesmo sendo os microprocessador considera-
dos potentes máquinas matemáticas, o seu ponto fraco é a sua parca possibilidade de comunicar com periféri-
cos.
Então, de maneira a que possa comunicar com periféricos,o microprocessador tem que usar circuitos especiais,
como chips externos.
Resumindo, os microprocessadores são o coração dos computadores. Era assim no início, e ainda nos dias de
hoje se mantêm.
Microcontrolador versus Microprocessador
14. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 5
Por outro lado, o microcontrolador está desenhado para ser um“tudo-em-um”. Não são necessários componen-
tes externos, para as suas aplicações, porque todos os circuitos, que pertencem aos periféricos, já estão dentro
do chip. Poupa tempo e espaço necessários, aquando do design de um sistema.
Conceitos Básicos
Um mundo de números
O universo por ser descrito com apenas 10 digitos. Mas, precisamos apenas de 10 digitos? Claro que não, é
apenas uma questão de hábito.
Por exemplo, o número 764 o que significa?: quatro unidades, seis dezenas e sete centenas, ou 4 + 60 + 700,
ou 4*1 + 6*10 + 7*100!
Podemos representar o número de uma maneira mais científica? a resposta é positiva: 4*10^0 + 6*10^1 +
7*10^2. Mas porquê? Simplesmente porque usamos um sistema de numeração de base 10, ou seja, um sistema
de numeração décimal.
15. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 6
Sistema de numeração Binário
O que aconteceria se apenas dois digitos pudessem er usados, o 0 e o 1?
Nada de especial, continuaríamos a usar números mas de forma diferente. Por exemplo: 11011010. Qual a
quantidade que o número 11011010 indica?
De maneira a que possamos aprender isto, devemos seguir a mesma lógica do exemplo anterior, mas em ordem
inversa. Não esquecer que se trata de matemática com apenas dois digitos, ou seja, um sistema de numeração
binário.
16. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 7
É o mesmo número, representado de duas formas distintas. A única diferença reside no número de dígitos
necessários para escrever um número. Um dígito (2) é usado para escrever o número 2 em décimal, onde dois
dígitos (1 e 0), são usados para escrever esse número em sistema binário.
É chamado de nível lógico zero (0) e nível lógico um (1), com os quais a electrónica perfeita e simplesmente
trabalha as operações complexas matemáticas. É a electrónica que aplica a matemática, onde todos os números
são representados por apenas dois dígitos, e onde só importa saber se há tensão eléctrica, ou não. Estamos a
falar de electrónica digital.
Sistemas de numeração Hexadecimal
No início do desenvolvimento dos computadores, percebeu-se que as pessoas tinham muitas dificuldades em
trabalhar com numeração binária. Devido a isto, um novo sistema de numeração foi desenvolvido, e usando 16
digitos distintos. Os primeiros dez dígitos são os tradicionais (0, 1, 2,... 9), mas existem mais seis. Por forma a
não inventar novos símbolos, convencionou-se usar as seis primeiras letras do alfabeto: A, B, C, D, E e F.
Um sistema hexadecimal de numeração, consistindo nos dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F foi
estabelecido.
17. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 8
O maior número que pode ser representado por 4 dígitos binários é 1111. E corresponde ao número 15 no
sistema decimal. Esse número no sistema hexadecimal, é representado pelo dígito F. É o maior número de um
dígito no sistema hexadecimal. O número da figura escrito com oito dígitos, é ao mesmo tempo o número he-
xadecimal de dois dígitos. Não esquecer que os computadores usam números binários de 8 dígitos.
O código BCD
O código BCD é um código binário apenas para números decimais. É usado para fazer comunicar os circuitos
electrónicos com os periféricos, e num sistema binário dentro do seu próprio mundo. Consiste em números
binários de quatro dígitos, que representam os primeiros dez dígitos décimais (0, 1, 2,... 9). Embora quatro
digitos nos dêem 16 combinações possiveis, apenas as primeiras 10 são usadas.
Conversão de Binário para Decimal
Os digitos de um número binário têem diferentes valores, dependendo da posição onde se encontram. Adi-
cionalmente, cada posição pode ter 1 ou 0, e o seu valor facilmente determinado através da sua posição desde
a direita. Para executar a conversão, é necessário multiplicar valores pelos dígitos correspondentes, e somar os
resultados.
110 = (1 * 2^2) + (1 * 2^1) + (0 * 2^0) = 6
18. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 9
Conversão de Hexadecimal para Decimal
Por forma a se fazer a conversão de um número hexadecimal para decimal, cada digito hexadecimal deve ser
multiplicado por 16, levantado ao expoente da sua posição. Por exemplo:
Conversão de Hexadecimal para Binário
Não é necessário nenhum cálculo, de maneira a converter números hexadecimais para binario. Os dígitos hexa-
cedimais são simplesmente substituidos pelos seus congéneres 4 dígitos binários. Por exemplo:
Esta tabela comparativa, tem os valores dos números de 0 a 255, em três sistemas de numeração distintos:
19. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 10
Bit
Um bit é um dígito binário. De igual forma que o sistema de numeração decimal, no qual os dígitos de um nú-
mero não têem o mesmo valor, o significado do bit depende da sua posição no número binário. Então, não 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 binário usa apenas dois dígitos, 0 e 1, o valor de um bit só pode ser 0 ou 1.
Não nos devemos confundir, se o bit tiver valor de 4, 16 ou 32. Isso significa que os valores dos bits estão repre-
sentado em sistema decimal. Será correcto dizer que: o valor do quinto bit de um número binário, é equivalente
ao decimal 32.
Byte
Um byte consiste em oito bits agrupados. À semelhança dos digitos de outro qualquer sistema de numeração,
20. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 11
os dígitos dos bytes não têem o mesmo significado. O maior valor tem o bit mais à esquerda chamado de Bit
Mais Significativo (MSB - Most Significant Bit). O bit mais à direita tem o menor valor, e é chamado de Bit
Menos Significativo (LSB - Least Significant Bit). Como um byte pode ter 256 combinações possiveis de bits,
o maior número decimal possível de representar é o 255, pois há uma combinação que representa zero.
Um nibble é representado como meio byte. Dependendo de que metade do byte estamos a falar, há nibbles
“altos” ou“baixos”.
Circuitos Lógicos
A electrónica de que são feitos os circuitos integrados, microcontroladores ou microprocessadores, é composta
de elementos chamados de“circuitos lógicos” ou“portas lógicas”.
Os princípios operacionais desdes elementos foram estabelecidos pelo matemático Inglês, George Boole, e a
ideia central era expressar formas lógicas, como funções de álgebra. Mais tarde o princípio evoluiu para o que
hoje conhecemos como circuitos lógicos AND, OR e NOT, também conhecido como Álgebra de Boole.
Como algumas instruções de programa do microcontrolador funcionam da mesma maneira que as portas lógi-
cas, o seu princípio de funcionamento é descrito a seguir.
Porta lógica AND
A porta lógica AND tem duas ou mais entradas, e uma saída. A saída terá um 1 lógico, se as as suas entradas
A e B estiverem a nivel lógico 1.
21. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 12
A tabela mostra dependência entre entradas e saída. Qualquer outra combinação nas entradas, dará um nivel
lógico 0 na saída.
Quando usada num programa, a operação lógica AND é feita por instruções, que serão discutidas mais à fren-
te. Por agora, é importante referir que AND num programa, faz correspondência aos bits de dois registos.
Porta lógica OR
A porta lógica OR tem duas ou mais entradas, e uma saída. A saída terá um 1 lógico, se qualquer das suas en-
tradas A ou B estiverem a nivel lógico 1.
Num programa, a operação lógica OR é feita entre os bits correspondentes dos registos. À semelhança da ope-
ração lógica AND.
Porta lógica NOT
A porta lógica NOT tem apenas uma entrada, e uma saída. Quando um 0 lógico está presente na entrada, a
22. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 13
saída apresenta um 1 lógico, e vice-versa. Esta porta é também chamada de Inversora.
Se for executada num programa, a operação NOT é feita num byte. O resultado é esse byte com todos os bits inver-
tidos. Se o byte for considerado um número, o valor invertido é na realidade o complemento desse número. Isto é, o
complemento de um número é o que é necessário adicionar-lhe, para que o mesmo atinja o máximo valor de 8 bits
(255).
Porta lógica EXCLUSIVE OR / XOR
Esta porta é uma combinação das atrás referidas. A saída apresenta um 1 lógico, apenas quando as suas entradas
apresentam niveis lógicos diferentes.
Em um programa, esta operação também é usada para comparar dois bytes, para inverter quaisquer bits de um byte
ou para subtrair. E não há o perigo de subtrair um número grande, de um menor.
23. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 14
Registo
Um registo é um circuito electrónico que consegue memorizar o estado de um byte.
Registo
SFR / Special Function Register - Registo de Função Especial
Como acrescento aos registos que não têem qualquer função predeterminada, todos os microcontroladores
têem alguns registos em que a sua função está predeterminada pelo fabricante. Os seus bits estão interligados
fisicamente aos circuitos internos, tais como temporizadores, conversores A/D, osciladores, portas série e ou-
tros, o que significa que são 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
têem essa exacta função.
24. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 15
SFR - Special Function Register - Registo de Função Especial
Portas de Entrada/Saída - I/O
De maneira a tornar o microcontrolador de alguma utilidade, o mesmo tem que estar ligado a electrónica adi-
cional no seu exterior, tais como periféricos. 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 função a seu belo prazer, e conforme a aplicação a
dar-lhes. Como exemplo, vamos supor que queremos comandar três LEDs, e simultaneamente controlar o es-
tado lógico de cinco botões: algumas portas têem de ser configuradas para que haja três saídas e cinco entradas.
Esta configuração é simples e confortavelmente feita por software, o que significa, também, que a função pode
ser alterada durante a operação (on-the-fly).
Uma das mais importantes especificações dos pinos I/O, é a corrente máxima que os mesmos podem suportar.
Para a maioria dos microcontroladores, a corrente possível de tirar de um pino é a suficiente para activar um
LED, ou outro dispositivo similar de baixa corrente (5-25mA). Se o microcontrolador tiver muitos pinos I/O,
então a máxima corrente de um só pino é menor. Resumidamente, não é possível que todos os pinos suportem
a máxima corrente, se houver mais de 80 pinos em total no microcontrolador. A corrente máxima descrita nas
especificações, é partilhada entre todos os portos I/O.
25. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 16
Outra importante função, é a de que podem ter resistências de“pull-up” (polarização positiva). Estas resistên-
cias ligam os pinos à alimentação positiva, e o seu efeito é visivel quando o pino está configurado como entrada.
As novas versões de microcontroladores já têem estas resistências configuraveis por software.
Normalmente, cada porto I/O é controlado por um SFR, o que significa que, cada bit desse registo, determina
o estado do pino correspondente do microcontrolador. Como exemplo, escrevendo 1 lógico no bit desse SFR,
o pino da porta correspondente é automaticamente configurado como entrada. De outra maneira, escrevendo
0 lógico no SFR, o pino da porta correspondente é configurado como saída. A tensão 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/Saída
26. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 17
Unidade de memória
A memória é a parte do microcontrolador usada para o armazenamento de dados.
Cada endereço de memória corresponde a uma po-
sição de memória. O conteúdo dessa posição, é co-
nhecido através do seu endereçamento. A memória
tanto pode ser lida de, como pode ser escrita para.
Existem vários tipos de memória 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 memória ape-
nas uma vez. Se houver necessidade de alterar o mesmo, terá de se fazer a gravação 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 vão apagar a memória.
27. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 18
FLASH - Este tipo de memória foi inventada pela Intel nos anos 80. O seu conteúdo pode ser escrito/apaga-
do quase que infinitamente. Os microcontroladores com memória Flash são muito uteis para aprendizagem,
investigação e desenvolvimento, bem como para pequenas séries. Devido à sua popularidade, a maioria dos
microcontroladores são fabricados com este tipo de memória.
RAM - Random Access Memory: Este tipo de memória é volátil, o que significa que quando se desliga a ali-
mentação do chip, a sua informação desaparece. É usada para o armazenamento temporário de dados, criados
e usados durante a operação do microcontrolador. Como exemplo, se o programa faz uma adição, é necessário
haver um registo que tenha o valor da soma. Para esse fim, um dos registos da RAM é chamado de “soma” e
usado para armazenar o resultado da adição.
EEPROM - Electrically Erasable Programmable ROM: ROM programavel, que se pode apagar electricamen-
te. O conteúdo desta memória pode ser mudado durante a operação, mas o seu conteúdo não é perdido quando
se desliga a alimentação do microcontrolador. Este tipo de memória é usada para guardar valores, criados du-
rante a operação, que devem ser permanente armazenados.
Interrupções
A maioria dos programas usa interrupções durante a execução normal dos mesmos. O fim de um microcon-
trolador é o de reagir consoante os estímulos exteriores. Posto por outras palavras, quando algo acontece, o
microcontrolador faz qualquer coisa. Como exemplo, quando se pressiona um botão 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 indefinidademente, a ler alguns botões 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 atenção.
O sinal que informa o processador central deste tipo de eventos, é chamado de Interrupção.
28. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+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 são:
Descodificador de Instruções: é a parte electrónica que reconhece as instruções de programa, e faz funcionar
o outros circuitos com base nisso. O conjunto de instruções que é diferente para cada familia de microcontro-
ladores, mostra as capacidades deste circuito.
ALU: Unidade Lógica e Aritmética: responsavel por todas as operações lógicas e matemáticas.
Acumulador: é um registo SFR responsavel pela operação da ALU. É como um registo de trabalho, usado para
armazenar todos os dados que são usados para executar uma operação, e que também armazena os resultados
prontos para serem usados para a continuação do processamento. Um dos SFR, chamado de Status, contém
bastante informação sobre o estado dos dados armazenados no Acumulador (o número é maior ou menor que
zero, etc).
CPU - Central Processing Unit - Unidade de Processamento Central
29. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 20
Barramento
Fisicamente, o barramento é constituido por 8, 16 ou mais condutores. Existem dois tipos de barramento: o de
endereçamento e o de dados. O barramento de endereçamento consiste no número de linhas necessárias para
poder endereçar a memória. É usado para transmitir o endereço da CPU para a Memória. O barramento de
dados é tão largo quanto os dados que vão ser trabalhados, e no caso deste manual é de 8 bits ou largura de fios.
É usado para ligar todos os circuitos dentro do microcontrolador.
Comunicações Série
Ligações paralelas entre microcontroladores e periféricos, através de portas I/O, são a solução ideal para curtas
distâncias - poucos metros. No entanto, e em outros casos em que há necessidade de estabelecer comunicações
entre dois dispositivos em maiores distâncias, não é possível utilizar comunicações paralelas. Nestas situações,
a comunicação série é a melhor solução.
Hoje em dia, a maior parte dos microcontroladores têem dentro, já de fábrica, variados sistemas para comuni-
cações série. Quais destes são usados, depende de muitos factores, os quais mais importantes são:
com quantos dispositivos, o microcontrolador tem de trocar informação?
com que velocidade tem que ser feita a troca de dados?
qual é a distância entre os dispositivos?
é necessário enviar e receber dados simultaneamente?
Um dos mais importantes pontos a considerar na comunicação série, é 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 situação
de maneira perfeitamente autónoma, o que liberta o programador para a tarefa de simplesmente ler e escrever.
•
•
•
•
30. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 21
CPU - Central Processing Unit - Unidade de Processamento Central
Baud Rate - Velocidade de transferência
O termo Baud Rate é normalmente usado para especificar o número de bits transferidos por segundo (bps).
Dever-se-á ter em atenção que se referem bits, e não bytes. É, normalmente, requisito do protocolo, que cada
byte seja transferido em conjunto com vários bits de controlo, o que pode significar que um byte da trama de
dados série, consista em 11 bits. Como exemplo, se o Baud Rate é de 300 bps, então, um máximo de 37 e um
mínimo de 27 bytes podem ser transferidos por segundo, ambos dependentes do tipo de ligação e protocolo
usado.
Os sistemas de comunicação Série mais usados são:
I2C (Inter Integrated Circuit) é um sistema usado quando a distância entre microcontroladores e periféricos
é curta (normalmente o emissor e o receptor estão na mesma placa de circuito impresso). A ligação é feita com
dois condutores: um para transferência de dados, e o outro para o sinal de relógio (sincronização). Como se
pode ver na figura, um dos dispositivos é sempre o Mestre. Faz o endereçamento de um chip Escravo, antes da
comunicação se iniciar. Desta maneira, um microcontrolador pode comunicar com 112 dispositivos diferentes.
31. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 22
O Baud Rate é normalmente de 100 Kbit/s no modo normal, ou de 10 Kb/s em modo lento. A distância má-
xima, sem ajudas, entre dispositivos que se comunicam por I2C, está limitada a poucos metros.
Comunicação I2C
SPI (Serial Peripheral Interface Bus) é um sistema de comunicação série, que usa até 4 condutores: um para
receber dados, outro para enviar dados, um para sinal de relógio, e em alternativa outro para escolher com qual
dos dispositivos o Mestre vai comunicar. É uma ligação Full-Duplex, o que significa que o envio e a recepção
podem ser feitas simultaneamente. O Baud Rate máximo é superior a uma ligação I2C.
Comunicação SPI
UART (UniversalAsynchronous Receiver/Transmitter) é uma ligação assíncrona,o que significa que o sinal
de relógio não é usado. Como há apenas uma linha de comunicação, ambos o receptor e emissor trabalham a
um Baud Rate pré-determinado, de maneira a manter a sua sincronização. Esta é uma maneira muito simples
de transferir informação, pois representa a conversão de dados 8-bit em formato paralelos, para formato série.
O Baud Rate faz-se abaixo de 1 Mbit/s.
32. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 23
Oscilador
Pulsos dados pelo oscilador, possibilitam a operação síncrona de todos os circuitos do microcontrolador. O
módulo oscilador é normalmente configurado para usar um cristal de quartzo, ou um ressoador cerâmico, para
ter a sua oscilação estabilizada. Se não houver, por parte da aplicação, necessidade de estabilidade da oscilação,
então pode usar-se um oscilador RC (resistência/condensador).
É importante sublinhar que,as instruções,não são executas ao ritmo imposto pelo oscilador,mas algumas vezes
mais lento. Isto acontece porque cada instrução é executada em vários passos. Em alguns microcontroladores, o
mesmo número de ciclos é necessário para qualquer instrução, enquanto que em outros, o tempo de execução
não é o mesmo para todas as instruções. Se o sistema usa um cristal de 20 MHz, o tempo de execuçaõ de uma
instrução não é de 50ns, mas 200ns, 400 ou 800ns, dependendo do tipo de microcontrolador usado.
Oscilador
Circuito de Alimentação
Há duas situações a ter em atenção, no que toca à alimentação do microcontrolador:
33. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 24
Brown-Out, é um estado potencialmente perigoso, e que acontece no momento em que o microcontrolador
está a ser desligado, ou em situações onde a energia de alimentação cai para o limite, devido a ruido eléctrico.
Como o microcontrolador consiste em vários circuitos com diferentes necessidades de nível de tensão,este esta-
do pode causar um grande desvio na sua performance. De maneira a preveni-lo, este circuito imediatamente faz
Reset a toda a electrónica interna, quando a tensão de alimentação desce abaixo de um nível pré-determinado.
Pino Reset, normalmente marcado como MCLR (Master Clear Reset), e serve para fazer o Reset externo do
microcontrolador, aplicando nível lógico 0 ou 1, dependendo do tipo de microcontrolador usado. No caso de o
chip não 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 não seja a solução mais
simples, há muitas razões para o fazer. Nomeadamente, a frequência do oscilador é precisamente definida e
muito estavel, os pulsos originados têem sempre a mesma largura, o que os faz ideais para medições de tempo.
Estes osciladores são usados em relógios de quartzo.
34. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 25
Temporizadores / Contadores
Se é necessário medir o tempo entre dois eventos, é suficiente contar os pulsos enviados pelo oscilador. Isto é
exactamente o que o Temporizador faz.
Muitos programas usam estes cronómetros miniatura,que são SFR de 8 ou 16 bits,e o seu conteudo é automa-
ticamente incrementado a cada pulso recebido.Quando um registo chegar ao fim da contagem (255 ou 65535),
uma Interrupção é gerada.
Se os temporizadores usam um oscilador interno de quartzo, então é possível medir o tempo entre dois eventos
(se o valor do registo é T1 no momento inicial, e T2 no momento final, então o tempo passado é igual ao resul-
tado da subtração T2-T1). Se os temporizadores usam pulsos externos, então o temporizador é transformado
em contador.
35. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 26
Como funciona um temporizador
Na prática, os pulsos que chegam do oscilador de quartzo a cada ciclo de máquina, ou através o divisor, vão
incrementar (somar uma unidade) o valor do registo do temporizador. Se uma instrução (um ciclo de máqui-
na) durar por quatro periodos do oscilador de quartzo, então, o número vai mudar um milhão de vezes por
segundo, ou a cada microsegundo (us).
Funcionamento do Temporizador
É simples medir curtos intervalos de tempo (até 256us), pelo método descrito acima, porque é o maior número
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 interrupções. Como as duas primeiras
soluções são menos simples de resolver, é preferivel enveredar pelas duas últimas.
Usar o divisor no funcionamento do temporizador
Um divisor é um dispositivo electrónico usado para reduzir a frequência, por um factor pré-determinado. O
que significa que, para gerar um pulso na sua saída, é necessário fazer chegar 1, 2, 4, 8 ou mais pulsos à sua
entrada. Este circuito é parte integrante do microcontrolador, e o seu factor de divisão pode ser alterado pelo
software. É usado quando é necessário medir períodos de tempo longos.
36. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 27
Este divisor é normalmente partilhado pelo Temporizador e pelo Watchdog, o que faz com que não possa ser
usado por ambos em simultâneo.
Usando o Divisor, no funcionamento do Temporizador
Usar a Interrupção no funcionamento do Temporizador
Se o registo do temporizador for de 8 bits, o maior número que lhe poderá ser escrito é de 255 (ou de 65535
se o registo for de 16 bits). Se este número for excedido, o temporizador vai automaticamente limpar-se (auto
reset), e a contagem vai iniciar-se do 0. Esta condição é chamada de Overflow. Se for habilitado pelo software,
esse overflow pode gerar uma interrupção, o que nos trás imensas novas possibilidades.
Como exemplo, o estado dos registos de um relógio, segundos-minutos-horas, podem ser alterados dentro da
rotina de interrupção.
Todo o processo, excepto a rotina de interrupção, é executado em“background”, o que possibilita que o circuito
principal do microcontrolador execute outras operações.
37. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 28
Usando a Interrupção, no funcionamento do Temporizador
Atrasos de diferente duração, com mínima interferência do programa principal, podem facilmente ser obtidos
atribuindo o divisor ao temporizador.
Contadores
Se o temporizador estiver a ser carregado com pulsos do exterior, então o mesmo torna-se num Contador. O
circuito não mudou, mantém-se o mesmo.
A única diferença é que, neste caso, os pulsos a contar chegam através das portas, e a sua duração nunca é defi-
nida.Esta é a razão pela qual não podem ser usados para medição de tempo,embora os seus fins sejam imensos.
Desde a contagem de peças numa linha de montagem, quantidade de passos que o motor andou, número de
passageiros numa fila, etc. As possibilidades são vastas, e são 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 não possa ser desligado durante o funcionamento.
38. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 29
Se o watchdog estiver ligado, escolha que apenas pode ser feita durante a programação física, cada vez que
chega ao fim da sua contagem, ocorre um reset do microcontrolador, e a execução do programa volta à primeira
instrução. O objectivo é fazer com que isto não aconteça, pelo uso de uma instrução específica.
Assim, se algo se descontrolar na execução do programa, o microcontrolador poderá reiniciar-se, não correndo
o risco de ficar empatado num círculo infinito.
Se as instruções que fazem o reset do watchdog, forem colocadas em sítios específicos do programa, então, o
funcionamento do watchdog não vai interferir com o programa principal. Se, por alguma razão, normalmente
por ruidos na linha eléctrica, o programa ficar bloqueado em alguma posição da qual não consegue sair, não vai
ser feito o reset do watchdog e, quando este chegar ao fim da contagem, o reset do microcontrolador acontece,
iniciando o programa desde o início.
Temporizador Watchdog
Conversores Analógico/Digital
Os sinais externos são, normalmente, diferentes dos que o microcontrolador compreende (1’s e 0’s). Devido a
isto, os sinais têem que ser convertidos para linguagem compatível. Um conversor de Analógico para Digital, é
um circuito que converte sinais contínuos, para números digitais. Este circuito é, então, usado para converter
um valor analógico, para um número binário, e enviá-lo ao CPU para processamento. Posto por outras pala-
vras, este módulo é usado para medir tensões presentes no pino. O resultado da medida é um número de valor
39. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 30
digital, usado e processado pelo programa.
Conversor A/D
40. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 31
Arquitectura Interna
Todos os microcontroladores modernos usam uma de duas arquitecturas: Harvard ou von-Neumann. Em
suma, são duas formas distintas de trocar a informação entre o CPU e a Memória.
Arquitectura von-Neumann
Os microcontroladores que usam esta tecnologia, só
têem disponivel uma zona de memória, e um barra-
mento de dados de 8 bits. Como todos os dados são
trocados, usando estas 8 linhas, este barramento é
sobrecarregado e a comunicação extremamente lenta
e ineficiente.
O CPU pode lêr uma instrução, ou lêr/escrever da-
dos de/para a memória. Ambas as situações ao mes-
mo tempo são impossiveis, pois as instruções parti-
lham o barramento com os dados.
Arquitectura Harvard
Os microcontroladores que usam esta arquitectura, dispõem de dois barramentos de dados distintos. Um é de
8 bits e liga o CPU à RAM. O outro tem várias linhas (12, 14 ou 16) e liga o CPU à ROM.
Assim, o CPU pode ler uma instrução, ao mesmo tempo que faz um acesso à memória de dados. Como todos
os registos RAM são de 8 bits, todos os dados trocados dentro do microcontrolador estão no mesmo formato.
Adicionalmente, durante a escrita do software, apenas 8 bits de dados são considerados. Por outras palavras, só
se pode trabalhar com 8 bits de dados, no máximo.
Um programa escrito para estes microcontroladores, depois de compilado, vai ser guardado na ROM interna.
41. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 32
No entanto, estas posições de memória não têem apenas 8 bits, mas sim 12, 14 ou 16. Os restantes 4, 6 ou 8
bits representam a própria instrução, especificando ao CPU o que fazer com os dados de 8 bits.
Arq. Harvard
As vantagens deste modelo, são as seguintes:
Todos os dados são de 8 bits. Como o barramento usado para a leitura do programa tem 12, 14 ou 16
linhas, ambos as instruções e dados pode ser lidos simultaneamente. Assim, todas as instruções são execu-
tadas em apenas um ciclo. A única excepção são as instruções de salto, que são executadas em dois ciclos.
Como a ROM e RAM são separadas, o CPU pode executar duas instruções simultaneamente. Enquanto a
leitura/escrita da RAM está a ser feita, a próxima instrução 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 instrução + dados. Por outras palavras: uma linha de programa - uma instrução.
•
•
•
42. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 33
Conjunto de Instruções
As instruções que são compreendidas pelo microcontrolador,são
conhecidas como o“Conjunto de Instruções”. Quando se escreve
um programa em linguagem Assembler, está-se a “contar uma
estória”, especificando as instruções pela ordem que as mesmas
devem ser executadas.A única restrição, é pelo reduzido número
de instruções disponiveis.
43. microcontroladores PIC Introdução
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 34
Como escolher o microcontrolador certo para a aplicação?
Antes de se começar a desenvolver um sistema baseado num microcontrolador, dever-se-á equacionar o seguin-
te:
quantas entradas/saídas são necessárias?
comunicações série?
conversor A/D?
outro...
Quando se define muito bem os requisitos do projecto, a larga oferta é naturalmente filtrada, e é muito mais
simples fazer a escolha adequada.
Por último, fazer a escolha consoante o número de unidades do produto, e o preço por unidade.
Microcontroladores PIC
Estes microcontroladores, fabricados pela Microchip, são provavelmente a melhor aposta para iniciados. O
verdadeito nome deste microcontroladores é PICmicro, mas são mais conhecidos por PIC.
O primeiro modelo foi desenhado em 1975 pela General Instruments. Chamava-se PIC1650, e foi idealizado
para fins totalmente diferentes.
Após 10 anos, e juntando memória EEPROM, este circuito transforma-se num verdadeiro microcontrolador
PIC.
•
•
•
•
44. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 44
Microcontrolador PIC16F887
Uma panorâmica
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 aplicações,alta qualidade e facilidade de adquirir,é a
solução ideal para aplicações como: controlo de processo industrial, controlo de máquinas, medição de valores,
entre outros.
Algumas das funcionalidades estão descritas abaixo:
Arquitectura RISC (CPU de instruções reduzidas)
apenas 35 instruções para aprender
todas as intruções de um-ciclo, excepto os saltos
Frequência de operação de 0 a 20MHz
Oscilador interno de precisão
calibrado de fábrica
frequência escolhida por software entre 31KHz e 8MHz
Tensão de alimentação entre 2.0V e 5.5V
consumo: 220uA @ 2.0V @ 4MHz, 11ua @ 2.0V @ 32KHz, 50nA em Stand-by
Modo de poupança de energia
Reset por Brown-out, com controlo por software
•
•
•
•
•
•
•
•
•
•
•
45. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 45
35 pinos de I/O
alta corrente para polarizar LEDs directamente
resistências individuais de polarização positiva, programaveis por software
interrupção quando há mudança no estado lógico dos pinos de entrada
Memória ROM de 8k, em tecnologia FLASH
o chip pode ser reprogramado cerca de 100.000 vezes
Opção de gravação no circuito
o chip pode ser programado, quando está já montado no sistema final
Memória EEPROM de 256 bytes
pode ser escrita cerca de 1.000.000 vezes
Memória RAM de 368 bytes
Conversor A/D
14 canais
10 bits de resolução
3 Temporizadores/Contadores independentes
Temporizador Watch-dog
Módulo comparador analógico com
dois comparadores analógicos
tensão fixa de referência, 0.6V
referência de tensão programavel
Saída por PWM
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
46. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 46
Módulo USART melhorado
suporta RS-485, RS-232 e LIN2.0
detecção automática de Baudrate
Porta série síncrona
suporta os modos I2C e SPI
Microcontrolador PIC16F887 - Encapsulamento PDIP40
•
•
•
•
•
47. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 47
Microcontrolador PIC16F887 - Encapsulamento QFN44
Microcontrolador PIC16F887 - Diagrama de Blocos
48. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 48
Descrição dos pinos
Como se pode ver na figura acima, quase todos os pinos são multi-funcionais. Como exemplo, o pino 33, com
a designação RB0/AN12/INT, tem as seguintes funções:
RB0, Porta B, primeiro pino entrada/saída (I/O)
AN12, Décima segunda entrada analógica
INT, Pino de interrupção externa
Este modo de dar funcionalidade extra aos pinos, faz o microcontrolador mais compacto, sem perder a sua fun-
cionalidade. Estas funcionalidades não podem ser usadas em simultâneo, mas podem ser alteradas a qualquer
momento pelo software.
As tabelas seguintes, referem-se ao microcontrolador com caixa PDIP 40 pinos :
•
•
•
51. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 51
Atribuição de Pinos
CPU
Não 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 decisão de que microcontro-
lador usar.
52. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 52
Esta tecnologia oferece duas grandes vantagens:
apenas 35 instruções para aprender
o tempo de execução é o mesmo para todas as instruções, excepto para as que fazem salto. O que significa
que com o microcontrolador a 20MHz, o tempo de execução de cada instrução é ed 200ns, ou seja, o pro-
grama é executado à velocidade de 5 milhões de instruções por segundo.
A CPU e a Memória
Memória
Este microcontrolador tem três tipos de memória: ROM, RAM e EEPROM. Todas elas vão ser separada-
mente discutidas, pois cada uma delas têm funcionalidade e organização especificas.
Memória ROM
A memória ROM é usada para permanentemente guardar o programa a executar, e esta é a razão pela qual é
•
•
53. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 53
chamada de memória de programa. O PIC16F887 tem 8Kb de ROM, num total de 8192 posições. Como esta
ROM é feita com tecnologia FLASH, o seu conteúdo pode ser mudado electricamente, com o auxílio de um
programador externo.
Conceito de Memória ROM
Memória EEPROM
Com parecenças à memória de programa, o conteúdo da EEPROM é permanentemente gravado, mesmo que a
energia seja desligada. No entanto, ao contrário da ROM, o conteúdo da EEPROM pode ser alterado durante
a execução do programa. E esta é a razão, pela qual esta memória é perfeita para guardar resultados criados, e
usados, durante a operação.
Memória RAM
Esta é a mais complexa memória do microcontrolador. Neste caso, consiste em dois módulos: os registos-de-
função-geral (GPR), e os registos-de-função-especial.
54. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 54
Embora ambos os módulos de registos sejam limpos quando a alimentação desliga, e sejam fabricados da
mesma maneira, as suas funções são completamente díspares.
Registos SFR - Special Funcion Registers, e GPR - General Purpose Registers
Registos de função geral - GPR
Os GPR são usados para armazenar temporariamente os dados, e resultados, criados durante a execução do
55. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 55
programa. Se o programa está a executar uma contagem, é necessário que haja um registo que sirva de “soma-
dor” ou contador. Como o microcontrolador tem que ser configurado para trabalhar como o utilizador deseja,
é necessário, também, especificar o endereço de alguns GPR’s e dar-lhes novas funções.
Então, 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 função especial - SFR
Os SFR também são locais na RAM, mas contrariamente aos GPR, o seu fim é predeterminado no processo
de fabrico, e não pode ser alterado.
Como os seus bits estão fisicamente ligados a circuitos internos do chip (módulo de comunicações série, con-
versor A/D, temporizadores, etc), qualquer alteração ao seu conteudo, afecta directamente o funcionamento do
microcontrolador, ou alguns dos seus circuitos. Como exemplo, mudando o registo TRISB, a função de cada
pino da porta B pode ser alterada, para que seja ou entrada ou saída.
Outra particularidade dos SFR’s, é a de que estes têem nomes, tanto o registo como os seus bits, o que torna
a escrita do programa mais facilitada. Como a programação em linguagens de alto-nível pode usar a lista de
todos os registos, com o seu endereço exacto, é apenas necessário especificar o nome do registo, de maneira a
escrever/lêr o seu conteudo.
Bancos de Memória
A memória de dados está particionada em quatro bancos.Antes de aceder a algum registo, durante a escrita do
programa para escrever/lêr, é necessário seleccionar o banco que contém esse mesmo registo. Dois bits no reg-
isto STATUS são usados para a selecção dos bancos. De forma a facilitar esta operação, os SFR mais comuns
têm o mesmo endereço em todos os bancos, o que possibilita que possam ser facilmente acedidos.
59. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 59
SFR - Banco 2
SFR - Banco 3
Pilha de memória - Stack
A parte da RAM destinada à Stack, consiste em oito registos de 13 bits. Antes do microcontrolador executar
60. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 60
uma subrotina (instrução CALL), ou quando surge uma interrupção, o endereço da próxima instrução é em-
purrado para dentro de um registo da stack.
Dessa maneira, aquando da conclusão da subrotina ou interrupção, o microcontrolador sabe de onde deve con-
tinuar a execução normal do programa. Este endereço, na stack, é limpo depois do retorno ao programa princi-
pal, pois não há necessidade de o conservar, e essa posição fica automaticamente disponivel para ser usada.
É importante compreender que a stack funciona em círculo, ou seja, quando a stack já foi carregada oito vezes,
a nona carga vai ser sobrepôr-se ao valor que está guardado na primeira posição. A décima carga vai sobrepôr
a segunda posição, e por aí em diante. Os dados que foram sobrepostos desta maneira, não têem qualquer ma-
neira de serem recuperados. Ainda, o programador não tem acesso a estes registos para escrever/ler, e não há
nenhum bit no registo STATUS que indique que houve “stack overflow” ou “stack underflow”. Devido a isto,
deve ter-se em consideração esta particularidade aquando da programação.
Sistema de interrupção
A primeira situação que o microcontrolador faz quando acontece uma interrupção,é executar a actual instrução
e parar a execução do programa.
Imediatamente depois disso, o endereço da memória do programa é automaticamente empurrado para a stack,
e o endereço predefinido é carregado para o contador de programa. Essa localização de onde o programa con-
tinua, chama-se de Vector de Interrupção. Para o PIC em causa, o vector é 0x0004.
Como se pode ver na figura abaixo, o endereço que tem o vector de interrupção é saltado durante a execução
normal do programa.
Parte do programa que é activado quando acontece uma interrupção, é chamado de Rotina de Interrupção. A
sua primeira instrução está localizada no vector de interrupção. Quão longa a subrotina vai ser, e como vai ser,
depende apenas do programador, bem como do tipo de interrupção.
Alguns microcontroladores têem mais vectores de interrupção (cada interrupção têm um vector associado),
mas no caso deste PIC, existe apenas um vector. Consequentemente, a primeira parte da rotina de interrupção,
consiste no reconhecimento da fonte da mesma, ou onde foi originada.
61. microcontroladores PIC Panorâmica
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 61
Por último, quando a origem da interrupção foi encontrada, e a rotina de interrupção é executada, o micro-
controlador chega à instrução RETFIE, puxa o endereço da stack, e continua a execução do programa de onde
tinha saído.
Stack e Sistema de Interrupção
Como usar os Registos de função especial - SFR
O programador adquire o microcontrolador, já com uma ideia bem definida do que vai fazer com o mesmo. Há
uma lista longa de SFR’s, 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 preço, que cabe ao programador tomar a decisão.
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 SFR’s
que o controlam.
E não 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 são perfeitamente explanatórias.
62. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 62
Os Registos de Função Especial - SFR - do CPU
Características e Funções
Os SFRs podem ser classificados em duas categorias:
SFR do CPU, que controlam e monitorizam os processos no processador central. Mesmo havendo poucos,
a operação de todo o microcoltrolador depende do seu conteúdo.
SFR periféricos, que controlam a operação dos periféricos (conversor A/D, módulo de comunicações série,
etc). Cada um destes registos é normalmente usado para um circuito, e por esta razão, será explicado mais
à frente o seu funcionamento junto com o do periférico.
Os SFR do CPU do PIC, serão descritos neste capítulo. Visto que os seus bits controlam vários circuitos den-
tro do chip, não é possivel classificá-los por grupos. Estes bits são descritos juntamente com o processo que vão
controlar.
Registo STATUS
O registo de STATUS contém: o estado aritmético do registo W, o estado do RESET e os bits de selecção do
banco de memória.
O programador deve ser cauteloso, quando escreve valores para este registo porque, se o fizer erradamente, os
•
•
63. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 63
resultados podem ser diferentes do esperado. Por exemplo, se se tentar apagar todos os bits, usando a instrução
“CLRF STATUS”, o resultado no registo será 000xx1xx, em vez do esperado 00000000.
Tais erros acontecem, porque alguns bits deste registos são comandados pelo hardware, e não podem ser altera-
dos pelo programa. E, também, os bits 3 e 4 são apenas de leitura.
Por estas razões, se é necessário alterar o seu conteúdo, é recomendado usar instruções que não alterem os bits
de estado C, DC e Z. Consultar o capítulo sobre as Instruções do PIC.
IRP - selecciona o banco de resgistos. É usado para endereçamento indirecto.
1 - Bancos 0 e 1 são activados (endereços de memória 0x00 a 0xFF)
2 - Bancos 2 e 3 são activados (endereços de memória 0x100 a 0x1FF)
RP1,RP0 - selecciona o banco de registos. É usado para endereçamento 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 instrução CLRWDT, que limpa o temporizador do watch-
dog, ou da instrução SLEEP, que põe 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 instrução CLRWDT, que limpa o temporizador watchdog.
0 - Depois de de executar a instrução SLEEP, que coloca o microcontrolador em modo adormecido e baixo
consumo.
Z - bit Zero
1 - O resultado da operação lógica ou aritmética é zero
64. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 64
0 - O resultado da operação lógica ou aritmética é diferente de zero
DC - bit de transporte de digito, é mudado durante a soma ou subtracção, se houver“overflow”ou um“borrow”
do resultado
1 - Houve transporte do 4º bit do resultado.
0 - Não houve transporte do 4º bit do resultado.
C - bit de Transporte, é mudado durante a soma ou subtracção, se houver“overflow” ou um“borrow” do resul-
tado: se o resultado é maior que 255 ou menor que 0
1 - Houve transporte do bit mais significativo do resultado
0 - Não houve transporte do bit mais significativo do resultado
Registo OPTION_REG
O registo OPTION_REG tem vários bits de controlo, para configurar: divisor do TMR0/WDT, temporiza-
dor TMR0, Interrupção externa e Pull-ups da Porta B.
65. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 65
RBPU - Interruptor dos Pull-ups da Porta B
1 - Pull-ups desligados
0 - Pull-ups ligados
INTEDG - Selecção do flanco da interrupção
1 - Interrupção no flanco ascendente do pino RB0/
INT
0 - Interrupção no flanco descendente do pino RB0/
INT
T0CS - Selecção da fonte de clock para o TMR0
1 - Transição no pino T0CKI
0 - Clock interno a Fosc/4
T0SE - Selecção do flanco para o contador TMR0,
no pino RA4/T0CKI
1 - Incrementa no flanco descendente do pino
T0CKI
0 - Incrementa no flanco ascendente do pino T0CKI
66. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 66
PSA - Selecciona a atribuição para o TMR0 ou
Watchdog, do divisor
1 - Divisor atribuido ao Watchdog
0 - Divisor atribuido ao TMR0
PS2, PS1 e PS0 - Bits de selecção da magnitude de divisão, do divisor interno
A magnitude de divisão, do divisor interno, é configurada por estes três 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 divisão de 1:1, quando o temporizador TMR0 é usado, o divisor deverá estar atri-
buido ao Watchdog. Como resultado, o temporizador TMR0 não usa o divisor, e conta directamente os pulsos
que lhe são chegados pelo oscilador interno, ou por via externa no pino RA4/T0CKI.
Registos do Sistema de Interrupções
Quando um pedido de interrupção chega ao microcontrolador, não significa que a interrupção seja automatica-
mente atendida pois, a mesma, terá de estar habilitada pelo programador. Devido a isto, há bits seleccionados
para ligar/desligar as interrupções.
67. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 67
É simples reconhecer estes bits, porque o seu nome tem a sigla“IE” (Interrupt Enable, ou Habilitação da Inter-
rupção). Além disto, cada interrupção está associada com outro bit chamado de Flag (sinalizador), que indica
que o pedido de interrupção chegou ao microcontrolador, independentemente se a interrupção está habilitada,
ou não. Também são facilmente reconhecidos pelas últimas letras“IF” (Interrup Flag, ou Sinalizador de Inter-
rupção).
Como já foi descrito, o princípio é baseado numa ideia simples e eficiente. Quando um pedido de interrupção
chega, o bit de flag é também automatica e autonomamente ligado em primeiro lugar.
Registos do Sistema de Interrupções
Se o bit respectivo IE não está activado, este evento será completamente ignorado pelo microcontrolador. De
outra forma, a interrupção será trabalhada pelo CPU.
Se várias fontes de interrupção estão activadas, então é necessário detectar as que estão activas, antes de iniciar
a execução da interrupção. A detecção é feita, analisando quais os bits de flags que estão activos.
É importante compreender que os bits de flag não são automaticamente limpos, depois da interrupção ser ex-
ecutada. Sim, devem ser apagados pelo programador, dentro do software de execução da interrupção.
Se este pormenor não fôr tomado em conta, outra interrupção irá disparar quando se voltar para o programa
principal, mesmo que não haja mais pedidos para a sua execução. Resumindo, o bit de flag e o bit IE continu-
arão activados.
Todas as fontes de interrupção do microcontrolador PIC16F887, poderão ser visualisadas na imagem abaixo.
De notar os seguintes pontos:
68. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 68
bit GIE - activa/desactiva todas as interrupções
bit PEIE - activa/desactiva todas as interrupções de periféricos. Não se aplicam ao TMR0 e Porta B.
Para habilitar as interrupções causadas pela mudança de estado na Porta B, é necessário activar cada bit sepa-
radamente. Neste caso, os bits do registo IOCB têem essa função em particular.
SFR’s - Special Function Registers das Interrupções
Registo INTCON
O registo INTCON contém vários bits de activação, e flag, para o TMR0, Porta B e pino INT.
•
•
69. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 69
GIE - Habilitação global e simultânea de Interrupções
1 - Activa todas as interrupções
0 - Desactiva todas as interrupções
PEIE - Habilita as Interrupções dos periféricos
1 - Activa todas as interrupções dos periféricos
0 - Desactiva todas as interrupções dos periféricos
T0IE - Habilita a interrupção de fim de contagem do TMR, quando da contagem de 255 para 0.
1 - Activa interrupção do TMR0
0 - Desactiva interrupção do TMR0
INTE - Habilita interrupção externa em RB0/INT, causada pela mudança de estado no pino
1 - Activa interrupção do RB0/INT
0 - Desactiva interrupção do RB0/INT
RBIE - Habilita interrupção da Porta B, da mudança de estado nos pinos. Quando configurados como entra-
das, os pinos da Porta B podem causar interrupção, se mudarem de estado lógico. Seja com flanco ascendente,
seja descendente. Interessa apenas que houve mudança.
1 - Activa interrupção por mudança de estado da Porta B
0 - Deactiva interrupção por mudança de estado da Porta B
T0IF - Flag de interrupção de fim de contagem do TMR0
1 - TMR0 chegou ao fim da contagem, flag deverá ser limpa pelo software
0 - TMR0 não chegou ao fim da contagem
70. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 70
INTF - Flag de interrupção externa por mudança de estado no pino RB0/INT
1 - Ocorreu interrupção externa em INT, flag deverá ser limpa pelo software
0 - Não ocorrer interrupção externa em INT
RBIF - Flag de interrupção pela mudança de estado nos pinos da Porta B
1 - Pelo meno um dos pinos da Porta B mudou de estado lógico. Após a leitura da Porta B, a flag RBIF deverá
ser limpa pelo software.
0 - Nenhum dos pinos da Porta B mudou de estado lógico.
Registo PIE1
O registo PIE1 contém os bits que habilitam as interrupções dos periféricos.
ADIE - Habilita a interrupção do Conversor A/D
1 - Liga a interrupção do conversor A/D
0 - Desliga a interrupção do conversor A/D
RCIE - Habilita a interrupção da Recepção da EUSART
1 - Liga a interrupção da Recepção da EUSART
0 - Desliga a interrupção da Recepção da EUSART
TXIE - Habilita a interrupção da Transmissão da EUSART
1 - Liga a interrupção da Transmissão da EUSART
71. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 71
0 - Desliga a interrupção da Transmissão da EUSART
SSPIE - Habilita a interrupção da Porta Série Síncrona (MSSP), a cada transferência efectuada
1 - Liga a interrupção MSSP
0 - Desliga a interrupção MSSP
CCP1IE - Habilita a interrupção do módulo CCP1 (Capture/Compare/PWM - Captura/Compara/
PWM)
1 - Liga a interrupção CCP1
0 - Desliga a interrupção CCP1
TMR2IE - Habilita a interrupção por comparação entre PR2 e TMR2
1 - Liga a interrupção da comparação PR2 e TMR2
0 - Desliga a interrupção da comparação PR2 e TMR2
TMR1IE - Habilita a interrupção de fim de contagem do TMR1, quando da contagem de 255 para 0.
1 - Activa interrupção do TMR1
0 - Desactiva interrupção do TMR1
Registo PIE2
O registo PIE2 também contém bits que habilitam as interrupções dos periféricos.
72. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 72
OSFIE - Habilita interrupção por falha do Oscilador interno
1 - Liga interrupção por falha do Oscilador
0 - Desliga interrupção por falha do Oscilador
C2IE - Habilita interrupção do Comparador C2
1 - Liga interrupção do Comparador C2
0 - Desliga interrupção do Comparador C2
C1IE - Habilita interrupção do Comparador C1
1 - Liga interrupção do Comparador C1
0 - Desliga interrupção do Comparador C1
EEIE - Habilita a interrupção pela escrita da EEPROM
1 - Liga a interrupção pela escrita da EEPROM
0 - Desliga a interrupção pela escrita da EEPROM
BCLIE - Habilita a interrupção pela Colisão de Dados no Barramento
1 - Liga a interrupção pela Colisão de Dados no Barramento
0 - Desliga a interrupção pela Colisão de Dados no Barramento
ULPWUIE - Habilita a interrupção pelo“Despertar” em extrema baixa potência
1 - Liga a interrupção pelo“Despertar” em extrema baixa potência
0 - Desliga a interrupção pelo“Despertar” em extrema baixa potência
CCP2IE - Habilita a interrupção do módulo CCP2 (Capture/Compare/PWM - Captura/Compara/
PWM)
1 - Liga a interrupção CCP2
0 - Desliga a interrupção CCP2
73. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 73
Registo PIR1
O registo PIR1 contém as flags das interrupções.
ADIF - Flag da interrupção do conversor A/D
1 - A conversão A/D está completa. Flag deverá ser limpa por software
0 - A conversão não está completa ou não foi iniciada
RCIF - Flag da interrupção da recepção da EUSART
1 - O buffer de recepção da EUSART está completo. A flag é limpa, lendo o registo RCREG.
0 - O buffer de recepção da EUSART não está completo.
TXIF - Flag de interrupção da transmissão da EUSART
1- O buffer de transmissão da EUSART está vazio. A flag é limpa, escrevendo para o registo TXREG
0 - O buffer de transmissão da EUSART está completo.
SSPIF - Flag de interrupção da Porta Série Síncrona (MSSP)
1 - A interrupção MSSP durante a transmissão/recepção ocorreu. Estas condições diferem, dependendo do
modo em que se opera: SPI ou I2C. Esta flag deve ser limpa por software.
0 - Nenhuma interrupção MSSP ocorreu.
CCP1IF - Flag de interrupção de CCP1
1 - A interrupção de CCP1 ocorreu. Dependendo do modo de operação, ocorreu um valor coincidente com
sucesso na captura ou comparação. Em ambos os casos, a flag deverá ser limpa por software. Este bit não é
usado no modo de PWM.
0 - A interrupção de CCP1 não ocorreu.
74. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 74
TMR2IF - Flag de interrupção de coincidência de valores entre TMR2 e PR2
1 - Ocorreu coincidência de valores entre o TMR2 e PR2. Este bit deverá ser limpo por software.
0 - Não ocorreu coincidência de valores entre TMR2 e PR2.
TMR1IF - Flag de interrupção de fim de contagem do TMR1
1 - O TMR1 chegou ao fim da contagem. Este bit deverá ser limpo por software.
0 - O TMR1 não chegou ao fim da contagem.
Registo PIR2
O registo PIR2 também contém as flags das interrupções.
OSFIF - Flag de interrupção 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 interrupção do comparador C2
1 - A saída do comparador C2 mudou de estado (bit C2OUT). Este bit deverá ser limpo por software.
0 - A saída do comparador C2 não mudou de estado.
C1IF - Flag de interrupção do comparador C1
1 - A saída do comparador C1 mudou de estado (bit C1OUT). Este bit deverá ser limpo por software.
0 - A saída do comparador C1 não mudou de estado.
75. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 75
EEIF - Flag de interrupção da operação de escrita na EEPROM
1 - Escrita na EEPROM completa. Este bit deverá ser limpo por software
0 - Escrita na EEPROM não está completa, ou não foi iniciada.
BCLIF - Flag de interrupção de colisão de transferência de dados no Barramento
1 - Ocorreu uma colisão no barramento, quando o módulo MSSP está configurado para I2C mestre. Este bit
deverá ser limpo por software
0 - Não ocorreu colisão no barramento
ULPWUIF - Flag de interrupção de“Despertar” em extrema baixa potência
1 - Condição de“Despertar” ocorreu. Este bit deverá ser limpo por software
0 - Condição de“Despertar” não ocorreu.
CCP2IF - Flag de interrupção de CCP2
1 - A interrupção de CCP2 ocorreu. Dependendo do modo de operação, ocorreu um valor coincidente com
sucesso na captura ou comparação. Em ambos os casos, a flag deverá ser limpa por software. Este bit não é
usado no modo de PWM.
0 - A interrupção de CCP2 não ocorreu.
Registo PCON
O registo PCON contém apenas duas flags, para diferenciar entre: Reset de Power-on, Reset de Brown-out,
Reset de Watchdog ou Reset externo.
76. microcontroladores PIC Registos de Função Especial
antónio sérgio sena
www.senaeng.com :: projectos e soluções em electrónica
+351.967033209 76
ULPWUE - Habilitação do modo de“Despertar” em extrema baixa potência
1 - Liga“Despertar” em extrema baixa potência
0 - Desliga“Despertar” em extrema baixa potência
SBOREN - Habilitação 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 - Não 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 - Não 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 memória de programa do PIC16F887 é de 8k. Então, tem 8192 posições para armazenar o pro-
grama. Por esta razão, o contador de programa tem de ter 13 bits (2^13 = 8192). Por forma a que o conteúdo
de qualquer posição seja alterada por software durante a operação, o seu endereço deverá ser acessível através
de algum SFR. Como os SFR’s são todos de 8 bits, este registo é“artificialmente” criado, dividindo os seus 13
bits por dois registos independentes: PCLATH e o PCL.
Se a execução do programa não 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-
strução a instrução, seguindo um constante incremento de endereço de memória de programa.