Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microcontrolador pic16 f887

1,044 views

Published on

Pontuação da viralidad

Published in: Education
  • Be the first to comment

Microcontrolador pic16 f887

  1. 1. antóniosérgiosena microcontroladores PIC
  2. 2. antóniosérgiosena microcontroladores PIC
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 : • • •
  49. 49. microcontroladores PIC Panorâmica antónio sérgio sena www.senaeng.com :: projectos e soluções em electrónica +351.967033209 49 Atribuição de Pinos
  50. 50. microcontroladores PIC Panorâmica antónio sérgio sena www.senaeng.com :: projectos e soluções em electrónica +351.967033209 50 Atribuição de Pinos
  51. 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. 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. 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. 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. 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.
  56. 56. microcontroladores PIC Panorâmica antónio sérgio sena www.senaeng.com :: projectos e soluções em electrónica +351.967033209 56 Bancos de Memória
  57. 57. microcontroladores PIC Panorâmica antónio sérgio sena www.senaeng.com :: projectos e soluções em electrónica +351.967033209 57 SFR - Banco 0
  58. 58. microcontroladores PIC Panorâmica antónio sérgio sena www.senaeng.com :: projectos e soluções em electrónica +351.967033209 58 SFR - Banco 1
  59. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

×