Conectando o Pic PIC16F877A

470

Click here to load reader

Transcript of Conectando o Pic PIC16F877A

1

Conectando o PIC 16F877A - Recursos Avanados

2

Conectando o

PIC16F877ARecursos Avanados

EDITORA AFILIADA

Conectando o PIC 16F877A - Recursos Avanados

3DedicatriaMais uma vez tenho a chance de dedicar meu trabalho pessoa que mais amo neste mundo: minha querida esposa Eliete; Dedico tambm minha amada sobrinha, Bia, que ainda muito pequena para saber o significado de uma dedicatria, mas que me alegra com fora suficiente para uma vida inteira. David Jos de Souza A paternidade realmente uma experincia incrvel. H algum tempo eu no tinha uma idia muito precisa sobre meu futuro, e hoje me vejo um homem muito mais completo, pois j plantei minha rvore, escrevi meu livro e acabei de ser pai. Por isso, dedico meu trabalho minha querida esposa Andra e minha recm-nascida filha Nicole. Nicols Csar Lavinia

Em paz me deito e logo adormeo, porque s tu, Senhor, me fazes viver em segurana

Conectando o PIC 16F877A - Recursos Avanados

4AgradecimentosUma experincia nunca igual outra. Escrever este livro foi muito mais difcil que o primeiro, pois a quantidade de conhecimento tcnico necessrio estava bem acima do meu potencial inicial. Uma vez mais o desafio prova que as pessoas so capazes de vencer seus prprios limites, principalmente quando temos o apoio das pessoas que se encontram ao nosso lado. Este o motivo mais forte de todos para justificar esses agradecimentos. Mais uma vez tenho a obrigao, sem o pesar da palavra, de agradecer minha famlia e em especial minha esposa. Amo todos vocs. Agradeo a todo o pessoal da Mosaico pela participao de cada um neste livro, cada qual do seu jeito e com suas condies, mas devo um agradecimento muito especial ao meu scio, amigo e co--autor, Nicols, pois sem seu conhecimento tcnico e capacidade de trabalho jamais conseguiria terminar esta obra. Um abrao muito especial tambm aos meus outros scios da Mosaico: meu irmo de sangue, Jos Carlos; meu irmo de vida, Gil; e meu irmo de alma, Vanderlei. Na verdade, conclu esta obra em junho de 2002 e, por isso, gostaria muito de aproveitar, sem demagogias, para agradecer ao meu Pas, cuja seleo tornou-se agora Pentacampe Mundial de Futebol. Sou patriota e apaixonado pelo Brasil, mas gostaria de que nosso povo sentisse orgulho da sua ptria diariamente. Devemos levantar nossas cabeas e trabalhar pelo nosso futuro, recuperar nossa auto-estima e ter a certeza de que a nica soluo do nosso Pas est no prprio povo. Por ltimo, como em meus demais textos, no poderia deixar de agradecer a voc, leitor, que est se preparando para passar horas ao lado deste livro, enfrentando os mesmos desafios que ns enfrentamos quando comeamos a explorar esse vasto universo denominado PIC. David Jos de Souza

Conectando o PIC 16F877A - Recursos Avanados

5Distribuidores

Mosaico Engenharia Eletrnica S/C Ltda. Projetos eletrnicos com especializao em PIC, consultoria e treinamento. Rua Galeo Carvalhal, 125 - Bairro Jardim Bela Vista - Santo Andr - SP Tel:(11)4992-8775 Tel/Fax:(11)4992-8775 E-mail: [email protected] Home page: www.mosaicohps.com.br Microchip Technology Inc. Fabricante do PIC. 2355, W. handler Blvd. - Chandler - Arizona USA Tel: (480) 768-7200 / Fax: (480) 899-9210 Home page: www.microchip.com Aplicaes Eletrnicas Artimar Ltda. Representante exclusivo Microchip no Brasil. Rua Marqus de It, 70 - 8- andar - Conj. 82 So Paulo - SP Tel: (11) 3231-0277 Fax: (11) 3255-0511 E-mail: [email protected] Home page: www.artimar.com.br Aut-Comp Revendedor autorizado. Rua Lord Cokrane, 616 -139 andar - Sala 1304 So Paulo - SP Tel: (11) 6915-7443 Fax: (11) 6915-7443 Home page: www.autcomp.com.br Farnell do Brasil Revendedor autorizado. Rua Emir Macedo Nogueira, 240 - Diadema - SP Tel: (11) 4066-9400 Fax: (11) 4066-9410 Home page: www.farnell.com Future Eletronics Revendedor autorizado. Rua Luzitana, 740 - 102 andar - Conj. 103/104 Campinas - SP Tel: (19) 3737-4100 E-mail: [email protected] Home page: www.future-active.com.br

Conectando o PIC 16F877A - Recursos Avanados

6Hitech Revendedor autorizado. Rua Branco de Moraes, 489 - So Paulo - SP Tel: (11) 5188-4000 Fax: (11) 5188-4191 E-mail: [email protected] Home page: www.hitech.com.br Tec Tecnologia Revendedor autorizado. Rua Flrida, 1737 - 29 andar - So Paulo - SP Tel: (11) 5505-2046 Fax: (11) 5505-0017 Home page: www.tec-arrow.com.br

Conectando o PIC 16F877A - Recursos Avanados

7Sobre o Material Disponvel na InternetO material disponvel no site da Editora rica contm: cdigos-fonte dos exemplos apresentados, data sheets dos componentes adicionais (LCD e memria) e o software M2Com for Windows para testes de transmisso e recepo da comunicao serial via RS232, desenvolvido pelos autores. necessrio ter instalado em sua mquina AdobeAcrobat 4,0 e MPLAB 5.7 ou superior. Pic.exe-1.87MB

Procedimentos para Download:Acesse o site da Editora rica Ltda. (www.editoraerica.com.br). A transferncia do arquivo disponvel pode ser feita de duas formas: Por meio do mdulo de pesquisa - Localize o livro desejado, digitando palavras-chave (ttulo do livro ou nome do autor). Aparecero os dados do livro e o arquivo para download, ento d um clique sobre o arquivo executvel que ser transferido. Por meio do boto "Download" - Na pgina principal do site, clique no item "Download". Ser exibido um campo no qual devem ser digitadas palavras-chave (ttulo do livro ou nome do autor). Sero exibidos o nome do livro e o arquivo para download. D um clique sobre o arquivo executvel que ser transferido.

Procedimentos para DescompactaoPrimeiro passo: aps ter transferido o arquivo, verifique o diretrio em que se encontra e d um duplo-clique sobre ele. Ser exibida unia tela do programa WINZ1P SELF-EXTRACTOR que conduzir voc ao processo de descompactao. Abaixo do Unzip To Folder, existe um campo que indica o destino dos arquivos que sero copiados para o disco rgido do seu computador: C:\Conectando o PlC Segundo passo; prossiga com a instalao, clicando no boto Unzip, o qual se encarrega de descompactar os arquivos. Logo abaixo dessa tela, aparece a barra de status a qual monitora o processo para que voc acompanhe. Aps o trmino, outra tela de informao surgir, indicando que os arquivos foram descompactados com sucesso e esto no diretrio criado. Para sair dessa tela, clique no boto OK, Para finalizar o programa WINZIP SELF EXTRACTOR, clique no boto Close.

Conectando o PIC 16F877A - Recursos Avanados

8

PrefcioNovamente os autores nos presenteiam com uma obra de excelente qualidade tcnica. Voltada especialmente para a rea de projetos com sistemas microcontrolados, com nfase no microcontrolador PIC16F877A, ela disponibiliza ao pblico uma srie de tcnicas de "software" e "hardware1 que foram desenvolvidas por eles e so utilizadas diariamente em seus laboratrios. Esta a melhor forma de obtermos acesso a mtodos realmente prticos e atualizados com as necessidades do mercado. Totalmente transparente, esta literatura trata de forma clara e direta uma srie de aspectos e problemas prticos em projetos de sistemas microcontrolados, fornecendo solues abertas e de primorosa qualidade. Mais do que fornecer solues prontas, o leitor vai verificar que no "Conectando o PIC 16F877A - Recursos Avanados" os assuntos so detalhadamente comentados e explicados, possibilitando que ele desenvolva projetos de maior complexidade. Com seriedade e responsabilidade, os autores vem mostrando para o pblico brasileiro que o sucesso de um empresa na rea de projetos no reside em deter todo conhecimento para si, mas saber difundi-lo de maneira a possibilitar a um grupo cada vez maior de pessoas o acesso a maravilhosas solues que a eletrnica microcontrolada permite. E em poucas palavras: a competncia no teme a concorrncia. Este livro combina to bem o embasamento terico com a exemplificao prtica, que se torna um excelente material de apoio didtico tanto para as pessoas que desejam aprender por seus prprios meios quanto para ns, professores, que necessitamos tanto de material complementar. Que nesta era do conhecimento possamos, cada vez mais, contar com novas obras deste porte e qualidade. Jos Carlos de Souza Jr.Professor Universitrio de diversas matrias da cadeira de Engenharia Eletrnica, incluindo a de Microcontroladores, em faculdades e universidades de So Paulo, tais como FE/, Mau e So Judas.

Conectando o PIC 16F877A - Recursos Avanados

9Sobre os AutoresDavid Jos de Souza formado em Engenharia Mecnica pela Universidade Santa Ceclia, trabalhando h quatro anos no setor. Trabalhou durante trs anos no segmento de informtica pela Canal 1 Informtica. Atualmente, scio e diretor administrativo do Grupo Mosaico, ao qual tem se dedicado nos ltimos anos. Especializou-se nos microcontroladores da Microchip devido sua grande utilizao nos laboratrios da Mosaico Engenharia. responsvel tambm pelas especificaes de projetos, com as quais adquiriu experincia necessria para poder ministrar palestras e cursos sobre o assunto. Pretende ainda se dedicar a outras obras sobre microcontroladores e desenvolvimento de projetos. Nicols Csar Lavnia engenheiro eletricista com especializao em eletrnica, formado pela Escola de Engenharia Mau. Cursou mestrado no Laboratrio de Automao e Controle da Escola Politcnica da Universidade de So Paulo. Possui treinamento "Master em microcontroladores PIC" promovido pela prpria Microchip em Arizona, nos EUA. Trabalha na rea de desenvolvimento de projetos e consultoria h mais de sete anos. Atualmente, scio e diretor tcnico da Mosaico Engenharia, responsvel pela coordenao do laboratrio de desenvolvimento. Como co-autor deste livro, expe a vasta experincia adquirida no desenvolvimento de projetos eletrnicos.

Conectando o PIC 16F877A - Recursos Avanados

10SumrioCaptulo 1 Introduo......................................................................... Nossos objetivos...................................................................................... Pr-requisitos sugeridos.......................................................................... A didtica do sistema............................................................................... Introduo................................................................................................. Prtica....................................................................................................... Projeto final............................................................................................... Apndices................................................................................................. Padres textuais....................................................................................... Captulo 2 - O PIC 16F877A.................................................................... Pinagem.................................................................................................... Nomenclatura dos pinos............................................................................ A estruturao interna............................................................................... Os ciclos de mquina................................................................................ A memria de programa............................................................................ Vetor de reset............................................................................................ Vetor de interrupo.................................................................................. Tamanho da memria e pginas............................................................... Pilha (Stack).............................................................................................. Mapa da memria de programa................................................................ A memria de dados voltil (RAM)............................................................ Registradores especiais............................................................................ Registradores de uso geral....................................................................... Tamanho da memria e bancos............................................................... Mapa da memria de dados..................................................................... 2 Memrias no-volteis (E PROM e FLASH)........................................... 29 As interrupes........................................................................................ Interrupo de Timer 0............................................................................. Interrupo externa.................................................................................. Interrupo por mudana de estado......................................................... Interrupo da porta paralela (PSP)......................................................... Interrupo dos conversores A/D............................................................. Interrupo de recepo da USART......................................................... Interrupo de transmisso da USART.................................................... 2 Interrupo da comunicao serial (SPI e I C)......................................... 31 Interrupo do CCP1 (Capture/Compare/PWM)....................................... Interrupo do Timer 2.............................................................................. Interrupo do Time 1.............................................................................. 2 Interrupo de fim de escrita na E PROM/FLASH.................................... 32 Interrupo de coliso de dados (Bus Collision)....................................... Interrupo do CCP2 {Capture/Compare/PWM)....................................... Interrupo dos comparadores.................................................................. Operando com as interrupes.................................................................. Demais recursos e perifricos.................................................................... Caractersticas eltricas............................................................................. Captulo 3 - Resumo do Set de Instrues................................................ Os termos utilizados................................................................................... A construo dos nomes das instrues.................................................... O resumo das instrues............................................................................ Captulo 4 - As Primeiras Exploraes (I/OS e Timers)......................... Introduo................................................................................................... Teoria e recursos do PIC............................................................................ Estudo das Portas....................................................................................... Estudo dos Timers....................................................................................... Conectando o PIC 16F877A - Recursos Avanados 14 14 14 14 14 15 15 16 16 18 19 19 22 23 24 24 24 24 26 26 26 27 27 27 29 30 30 30 31 31 31 31 31 31 32 32 32 32 32 32 35 36 38 38 39 39 42 42 42 42 47

11Lgica do exemplo....................................................................................... Esquema eltrico......................................................................................... Fluxograma.................................................................................................. Cdigo.......................................................................................................... Dicas e comentrios..................................................................................... Exerccios propostos.................................................................................... Captulo 5 - Varredura de Display de Quatro Dgitos................................... Introduo..................................................................................................... Teoria e recursos do PIC.............................................................................. Lgica do exemplo........................................................................................ Esquema eltrico.......................................................................................... Fluxograma................................................................................................... Cdigo.......................................................................................................... Dicas e comentrios..................................................................................... Exerccios propostos.................................................................................... Capitulo 6-Operao com Display de Cristal Lquido (LCD)................... Introduo..................................................................................................... Teoria e recursos do PIC.............................................................................. Inicializao do LCD..................................................................................... Comandos do LCD..................................................................................... Lgica do exemplo...................................................................................... Esquema eltrico........................................................................................ Fluxograma................................................................................................. Cdigo......................................................................................................... Dicas e comentrios.................................................................................... Exerccios propostos................................................................................... Capitulo 7 Conversor Analgico-Digital Interno................................ Introduo................................................................................................... Teoria.......................................................................................................... Recursos do PIC......................................................................................... Lgica do exemplo...................................................................................... Esquema eltrico......................................................................................... Fluxograma................................................................................................. Cdigo......................................................................................................... Dicas e comentrios.................................................................................... Exerccios propostos................................................................................... Capitulo 8 - Conversor Analgico-Digital POR RC................................. Introduo..................................................................................................... Teoria e recursos do PIC.............................................................................. Lgica do exemplo........................................................................................ Esquema eltrico........................................................................................... Fluxograma.................................................................................................... Cdigo........................................................................................................... Dicas e comentrios...................................................................................... Exerccios propostos..................................................................................... Captulo 9 - Os Mdulos CCP(Capture/Compare/PWM)........................... Introduo...................................................................................................... Teoria e recursos do PIC............................................................................... Modo Capture................................................................................................. Modo Compare............................................................................................... Modo PWM..................................................................................................... Lgica do exemplo......................................................................................... Esquema Eltrico........................................................................................... Conectando o PIC 16F877A - Recursos Avanados 55 56 57 59 65 65 67 67 67 69 71 72 76 95 95 96 96 96 98 100 104 105 106 110 127 127 128 128 128 130 137 137 138 140 148 148 149 149 149 151 153 154 156 169 169 170 170 170 171 172 174 179 180

12Fluxograma..................................................................................................... Cdigo............................................................................................................ Dicas e comentrios....................................................................................... Exerccios propostos...................................................................................... Captulo 10 - Trabalhando com as Memrias No-Volteis..................... Introduo...................................................................................................... Teoria e Recursos do PIC............................................................................. Escrevendo na EPROM (Dados).................................................................. Lendo a EPROM (Dados)............................................................................. Escrevendo na FLASH (Programa)............................................................... Lendo a FLASH (Programa).......................................................................... 2 Tratando a interrupo de final de escrita na E PROM e FLASH................. 204 Lgica do exemplo......................................................................................... Esquema eltrico........................................................................................... Fluxograma.................................................................................................... Cdigo............................................................................................................ Dicas e Comentrios...................................................................................... Exerccios propostos...................................................................................... Captulo 11-Comunicao Serial 1 - SPI e I C........................................... 240 Introduo...................................................................................................... Teoria e recursos do PIC para SPI................................................................ 2 Teoria para I C............................................................................................... 246 Condio de Start.......................................................................................... Condio de Stop.......................................................................................... Condio de Re-Start.................................................................................... Condio de Acknowledge (ACK)................................................................. Transmisso de endereo............................................................................. Transmisso de dados.................................................................................. Pausas.......................................................................................................... Diagramas de tempo..................................................................................... 2 Recursos do PIC para I C............................................................................. 253 Modo Slave.................................................................................................... Modo Master.................................................................................................. Lgica do exemplo......................................................................................... Esquema eltrico........................................................................................... Fluxograma.................................................................................................... Cdigo........................................................................................................... Dicas e comentrios...................................................................................... Exerccios propostos..................................................................................... 240 240 247 247 248 248 249 249 249 249 253 259 266 268 269 274 297 2972

181 183 199 199 200 200 200 202 203 203 204 205 206 207 212 239 239

Captulo 12 - Comunicao Serial 2 USART......................................... Introduo.................................................................................................... Teoria........................................................................................................... Modo assncrono......................................................................................... Modo sncrono............................................................................................. Recursos do PIC.......................................................................................... Modo assncrono.......................................................................................... Modo sncrono.............................................................................................. Lgica do exemplo....................................................................................... Esquema eltrico......................................................................................... Fluxograma.................................................................................................. Cdigo......................................................................................................... Dicas e comentrios.................................................................................... Exerccios propostos.................................................................................... Conectando o PIC 16F877A - Recursos Avanados

299 299 299 299 301 302 306 307 309 310 311 313 327 327

13Captulo 13-Outras Caractersticas.......................................................... 328

Introduo.................................................................................................... 328 Comunicao paralela (PSP).328 Watchdog Tirner (WDT)..330 Power-on Reset (POR)331 Power-upTimer(PWRT)...331 Oscilator Start-upTimer (OST)331 Brown-out Reset (BOR).................................................................... 332 SLEEP (Power-downMode)......................................................................... 332 Controle de Resets...................................................................................... 333 Oscilador...................................................................................................... 333 Sistema de proteo do cdigo (Code Protection)...................................... 335 Registradoras de identificao (IDs)............................................................ 335 Sistema de emulao In-Circuit (Debugger Mode)...................................... 335 Proteo de escrita interna da FLASH........................................................ 336 Gravao In-Circuit (ICSP).......................................................................... 336 Gravao em baixa tenso (Low Voltage Programiriing)............................ 336Capitulo 14 - Implementando um Sistema de Medio de Temperatura............. 338

Inroduo..................................................................................................... O sistema..................................................................................................... O sensor de temperatura............................................................................. O aquecimento............................................................................................. O resfriamento............................................................................................. Comunicao serial...................................................................................... Consideraes gerais................................................................................... Esquema eltrico.......................................................................................... Fluxograma................................................................................................... Cdigo.......................................................................................................... Apndice A-Detalhamento dos Registradores Especiais (SFRS).......... Introduo..................................................................................................... Agrupamento e localizao........................................................................... Resumo e condies aps reset................................................................... Apndice B - Set de Instrues Completo (para 14 bits)......................... Apndice C - Diretrizes da Linguagem MPASWI....................................... Apndice D-Instrues Especiais............................................................... Apndice E-Operadores do Compilador..................................................... Apndice F - Esquema Eltrico da Placa Proposta (McLab2).................. ndice Remissivo........................................................................................... Referncias Bibliogrficas...........................................................................

338 338 338 339 339 339 340 340 341 346 379 379 379 406 409 430 454 456 458 462 466

Conectando o PIC 16F877A - Recursos Avanados

14

Conectando o PIC

1IntroduoNossos objetivosQuando criamos nossa primeira obra sobre este tema, o livro "Desbravando o PIC",dedicamos muitas horas de trabalho para que tudo sasse conforme nosso intento e que o sucesso alcanado por essa literatura seja o reconhecimento da qualidade do nosso trabalho. Entretanto, era nossa inteno, desde o comeo, que a literatura disponvel para o PIC fosse muito mais abrangente. O objetivo deste segundo livro exatamente este: complementar o conhecimento dos usurios do PIC. Enquanto o primeiro destina-se ao aprendizado da linguagem assembly, utilizando-se para isso dos recursos disponveis no PIC16F628A, nossa inteno agora aprimorar seus conhecimentos nos demais recursos da famlia PIC, alm da integrao com perifricos prticos e totalmente necessrios nos dias de hoje, como varredura de displays, LCD e comunicao RS-232, Com esses conhecimentos, seus projetos podero dar um salto evolutivo em relao aos recursos empregados, possibilitando uma melhor interface com o usurio e o mundo exterior de uma forma geral. Com os novos recursos do PIC, seus programas ficaro menores e mais eficientes, seus circuitos mais enxutos e robustos, seus sistemas muito mais avanados e poderosos. A partir de agora, seus limites sero sua dedicao e criatividade.

Pr-requisitos sugeridosEntretanto, tudo isso exige um conhecimento prvio. Por isso, para um bom desempenho neste treinamento, necessrio que voc j tenha conhecimento da linguagem assembly do PIC, assim como as ferramentas de trabalho: o MpLab e um sistema de gravao. Como j dissemos, nossa inteno no o aprendizado da programao bsica, mas sim a explorao de recursos avanados e os sistemas complementares. Caso voc ainda no domine a linguagem, recomendamos a leitura da obra "Desbravando o PIC", tambm publicado pela Editora rica.

A didtica do sistemaMais uma vez houve, de nossa parte, grande empenho em relao didtica e ordem cronolgica aplicada ao texto. Consideramos essa sistemtica muito importante para o seu desempenho, principalmente numa aplicao autodidata.

Conectando o PIC 16F877A - Recursos Avanados

15

Desta vez resolvemos dividir o conhecimento em quatro grandes partes:

IntroduoEsta parte ser destinada ao esclarecimento das caractersticas do PIC utilizado como base no estudo. Antes de nos aprofundarmos sobre os recursos, devemos conhecer bem todas as facetas do PIC em questo, tais como seus registradores especiais, caractersticas eltricas, pinagem, etc.

PrticaTodas as funes e recursos estudados esto divididos em dez captulos prticos. Cada um desses captulos possui uma estruturao padronizada, baseada nos seguintes tpicos: Introduo: Explicaes gerais sobre os assuntos estudados; Teoria: Quando necessrio, detalha o embasamento terico obrigatrio para o entendimento de assunto em questo; Recursos do PIC: Detalhamento dos recursos do PIC que sero utilizados nos exemplos expostos, com a explicao do funcionamento, registradores envolvidos, etc. Muitas vezes esse tpico pode estar agrupado com o anterior; Lgica do exemplo: Explicar qual a lgica utilizada para a montagem do programa de exemplo; Esquema eltrico: Apresenta o esquema eltrico necessrio para a implementao do programa, Esse esquema totalmente compatvel com o hardware apresentado no Apndice F(McLab2), porm apresenta somente os elementos relacionados com o captulo em questo; Fluxograma: Este tpico apresentar o fluxograma de operao para complementar a lgica apresentada anteriormente e facilitar o entendimento do exemplo; Cdigo: O cdigo propriamente dito, em assembly, para o exemplo do captulo; Dicas e comentrios: Dicas, comentrios importantes e demais desdobramentos resultantes da utilizao do exemplo apresentado; Exerccios propostos: Outros problemas e questes que podem ser discutidos e resolvidos com os recursos j aprendidos Um fato importante que, com essa sistemtica, todos os tpicos relacionados a um determinado assunto encontram-se agrupados no mesmo captulo, desde o embasamento terico at o exemple estudado e os exerccios propostos. Desta maneira, cada captulo torna-se independente dos demais, podendo ser estudado separadamente.

Projeto finalAo trmino dos captulos prticos ser apresentado um projeto real envolvendo a medio de temperatura, com atuadores para aquecimento e resfriamento. Trata-se de um exemplo capaz de utilizar os recursos adicionais da placa apresentada no Apndice F (McLab2), baseando-se nas prticas aprendidas durante o treinamento.

Conectando o PIC 16F877A - Recursos Avanados

16ApndicesComo j conhecemos as caractersticas marcantes de nossos leitores, os apndices tornaram-se obrigatrios em uma boa literatura didtica. Eles lhe sero de grande valia quando voc se transformar em um programador dedicado, pois tornam-se fontes de consulta permanente. Desta forma, tentamos colocar nos apndices informaes teis ao dia-a-dia do programador, seguindo, sempre que possvel a formatao e os termos utilizados nas literaturas tcnicas da prpria Microchip

. Padres textuaisPara facilitar o entendimento deste livro, alguns padres textuais foram utilizados: Itlico Termo em lngua estrangeira que ainda no foi popularmente adotado no Brasil, Nome de registrador, bit ou pino. Nome do registrador e nome do(s) bit(s) interno(s).

Negrito Registrador

Conectando o PIC 16F877A - Recursos Avanados

17Anotaes

__________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________

Conectando o PIC 16F877A - Recursos Avanados

18

Conectando o PIC

2O PIC 16F877APara podermos conhecer os demais recursos da famlia PIC, devemos adotar como base de nossos estudos um modelo extremamente poderoso que agrupe de uma s vez o maior nmero possvel de recursos disponveis. Desta vez escolhemos trabalhar com o modelo 16F877A. Vejamos agora o porqu: Micro controlador de 40 pinos, o que possibilita a montagem de um hardware complexo e capaz de interagir com diversos recursos e funes ao mesmo tempo; Via de programao com 14 bits e 35 instrues 33 portas configurveis como entrada ou sada; 15 interrupes disponveis; Memria de programao E PROM FLASH, que permite a gravao rpida do programa diversas vezes no mesmo chip, sem a necessidade de apag-lo por meio de luz ultravioleta, como acontece nos Microcontroladores de janela; Memria de programa com 8kwords, com capacidade de escrita e leitura pelo prprio cdigo interno; Memria E PROM (no-voltil) interna com 256 bytes; Memria RAM com 368 bytes; Trs Timers (2x8 bits e 1x16 bits); Comunicaes seriais: SPI, PC e USART; Conversores analgicos de 10 bits (8x) e comparadores analgicos (2x); Dois mdulos CCP: Capture, Compare e PWM; Programao in-circuit (alta e baixa tenso); Power-on Reset (POR) interno; Brown-out Reset (BOR) interno. A grande vantagem da famlia PIC que todos os modelos possuem um set de instrues bem parecido, assim como tambm mantm muitas semelhanas entre suas caractersticas bsicas. Desta maneira ao conhecermos e estudarmos o PIC 16F877A estaremos nos familiarizando com todos os Microcontroladores da Microchip, o que tornar a migrao para outros modelos muito mais simples. Os recursos aqui estudados encontram-se disponveis em diversos outros modelos. Conectando o PIC 16F877A - Recursos Avanados2 2

19

Nomenclatura dos pinosPara entendermos melhor o significado de cada nomenclatura utilizada para identificao dos pinos, montaremos uma tabela onde descreveremos detalhes da sua utilizao.

Nm. Nome do Pino Pino OSC1/CLKIN OSC2/CLKOUT 13 14

I/O/P

Tipo

Descrio

I O

Entrada para cristal. CMOS(4) Entrada para osciladores externos. (hbridos ou RC) Sada para cristal. Os cristais ou ressonadores devem ser ligados ao pinos OSC1 e OSC2. Sada com onda quadrada em da freqncia imposta em OSC1 quando em modo RC. Essa freqncia equivale aos ciclos de mquina internos.

ST/

Conectando o PIC 16F877A - Recursos Avanados

20Nm. I/O/ Pino P

Nome do Pino MCLR/Vpp Vss vdd RA0/AN0 RA1/AN1 RA2/AN2/ Vref-/CVref RA3/AN3/VREF+ RA4 / T0CKI / C1OUT RA5/SS/AN4/ C2OUT

Tipo ST TTL TTL TTL TTL ST

Descrio Master Clear (reset) externo. 0 microcontrolador s funciona quando este pino encontra-se em nvel alto. Entrada para tenso de programao (13V). GND. Alimentao positiva. PORTA (l/Os digitais bidirecionais e sistema analgico): RA0: I/O digital ou entrada analgica ANO. RA1 : I/O digital ou entrada analgica AN1 . RA2: I/O digital ou entrada analgica AN2 ou tenso negativa de referncia analgica. RA3: I/O digital ou entrada analgica AN3 ou tenso positiva de referncia analgica. RA4: I/O digital (quando sada open drayn, isto , no consegue impor nvel alto) ou entrada externa do contador TMR0 ou sada do comparador 1 . RA5: I/O digital ou entrada analgica AN4 ou habilitao externa (slave select) para comunicao SPI ou sada do comparador 2. PORTB (l/Os digitais bidirecionais). Todos os pinos deste PORT possuem pull-up interno que podem ser ligados/ desligados pelo software: RB0: I/O digital com interrupo externa. RB1: I/O digital. RB2: I/O digital. RB3: I/O digital ou entrada para programao em baixa tenso (5V). RB4: I/O digital com interrupo por mudana de estado. RB5: I/O digital com interrupo por mudana de estado. RB6: I/O digital com interrupo por mudana de estado ou clock da programao serial ou pino de in-circuit debugger. RB7: I/O digital com interrupo por mudana de estado ou data da programao seriai ou pino de in-circuit debugger. PORTC (l/Os digitais bidirecionais): RC0:I/O digital ou sada do oscilador externo para TMR1 ou entrada de incremento para TMR1 . RC1: I/O digital ou entrada do oscilador externo para TMR1 ou entrada do Capture2 ou sadas para Compare2/PWM2. RC2: I/O digital ou entrada do Capturei ou sadas para Compare1/PWM1. RC3: I/O digital ou entrada/sada de clock para comunicao 2 serial SPI / I C. RC4: I/O digital ou entrada de dados para SPI ou via de 2 dados (entrada/sada) para I C.

1

l/p

12/3 p 1 11/3 p 2 2 3 4 5 6 l/O I/O l/O I/O I/O

7

I/O

TTL

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC

33 34 35 36 37 38 39

I/O I/O I/O

TTL/ST(1) TTL TTL TTL TTL TTL TTL/ST

RB7/PGD

40

I/O TT17ST(2)

RCO/T10SO/ T1CKI RC1/T10SI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA

15 16 17 18 23

I/O l/O I/O I/O I/O

ST ST ST ST ST

Conectando o PIC 16F877A - Recursos Avanados

21Nome do Pino RC5/SDO RC6/TX/CK Nm. Pino 24 25

I/O/P I/O I/O

Tipo ST ST

Descrio RC5: I/O digital e sada de dados para SPI. RC6: I/O digital ou TX (transmisso) para comunicao USART assncrona ou clock para comunicao sncrona. RC7: I/O digital ou RX (recepo) para comunicao USART assncrona ou data para comunicao sncrona. PORTD (I/Os digitais bidirecionais) ou porta de comunicao paralela.

RC7/RX/DT

26

I/O

ST

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

19 20 21 22 27 28 29 30

I/O I/O I/O I/O I/O I/O I/O I/O

(3)

TTL/ST (3) TTL/ST (3) TTL/ST (3) TTL/ST (3) TTL/ST (3) TTL/ST (3) TTL/ST (3) TTL/ST

RD0: I/O digital ou dado 0 (comunicao paralela). RD1: I/O digital ou dado 1 (comunicao paralela). RD2: I/O digital ou dado 2 (comunicao paralela). RD3: I/O digital ou dado 3 (comunicao paralela). RD4: I/O digital ou dado 4 (comunicao paralela). RD5: I/O digital ou dado 5 (comunicao paralela). RD6: I/O digital ou dado 6 (comunicao paralela). RD7: I/O digital ou dado 7 (comunicao paralela).

PORTE (I/OS digitais bidirecionais e sistema analgico): RE0/RD/AN5 8 I/O(3)

TTL/ST(3)

RE0: I/O digital ou controle de leitura da porta paralela ou entrada analgica AN5. RE1: I/O digital ou controle de escrita da porta paralela ou entrada analgica AN6. RE2: I/O digital ou habilitao externa da porta paralela ou entrada analgica AN7.

RE1/WR/AN6

9

I/O

TTL/ST(3)

RE2/CS/AN7

10

I/O

TTL/ST

Legenda:

l O I/O P TTL ST

= = = = = = =

Input (entrada) Output(sada) Input/Output (entrada ou sada) Power (alimentao) No-utilizado Entrada tipo TTL Estrada tipo Schmitt Trigger

Notas: (1) Esta entrada do tipo ST, somente quando configurado como interrupo externa. (2) Esta entrada do tipo ST, somente durante o modo de programao serial. (3) Esta entrada do tipo ST, quando configurado como l/O de uso geral e TTL quando.usado em modo de porta paralela. (4) Esta entrada ST quando em modo RC e CMOS nos demais casos.

Conectando o PIC 16F877A - Recursos Avanados

22A estruturao internaJ que estamos nos aprofundando nas caractersticas do PIC 16F877A, que tal darmos uma olhadinha em seu interior? O que h por dentro deste componente? Como sua estrutura? O diagrama de blocos, mostrado a seguir, detalhar todos os perifricos e comunicaes que compem esse to poderoso microcontrolador:

No diagrama de blocos (retirado do data sheet original da Microchip) podem ser visualizadas as diversas partes que compem o microcontrolador PIC16F877A. No centro encontramos a ULA (em ingls: ULA), que a unidade de processamento e est diretamente ligada ao registrador Work (W reg). No canto superior esquerdo temos a memria de programa (FLASH) saindo desse bloco temos um barramento de 14 bits (Program Bus). Mais a direita est a memria de dados (RAM). Ela j possui um carregamento de 8 bits (Data Bus). Totalmente do lado direito encontram-se os PORTs, de PORTA a

Conectando o PIC 16F877A - Recursos Avanados

23

PORTE. Na parte inferior podem ser encontrados os demais perifricos, tais como a E2PROM (memria de dados no-voltil), os timers (TMR0, TMR1 e TMR2), os A/Ds de 10 bits, os modos CCP (Compare, Capture e PWM), as comunicaes seriais (SPI, I C e USART), os comparadores e a tenso de referncia. Observe que, entre todos os perifricos, a comunicao feita atravs de um barramento de oito vias. Um pouco mais ao centro, podemos encontrar ainda o registrador de status (STATUS reg), onde algumas informaes importantes sobre as operaes aritmticas da ULA ficam armazenadas, e os demais SFRs (registradores especiais). Na parte superior temos ainda o contador de linha de programa (Program Counter) e a pilha de oito nveis (Stack). Temos ainda os circuitos internos de reset, POR, BOR, osciladores, Watchdog Timer (WDT) e sistema de programao.

2

Os ciclos de mquinaPara quem j trabalha com Microcontroladores, possivelmente este assunto j conhecido, mas, devido sua grande importncia, achamos melhor revis-lo e, quem sabe, aperfeioar seus conhecimentos. O bsico que deve ser conhecido que, neste microcontrolador (assim como na maioria dos modelos da linha PIC), o clock interno (CKINT) equivalente ao clock externo (CKEXT ou FOSC) dividido por 4. Com isso teremos:

CKINT = CKEXT _______ 4Desta forma, quando trabalhamos, por exemplo, com um cristal de 4 MHz, o PIC estar trabalhando internamente com uma freqncia de 1 MHz. Para ns, mais importante que o clock interno, o perodo dessa freqncia (o inverso da mesma), que equivalente ao tempo de durao de um ciclo de mquina, popularmente chamado de CM ou TCY. Assim sendo teremos:

TCY =

1 ______ CKINT

Continuando com nosso exemplo de 4 MHz externo, nosso ciclo de mquina (CM) ser de 1s. Mas, afinal de contas, qual o motivo da necessidade da diviso do clock externo por 4? Isso pode ser visualizado e explicado quando entendermos o funcionamento interno do processador. Para a execuo de uma nica instruo pelo processador, vrias operaes precisam ser realizadas. Como no existe capacidade de processamento paralelo, essas operaes so executadas em subciclos do ciclo de mquina, originados pela diviso do clock externo. Esses subciclos so chamados de Q1, Q2, Q3 e 04. O PC (contador de programa) incrementado automaticamente no incio de 01. Durante o decorrer dos quatro tempos (Q1 a Q4), a instruo previamente carregada para dentro da ULA executada, sendo trocadas informaes com a memria de dados e o registrador Work sempre que necessrio. Por ltimo, ao final do tempo 04, a prxima instruo (lembre-se de que o PC j foi incrementado) buscada da memria de programa e armazenada na ULA. Conectando o PIC 16F877A - Recursos Avanados

24Essa caracterstica de buscar a informao em um ciclo de mquina e execut-la no prximo conhecida como Pipeline. Ela permite que quase todas as instrues sejam executadas em apenas um ciclo, gastando assim 1s (continuando com nosso exemplo de 4 MHz) e tornando o sistema muito mais rpido. As nicas excees referem-se s instrues que geram "saltos" no program counter (PC), como chamadas de rotinas e retornos. Ao executar essas instrues, o Pipeline deve ser primeiramente limpo para depois poder ser carregado novamente com o endereo correto, consumindo para isso 2 ciclos de mquina. O diagrama seguinte ilustra os quatro subciclos (Q1 a Q4) e o conceito de Pipeline.

A memria de programaA memria de programa do PIC 16F877A de 14 bits do tipo FLASH, uma memria regravvel eletronicamente com escrita rpida. Uma outra caracterstica muito importante da memria de programa desse PIC que ela pode ser acessada por software, possibilitando que o programa seja reescrito dinamicamente, ou, ainda, que ela 2 seja usada como uma expanso da memria E PROM de dados. Vamos conhecer, ento, as demais caractersticas dessa memria:

Vetor de resetTrata-se do primeiro endereo da memria de programa que ser executado aps um Start-up ou Reset. Neste modelo, o Vetor de Reset encontra-se no endereo 0x0000.

Vetor de interrupoEste PIC possui 15 tipos de interrupes diferentes. Entretanto, quando qualquer uma delas acontece (se todas as condies necessrias forem favorveis), o programa ser desviado para um ponto especfico, que denominado Vetor de Interrupo. Como na maioria dos Microcontroladores PIC, para o modelo 16F877A este vetor encontra-se na posio 0x0004.

Tamanho da memria e pginasEste PIC possui uma memria de 8kwords, isto , 8.192 endereos diferentes. Quando falamos da memria de programa sempre nos referimos ao termo WORD e nunca a BYTE, isso porque esta memria de 14 bits, enquanto um byte possui somente 8 bits.

Conectando o PIC 16F877A - Recursos Avanados

25No entanto, o tamanho desta memria gera um grande problema de gerenciamento. Relembremos o funcionamento do processador. Cada instruo carregada atravs do endereo armazenado no PC (program counter), correto? Assim sendo, para podermos acessar os 8.192 endereos diferentes, necessitaremos de um PC com 13 bits. Isso resolvido por meio do desmembramento do PC em dois registradores (FSRs): PCL e PCLATH. At ai tudo bem. Mas vamos checar outros casos que interferem no gerenciamento da memria de programa, como quando utilizamos as instrues CALL e GOTO. Essas instrues vinculam ao seu Opcode (cdigo de mquina) de 14 bits e o endereo para onde o programa deve ser desviado. Vejamos esses Opcodes mais detalhadamente: Instruo CALL GOTO Opcode 100 kkk kkkk kkkk 101 kkk kkkk kkkk Observaes kkk kkkk kkkk equivale ao endereo de destino

Conhecendo os detalhes dos Opcodes (todos os Opcodes podem ser encontrados no apndice B) percebemos que s existem 11 bits para o endereo de destino da instruo. Ora, mas com 11 bits s conseguimos gerenciar 2 K de memria. Ento como que podemos usar essas instrues com toda a memria de programa? Para resolver esse problema foi criado o conceito de paginao. A memria total foi ento dividida em vrias pginas (no nosso caso 4) de 2 K cada uma. Dentro de cada pgina as instrues CALL e GOTO funcionam perfeitamente, pois possuem capacidade de gerenciamento para esse tamanho. O problema ento passou a existir somente quando quisermos utilizar essas instrues com um endereo de destino localizado em outra pgina. A soluo para isso configurarmos manualmente os 2 bits faltantes localizado nas posies 3 e 4 do PCLATH. Estes bits passam, ento, a operar como chaves seletoras da pgina de programa ativa no momento.

Para podermos ento utilizar as instrues CALL e GOTO entre pginas, devemos primeiro selecionar a pgina correta do endereo de destino atravs dos bits PCLATH. O diagrama anterior demonstrou essa seleo. Uma dica interessante que a diretriz do compilador denominada PAGESEL pode ser utilizada para selecionar facilmente a pgina correta para um destino qualquer. Consulte o apndice C para obter mais informaes.

Conectando o PIC 16F877A - Recursos Avanados

26Pilha (Stack)A pilha um local, fisicamente separado da memria de programa, onde sero armazenados os endereos de retorno quando utilizarmos instrues de desvio para rotinas de chamada. Quando o programa desviado para o comeo de uma rotina atravs da instruo correta (CALL ou interrupo), o endereo seguinte ao ponto que estava sendo executado armazenado na pilha para que, ao fim da rotina, o programa possa retornar novamente ao ponto em que estava. Esse PIC possui uma pilha de oito nveis, isto , possvel o armazenamento de oito endereos de retorno, possibilitando oito desvios consecutivos. Caso se tente chamar um nmero de rotinas maior que o tamanho da pilha, o endereo de retorno mais antigo ser perdido. Outra caracterstica que devemos saber sobre a pilha o seu tamanho em bits. Esse tamanho representa a quantidade de endereos que o sistema de retorno automtico poder gerenciar. No nosso caso, a pilha armazena endereos de 13 bits, o que suficiente para o gerenciamento de at 8 K de memria de programa. Como nosso PIC possui exatamente 8 K, os retornos atravs da pilha no apresentam problemas com a paginao da memria de programa.

Mapa da memria de programa

A memria de dados voltil (RAM)A memria de dados tambm conhecida como RAM e serve para guardar as variveis e os registradores utilizados pelo programa. Esta memria armazena dados de 8 bits e voltil, ou seja, quando o PIC desenergizado, ela automaticamente perdida. Podemos dividi-la em dois grupos que sero estudados a seguir: Registradores especiais e Registradores de uso geral. Conectando o PIC 16F877A - Recursos Avanados

27Registradoras especiaisNesta regio da memria encontram-se todos os registradoras especiais, denominados SFRs (Special Functions Registers) e que so utilizados pelo microcontrolador para a execuo do programa e processamentos da ULA. Esses registradores podem ser escritos e lidos tanto pelo usurio quanto pelo hardware e servem tambm para a configurao de muitas funes e para a utilizao de todos os perifricos. O mapa da memria apresentar a posio de todos os registradores especiais e seus devidos nomes. Para um melhor detalhamento de suas propriedades e funes especficas, o apndice A deve ser consultado.

Registradores de uso geralTrata-se de uma rea destinada ao armazenamento de variveis definidas pelo usurio para serem escritas e lidas pelo programa. O PIC 16F877A possui 368 bytes disponveis para uso geral.

Tamanho da memria e bancosA arquitetura do nosso PIC est preparada para operar com uma RAM de at 512 bytes. Entretanto, verificaremos que nem toda memria est disponvel ao usurio. So 368 bytes para uso geral, 77 bytes para registradores especiais (sendo alguns espelhados) e 19 indisponveis. Os 48 endereos restantes (no fisicamente implementados) equivalem a posies espelhadas de 16 endereos vlidos (Banco 0). Entenda por termo espelhado como um registrador nico que pode ser acessado por mais de um endereo. Isso pode ser facilmente visualizado atravs do mapa da memria de dados, onde vemos um mesmo SFR aparecendo em diversos bancos (os bancos sero explicados em seguida). Esse espelhamento tambm acontece com a regio inferior da memria de uso geral, para facilitar a vida do programador em relao a variveis que so constantemente usadas, sem a necessidade de troca de banco. Quanto aos endereos indisponveis, tratam-se de posies no implementadas pela Microchip e que, no caso de uma leitura, retornaro somente zeros (0). Muito bem, ao detalharmos o tamanho da memria de dados surgimos com o termo Banco. Mas, afinal, o que isso significa? O mesmo tipo de problema de gerenciamento de endereos que enfrentamos ao trabalharmos com a memria de programas, surge novamente para a memria de dados. Vejamos os Opcodes de algumas instrues que trabalham com a RAM:Instruo MOVF MOVWF

Opcode 00 1000 dfff ffff 00 0000 1fff ffff

Observaesd= destino fffffff= endereo da RAM

Fica fcil percebermos que s existem 7 bits para endereamento de todos os registradores. Acontece que, com este nmero de bits, s podemos gerenciar 128 endereos diferentes. Por isso, a Microchip dividiu a memria de dados em grupos de 128 bytes, aos quais deu o nome de Banco. diferenciando assim da nomenclatura utilizada para a memria de programa (Pgina). No caso do nosso PIC, a memria de dados composta por quatro bancos. De maneira anloga ao sistema utilizado na memria de programa, aqui tambm os demais bits (2) necessrios para o

Conectando o PIC 16F877A - Recursos Avanados

28complemento do gerenciamento so utilizados como chaves seletoras para o banco atual e encontram--se no registrador STATUS. Devido a essa estruturao, antes de utilizarmos qualquer comando que trabalhe com os registradores (RAM) devemos comutar para o banco onde o mesmo se encontre. Como j foi comentado, registradores de uso muito comum podem ser armazenados nos endereos de 070h a 07Fh, para que possam ser acessados diretamente em qualquer um dos quatro bancos disponveis (vide mapa da memria).

Para a seleo do banco de memria existe tambm uma diretriz do compilador que pode ser pesquisada no apndice C: BANKSEL. J que estamos falando dos bancos de memria, existe um outro caso onde a seleo do banco feita de maneira diferente. Trata-se do acesso indireto atravs dos registradores FSR e INDF. Acontece que, quando acessamos a memria desta forma, o endereo do registrador desejado ser colocado em FSR, que possui 8 bits. Por isso, s falta 1 bit para complementarmos o gerenciamento. Neste caso, ento, a chave seletora de banco ser o bit STATUS.

Conectando o PIC 16F877A - Recursos Avanados

29

Mapa da memria de dados

Memrias no-volteis (E2PROM e FLASH)A memria no-voltil at poderia ser tratada diretamente dentro do tpico anterior, no qual falvamos da memria de dados. Entretanto, para o PIC 16F877A, o acesso a essa memria mais poderoso. Em alguns modelos de PIC, quando falamos dos recursos internos para manipulao desta

Conectando o PIC 16F877A - Recursos Avanados

30memria, nos referimos somente a um bloco de bytes disponveis para o usurio como urna memria de dados no-voltil, conhecida como EPROM. Esse PIC possui este bloco e seu acesso feito como nos demais modelos. O que ele tem a mais ento? que o mesmo sistema de manipulao da EPROM tambm pode ser utilizado para escrever e ler na memria de programa (FLASH). Com esse poderoso recurso, podemos utilizar a memria de programa como uma expanso da EPROM, com uma outra vantagem: a memria de programa de 14 bits, enquanto a memria de dados de 8 bits. Outro benefcio desse sistema que podemos escrever na memria de programa tambm, possibilitando alterarmos o prprio software de controle. Isso possibilita tcnicas e recursos extremamente avanados. Mas cuidado! Este benefcio tambm pode ser uma arma letal, pois podemos alterar o programa erroneamente, travando o sistema permanentemente. A nica diferena para acessarmos uma memria ou a outra o bit de seleo denominado EECON1< EEPGD> As tcnicas e os exemplos para acessarmos estas memrias sero vistas no captulo 10. No momento, basta conhecermos as caractersticas de ambas:

Caractersticas Tipo Tamanho Acesso

Dados 8 bits 256 bytes EEPGD=0

Programa 14 bits 8 K (menos o programa) EEPGD=1

As interrupesEste PIC possui um total de 15 interrupes diferentes, Entretanto, como nos demais modelos, todas geraro o desvio do programa para o mesmo vetor de interrupo (0004h), desde que devidamente configuradas para isso. Essas interrupes podem ser divididas em dois grupos: as convencionais (as mesmas existentes em modelos menores, como o 16F84), e as de perifricos, que esto diretamente relacionadas aos demais perifricos existentes neste modelo. As trs interrupes descritas a seguir so as convencionais, enquanto as demais so as de perifricos.

Interrupo de Timer 0Esta interrupo acontece sempre que o contador TMR0(Timer 0) estoura, ou seja, como ele um contador de 8 bits, sempre que ele passar de 0xFF para 0x00. Esta interrupo utilizada normalmente para a contagem de tempo. Como ela pode acontecer a qualquer momento, a contagem de tempo fica precisa, no dependendo de anlises constantes durante o programa para garantir que o tempo seja contado. Os Timers sero estudados no captulo 4.

Interrupo externaEsta interrupo gerada por um sinal externo ligado ao pino RB0, caso ele esteja configurado como entrada. Desta maneira, podemos identificar e processar imediatamente um sinal externo. Ela utilizada para diversas finalidades, corno por exemplo, para a comunicao entre micros, garantindo o sincronismo, para o reconhecimento de boto ou outro sinal cio sistema que necessite de uma ao imediata.

Conectando o PIC 16F877A - Recursos Avanados

31Esta interrupo pode ser configurada para a borda de subida ou para a borda de descida.

Interrupo por mudana de estadoAo contrrio da interrupo externa, a interrupo por mudana de estado acontece em ambas as bordas (subida e descida). Na verdade, esta interrupo sensvel a diferena de nvel existente entre o pino e o latch interno. Esta interrupo est relacionada s portas RB4, RB5, RB6 e RB7, simultaneamente. Por isso, se estas portas forem configuradas como entradas, a mudana de estado em qualquer uma delas ir gerar a interrupo. Como o latch s atualizado quando a porta lida, a leitura obrigatria para que o evento da interrupo pare de ocorrer. Esse tipo de interrupo pode ser utilizado, por exemplo, para criar um sincronismo com a rede de 60 Hz, para o controle de um triac ou outro sistema semelhante.

Interrupo da porta paralela (PSP)Esta interrupo est diretamente ligada a porta paralela do tipo escravo (PSP Parallel Slave Port) e acontece sempre que uma operao de escrita ou leitura desta porta completada. O estudo completo deste recurso ser realizado no captulo 13.

Interrupo dos conversores A/DEsta interrupo acontece quanto uma converso A/D (Analgica/Digital) completada. O estudo completo deste recurso ser realizado no captulo 7.

Interrupo de recepo da USARTEsta interrupo indica o trmino da recepo de um dado pela USART (Universal Synchronous Asynchronous ReceiverTransmitter). O estudo completo deste recurso ser realizado no captulo 12.

Interrupo de transmisso da USARTEsta interrupo indica o esvaziamento do buffer relacionado transmisso de um dado pela USART (Universal Synchronous Asynchronous Receiver Transmitter). O estudo completo deste recurso ser realizado no captulo 12.

Interrupo da comunicao serial (SPI e I2C)O segundo sistema de comunicao serial deste PIC, alm da USART, denominado MSSP (Master Synchronous Serial Port), e possui dois modos de 2 comunicao: SPI e I C. Sempre que um dado transmitido ou recebido por esta porta serial, esta interrupo acontecer. Ela tambm acontecer em muitas outras situaes, que sero estudadas no captulo 11.

Interrupo do CCP1 (Capture/Compare/PWM)Esta interrupo est vinculada ao primeiro sistema CCP, que engloba os seguintes recursos: Capturei, Compare! e PWM1. O estudo completo deste recurso ser realizado no captulo 9.

Conectando o PIC 16F877A - Recursos Avanados

32Interrupo do Timer 2Esta interrupo acontecer sempre que o Timer 2 (TMR2) acrescido do seu Postscaler estourar. Este um contador de 8 bits que possu um Prescaler para incrementar o registrador e um Postscaler para gerar a interrupo. Os Timers sero estudados no captulo 4.

Interrupo do Timer 1Esta interrupo acontecer sempre que o Timer 1 (TMR1) estourar. Este um contador de 16 bits. Os Timers sero estudados no captulo 4.

Interrupo de Um de escrita na E2PROM/FLASHComo j foi visto anteriormente, alguns PICs possuem uma memria EPROM interna. Esta interrupo serve para detectarmos o final de uma rotina de escrita nesta memria. A utilizao da interrupo no obrigatria para que a escrita funcione, mas, 2 como a E PROM lenta na hora de escrever, em alguns sistemas sua utilizao pode ser necessria para evitar que o programa pare durante a escrita na EPROM. A interrupo tambm vlida para a memria FLASH (programa).

Interrupo de coliso de dados (Bus Collision)Esta interrupo serve para Informar o sistema sobre colises de dados na 2 comunicao I C. O estudo completo deste recurso ser realizado no captulo 11.

Interrupo do CCP2 (Capture/Compare/PWM)Esta interrupo est vinculada ao segundo sistema CCP, que engloba os seguintes recursos: Capture2, Compare2 e PWM2. O estudo completo deste recurso ser realizado no captulo 9.

Interrupo dos comparadoresEsta interrupo est diretamente ligada a mudar de estado dos comparadores internos do PIC. Este recurso no ser estudado em detalhes no decorrer deste livro.

Operando com as interrupesO primeiro conceito que devemos entender para o uso das Interrupes que, para elas realmente acontecerem, isto , paralisarem o programa e desviarem para o vetor de interrupo, algumas questes devem ser verificadas: 1. 2. 3. Uma ao (ou evento) relacionada interrupo deve acontecer. Quando a ao acontece, o flag da interrupo marcado. Caso as chaves de habilitao da interrupo (geral e individual) estejam ligadas, o sistema ser paralisado e desviado para o vetor de interrupo.

Conectando o PIC 16F877A - Recursos Avanados

33A ao propriamente dita exatamente o que queremos monitorar. Mas e as chaves de acesso? Tratam-se de bits especficos que servem como chaves ON/OFF para ligar e desligar as interrupes, individualmente ou em grupo. O prximo diagrama ilustra todas as chaves e flags relacionados s interrupes.

Chaves GIE PEIE T0IE INTE RBIE PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE

SRF INTCON INTCON INTCON INTCON INTCON PIE1 PIE1 PIE1 PIE1 PIE1 PIE1 PIE1

Bits 7 6 5 4 3 7 6 5 4 3 2 1 Chaves T0IF INTF RBIF PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF SRF INTCON INTCON INTCON PIR1 PIR1 PIR1 PIR1 PIR1 PIR1 PIR1 Bits 2 1 0 7 6 5 4 3 2 1

Conectando o PIC 16F877A - Recursos Avanados

34Chaves TMR1IE EEIE BCLIE CCP2IE Flags TMR1IF EEIF BCLIF CCP2IF SRF PIE1 PIE2 PIE3 PIE4 SRF PIR1 PIR2 PIR3 PIR4 Bits 0 4 3 0 Bits 0 4 3 0

Agora que todas as chaves e flags foram demonstradas, o fluxograma seguinte ajuda a entender a lgica de tratamento de uma interrupo. Atente-se para os seguintes pontos: 1. Como a chave GIE desligada antes de desviar para o vetor de interrupo, duas interrupes no sero tratadas ao mesmo tempo, isto , uma interrupo no gerar um desvio caso outra interrupo j esteja sendo tratada. Entretanto, o flag da segunda interrupo ser marcado, e quando o tratamento da primeira terminar, o GIE ser novamente ligado (atravs da instruo RETFIE) e o sistema voltar a ser desviado para o vetor de interrupo (devido ao flag). Como todas as interrupes desviam para o mesmo ponto, necessrio testar os flags de todas as interrupes ligadas para saber qual realmente ocorreu. Como mais de uma ao vinculada s interrupes podem acontecer ao mesmo tempo, a ordem dos testes que determina a prioridade de tratamento.

2.

3.

Os flags das interrupes no so limpos automaticamente pelo sistema (exceto ADIF, TXIF e RCIF). Cabe ao usurio efetuar esta operao na rotina de tratamento da interrupo.

Conectando o PIC 16F877A - Recursos Avanados

35Demais recursos e perifricosTodos os demais recursos e perifricos que esto disponveis no PIC 16F877A sero detalhados e estudados no decorrer dos captulos (de 4 a 13). A tabela seguinte relaciona todos os itens a serem estudados e os respectivos captulos onde os mesmos aparecem detalhadamente. Recursos Internos do PIC Captulos Assunto Portas Porta Paralela (PSP) E2PROM (dados) FLASH (programa) Timer 0 Timer 1 Timer 2 CCP (Capture/Compare/PWM) MSSP (SPI e I C) USART Conversor A/D Interrupo de Timer 0 Interrupo de Timer 1 Interrupo de Timer 2 Interrupo Externa (RB0) Interrupo de mudana de estado (RB4...7) Interrupo da porta paralela (PSP) Interrupo dos conversores A/D Interrupo de recepo da USART Interrupo de transmisso da USARTInterrupo da comunicao MSSP (SPI e I2C)2

4

5

6

7

8

9

10

11

12

13

Interrupo de CCP1 Interrupo de CCP2Interrupo de fim de escrita na E2PROM/FLASH Interrupo de coliso de dados (Bus Collision)

Osciladores Sistemas de Resets (POR, PWRT e BOR) Watchdog Timer (WDT) SLEEP Code Protection Gravao In-circuit

Conectando o PIC 16F877A - Recursos Avanados

36Outros Recursos Estudados Captulos Assunto 4 Varredura de display de 7 segmentos (4 dgitos) Operao com LCD padro Comunicao com memria E PROM externa Simulao de A/D por meio de RC Acionamento de Buzzer Entrada e sada no mesmo pino (Botes e Leds) Acionamento de motor DC (Ventilador) 2

5

6

7

8

9

10

11

12

13

Caractersticas eltricasTemperatura de trabalho.......................................................................... Temperatura de armazenamento............................................................... Tenso de trabalho............................................................................................ Tenso mxima no pino VDD (em relao ao Vss}...................................... Tenso mxima no pino MCRL (em relao ao Vss).......................................... Tenso mxima no pino RA4 (em relao ao Vss)............................................. Tenso mxima nos demais pinos (em relao ao Vss)................. -55Cat+125C -65'Cat 150C 4.0Va5.5V -0.3Vat 7.5V 0at 14V 0at 8.5V

-0.3Vat (VDD + 0.3V) 1.0W 300mA 250mA 25rnA 25mA 200mA 200mA 200mA 200mA

Dissipao mxima de energia................................................................................. Corrente mxima de sada no pino Vss.................................................................. Corrente mxima de entrada no pino VDD.............................................................. Corrente mxima de entrada de um pino (quando em Vss)...................................... Corrente mxima de sada de um pino (quando em VDD)........................................ Corrente mxima de entrada do PORTA, PORTB e PORTE combinados............. Corrente mxima de sada do PORTA, PORTB e PORTE combinados................ Corrente mxima de entrada do PORTC e PORTD combinados ........................... Corrente mxima de sada do PORTC e PORTD combinados..............................

Conectando o PIC 16F877A - Recursos Avanados

37Anotaes

__________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________Conectando o PIC 16F877A - Recursos Avanados

38

Conectando o PIC

3Resumo do Set de InstruesOs termos utilizadosPara facilitar o aprendizado do set de instrues do PIC conveniente entendermos corretamente os termos utilizados na construo dos nomes das instrues e seus argumentos. Work: Trata-se de um registrador temporrio para as operaes da ULA. No assembly do PIC ele conhecido como W. Tambm comum cham-lo de acumulador. File: Referncia a um registrador (posio de memria) propriamente dito. Utilizaremos a letra F para sua representao nos nomes de instrues e f nos argumentos das mesmas. Literal: Um nmero qualquer, que pode ser escrito na forma decimal, hexadecimal ou binrio. Utilizaremos a letra L para sua representao nos nomes de instrues e k nos argumentos das mesmas. Destino: O local onde deve ser armazenado o resultado da operao. Existem somente dois destinos possveis: f, que guardar o resultado no prprio registrador passado como argumento ou w, que colocar o resultado em Work. Na verdade, na sintaxe das instrues o destino deve ser expressado pelos nmeros 0 ( w ) e 1 ( f ). No entanto, como veremos mais adiante, as letras f e w so definidas no include para facilitar a programao. Bit: Refere-se a um bit especifico dentro de um byte. Utilizaremos a leira B para sua representao nos nomes das instrues e b nos argumentos das mesmas.

Teste: Quando queremos testar o estado de um bit, para descobrirmos se ele zero ou um, Utilizaremos a letra T para represent-lo nos nomes das instrues, Skip: Significa "pulo", e utilizado para criar desvios, pulando a prxima linha. Utilizaremos a letra S para represent-lo nos nomes das instrues.

Set: Refere-se ao ato de setar um bit, isto , torn-lo equivalente a UM. Utilizaremos a letra S para represent-lo nos nomes das instrues. Clear: Refere-se ao clear de um bit, isto , torn-lo equivalente a ZERO. Utilizaremos a letra C para represent-lo nos nomes das instrues.

Zero: Algumas instrues podem gerar desvios se o resultado da operao efetuada for zero. Neste caso utilizaremos a letra Z para indicar tal condio,

Conectando o PIC 16F877A - Recursos Avanados

39

ADD: Somatria. AND: Lgica "E", CLR: Limpar, zerar (Clear). COM: Complemento. DEC: Decremento de uma unidade. INC: Incremento de uma unidade. IOR: Lgica "OU". MOV: Mover, transferir para algum lugar. RL: Rotacionar 1 bit para a esquerda (rotation left). RR: Rotacionar 1 bit para a direita (rotation right). SUB: Subtrao. SWAP: Inverso entre as partes alta e baixa de um registrador. XOR: Lgica "OU exclusivo".

A construo dos nomes das instruesCom base nos termos demonstrados, ser muito mais fcil entender o significado de urna instruo por intermdio do seu nome, pois ele composto pela juno destes termos. Por exemplo, digamos que voc deseja decrementar o valor de um determinado registrador. A instruo que far isso composta pelos termos referentes ao que voc quer fazer: Decrementar (DEC) um registrador (F) = DECF Agora vamos fazer a anlise ao contrrio, isto , partindo do nome de urna instruo, vamos descobrir para que ela serve: DECFSZ = Decrementa (DEC) o registrador (F) e pula (S) se o resultado for zero (Z)

O resumo das instruesO Set de instruo do PIC 16F877A exatamente o mesmo para todos os modelos de 14 bits, e composto de 35 instrues divididas em quatro grupos: operaes com registradores, operaes com literais, operaes com bits e controles,

Operaes com Registradores Instruo ADDWF ANDWF CRLF CLRW Argumentos f,d f,d f Descrio Soma W e f, guardando o resultado em d. Lgica E entre W e f, guardando o resultado em d. Limpa f. Limpa W.

Conectando o PIC 16F877A - Recursos Avanados

40Operaes com Registradores Instruo COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF RLF RRF SUBWF SWAPF XORWF Argumentos f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d Descrio Calcula o complemento de f, guardando o resultado em d. Decrementa f, guardando o resultado em d. Decrementa f, guardando o resultado em d, e pula a prxima linha se o resultado for zero. Incrementa f, guardando o resultado em d. Incrementa f, guardando o resultado em d, e pula a prxima linha se o resultado for zero. Lgica OU entre W e f, guardando o resultado em d. Move f par d. Move W para f. Rotaciona f 1 bit para esquerda, guardando o resultado em d. Rotaciona f 1 bit para direita, guardando o resultado em d. Subtrai W de f (f-W), guardando o resultado em d. Executa uma inverso em as partes alta e baixa de f,guardando o resultado em d. Lgica OU exclusivo entre W e f, guardando o resultado em d.

Operaes com literais Instruo ADDLW ANDLW IORLW MOVLW SUBLW XORLW Argumentos K K K K K K Descrio Soma k com W, guardando o resultado em W. Lgica E entre k e W, guardando o resultado em W. Lgica OU entre em k e W, guardando o resultado em W. Move k para W. Subtrai W de k (k-W), guardando o resultado em W. Lgica OU exclusivo entre k e W, guardando o resultado em W

Conectando o PIC 16F877A - Recursos Avanados

41

Operaes com Bits Instruo BCF BSF BTFSC BTFSS Argumentos f,b f,b f,b f,b Descrio Impe 0 (zero) no bit do registrador f. Impe 1 (um) no bit do registrador f. Testa o bit do registrador f, e pula a prxima linha se ele for 0 (zero). Testa o bit do registrador f, e pula a prxima linha se ele for 01(um).

Controles Instruo NOP CALL CLRWDT GOTO RETFIE RETLW RETURN SLEEP Argumentos R R K Descrio Gasta um ciclo de mquina sem fazer absolutamente nada. Executa a rotina R. Limpa o registrador WDT para no acontecer o reset Desvia para o ponto R, mudando o PC. Retorna de uma interrupo. Retorna de uma rotina, com k em W. Retorna de uma rotina, sem afetar W. Coloca o PIC em modo sleep (dormindo )para economia de energia.

Conectando o PIC 16F877A - Recursos Avanados

42

Conectando o PIC

4 4As Primeiras Exploraes (l/Os e Timers)IntroduoO objetivo deste captulo pegarmos um pouco mais de intimidade com o PIC 16F877A. Quem aprendeu o assembly da Microchip com um PIC menor, provavelmente um de 18 pinos (16F84 ou "16F628, por exemplo), j deve ter percebido que, apesar da diferena de tamanho e quantidade de recursos, o set de instrues de todos esses modelos exatamente o mesmo. Assim sendo, todo o seu conhecimento adquirido com a programao de outros PICs ser de grande valia neste treinamento. Mas, por enquanto, vamos comear com o bsico. E nada mais bsico do que os l/Os do microcontrolador. Mas convenhamos que. apesar do 16F877A possuir 33 l/Os, um captulo inteiro dedicado a estes muita coisa. Para aproveitarmos melhor este estudo, vamos aprender tambm como maximizar estes l/Os, utilizando um mesmo pino hora como entrada, hora como sada. Vamos aproveitar tambm a oportunidade para nos aprofundarmos nos 3 Timers existentes neste modelo.

Teoria e recursos do PICO capitulo ser dividido em trs tpicos principais: l/Os e Timers. Cada um desses assuntos merece consideraes particulares, tanto na parte terica quanto na parte prtica, j que utilizaremos o mesmo exemplo para demonstrarmos os dois.

Estudo das PORTASA primeira coisa que devemos saber sobre os l/Os de um microcontrolador que eles so agrupados por PORTs. Este agrupamento se d geralmente por caractersticas eltricas particulares e rara facilitar o gerenciamento da mquina. Por exemplo, como toda a memria de dados interna de B bits. os SFRs tambm so. Corno existem SFRs especficos para controlar os l/Os, melhor agrup-los em conjuntos de oito. Desta forma, o 16F877A possui seus l/Os divididos da seguinte forma:

1 PORT de 6 l/Os (PORTA); 3 PORTs de 8 l/Os (PORTB, PORTC e PORTD); 1 PORT de 3 l/Os (PORTE).

Conectando o PIC 16F877A - Recursos Avanados

43Ao total temos ento 33 l/Os que podem ser configurados como entrada ou sada pelo programador, conforme as necessidades do projeto. Outras caractersticas importantes que devemos saber sobre essas portas dizem respeito sua operao eltrica. Internamente esses pinos so ligados de formas diferentes, principalmente pela sobrecarga de recursos aplicados a cada um deles. Vamos conhecer melhor cada uma delas.

PORTAAnalisando os diagramas de blocos das ligaes internas conheceremos melhor cada uma das caractersticas importantes:

O primeiro ponto a ser observado que algumas portas so do tipo TTL e outras so do tipo Schmitt Trigger. Este dado muito relevante quando estamos operando com uma porta como entrada, porque interfere diretamente nos nveis de tenso interpretados pelo PIC como O (zero) e 1 (um). Vejamos como isso acontece.

Conectando o PIC 16F877A - Recursos Avanados

44Repare, ento, que nas entradas ST necessitamos de um nvel de tenso bem mais elevado para que o PIC interprete a mudana de estado. Isso muito til para enquadrarmos uma senide, por exemplo. Por outro lado, isso ruim quando possumos um hardware que gera nveis de tenso menores, como pode acontecer quando sobrecarregamos o mesmo pino com diversas funes. Essa explicao sobre TTL e ST aplicvel a todas as portas. Outra caracterstica comum a todos os l/Os quanto as diferenas existentes entre escrita e leitura dos mesmos, Repare que a leitura feita diretamente sobre o pino, enquanto a escrita passa por um Lacth. Isso pode ocasionar um atraso entre o comando de escrita e a efetiva alterao da sada. por esse motivo que no recomendvel efetuar uma operao de leitura imediatamente aps a alterao uma sada. O certo aguardarmos pelo menos um ciclo de mquina entre essas duas operaes. Este Lach possibilita tambm que uma operao de escrita seja executada mesmo que o pino esteja configurado como entrada, atravs do TRIS. O Lacth alterado e, quando o estado do pino for modificado para sada, o valor atual do Lacth lhe ser imposto. Lembre-se de que a configurao das entradas e sadas deste port feita atravs do registrador TRISA, enquanto as operaes de escrita e leitura so executadas pelo registrador PORTA. Para os pinos de RA0 a RA3 e o RA5, o diagrama mostra tambm uma ligao para o conversor analgico/digital (A/D). "Analog Input Mode" representa a seleo entre modo digital ou analgico para esses pinos. Um captulo ser completamente dedicado ao sistema de converso, mas a seleo entre as portas digitais ou analgicas realizada pelo registrador ADCON1, Em contrapartida, o pino RA4 no possui circuito analgico, mas ligado internamente ao sistema de incremento do Timer 0 (TMR0). Isso possibilita que um clock imposto a esse pino incremente automaticamente o TMRO, independentemente do clock real da mquina. O registrador onde se encontra a configurao para incremento do TMR0 o OPTION_REG. Outra caracterstica eltrica que :ode ser observada no diagrama que este pino no possui o FET do tipo P capaz de impor VDD sada. Por isso, essa sada denominada open drain. Isso significa que o PIC no capaz de liberar V s (5V) em RA4, Caso isso seja necessrio, um resistor de pull-up externo deve ser providenciado.

Resumo dos registradores associados ao PORTAEndereo 05h 85h 9Fh 81h/181h Nome PORTA TRISA ADCON1 OPTION_REG Bit 7 ADFM /RBPU Bit 6 INTEDG Bit 5 RA5 TOCS Bit 4 RA4 TOSE Bit 3 RA3 PCFG3 PSA Bit 2 RA2 PCFG2 PS2 Bit 1 RA1 PCFG1 PS1 Bit 0 RA0 PCFG0 PS0

Configuraao como Entrada (I) ou Sada (0)

No usado para essa finalidade. Para obter mais informaes, consulte apndice A

PORTBO PORTB possui 8 l/Os, estando 5 deles associados tambm s interrupes: externa e mudana de estado. Na prxima figura podemos observar os diagramas deste PORT. Uma caracterstica eltrica bem interessante para todos os pinos do PORTB a ligao do pull-up interno. Esta ligao para VDD pode ser ligada ou no (em todos os pinos ao mesmo tempo) atravs da chave /RBPU localizada em OPTION_REG. Alm da ativao desta chave, o pino deve ser configurado como entrada para poder ter seu pullup ativado. A resistncia interna para VDD de aproximadamente 12,5k, para uma corrente mxima de 400A. Na verdade, o pull-up feito por intermdio de um FET e no de um resistor, e sua corrente tpica de 250A, o que aumenta a resistividade.

Conectando o PIC 16F877A - Recursos Avanados

45

Todo o PORTB do tipo TTL, exceto o pino RB0 quando configurado para utilizar a interrupo externa e os pinos RB3, RB6 e RB7 quando em modo de programao serial. Neste caso, estes pinos tornam-se ST. Os pinos de RB4 a RB7 so interligados interrupo de mudana de estado e o pino RB0 associado interrupo externa, desde que configurados como entrada. As chaves e flags dessas interrupes encontram-se em INTCON. A configurao da borda que gera a interrupo externa (RB0) feita em OPTION_REG.

Resumo dos registradores associados ao PORTBEndereo 06h/106h 86h/186h 0Bh... 81h/181h Nome PORTB TRISB INTCON OPTION_REG Bit 7 RB 7 GIE /RBPU Bit 6 RB 6 Bit 5 RB5 Bit 4 RB4 Bit 3 RB3 Bit 2 RB2 Bit 1 RB1 INTF PS1 Bit 0 RB0 RBIF PS0

Configuraao como Entrada (I) ou Sada (0) PEIE T0IE INTE RBIE T0IF INTEDG TOCS TOSE PSA PS2

No usado para essa finalidade. Para obter mais informaes, consulte apndice A

PORTCNeste PORT, alm dos 8 l/Os digitais, existe uma srie de perifricos ligados aos seus pinos. Cada um desses perifricos ser estudado em um captulo especfico. No momento, vejamos uma simplificao das suas ligaes internas atravs dos prximos diagramas.

Resumo dos registradores associados ao PORTCEndereo 07h 87h Nome PORTC TRISC Bit 7 RC7 Bit 6 RC6 Bit 5 RC5 Bit 4 RC4 Bit 3 RC3 Bit 2 RC2 Bit 1 RC1 Bit 0 RC0

Configuraao como Entrada (I) ou Sada (0)

No usado para essa finalidade. Para obter mais informaes, consulte apndice A

Conectando o PIC 16F877A - Recursos Avanados

46

PORTDO PORTD um dos mais simples de todos, pois seus oito pinos so l/Os digitais. Alm disso, estes pinos s so ligados ao sistema de porta paralela (Parallel Slave Port) que ser estudado no captulo 13. Observe que, de acordo com o diagrama ao lado, todos os pinos do PORTD so do tipo ST quando configurados para entrada. Entretanto, para o sistema de porta paralela, esses pinos operam em modo TTL. A chave de seleo do sistema de porta paralela encontra-se em TRISE

Resumo dos registradoras associados ao PORTD.Endereo 08h 88h 89h Nome PORTD TRISD TRISE IBF Bit 7 RD7 Bit 6 RD6 Bit 5 RD5 Bit 4 RD4 Bit 3 RD3 Bit 2 RD2 Bit 1 RD1 Bit 0 RD0

Configurao como Entrada (I) ou Sada (0) OBF IBOV PSPMODE Configurao I/Os

No usado para essa finalidade. Para obter mais informaes, consulte pndice A

Conectando o PIC 16F877A - Recursos Avanados

47PORTEEste PORT o menor de todos, possuindo somente trs pinos. Observe que, de acordo com o diagrama ao lado, todos os pinos do PORTE so do tipo ST quando configurados para entrada. Entretanto, para o sistema de porta paralela (/RD, /RW e /CS), estes pinos operam em modo TTL. A chave de seleo do sistema de porta paralela encontra-se em TRISE. Apesar do diagrama simplificado no apresentar, estes trs pinos tambm operam como entradas analgicas, ligadas ao conversor interno.

Resumo dos registradoras associados ao PORTEEndereo 09h 89h 9Fh Nome PORTE TRISE ADCON 1 Bit 7 IOF AMF Bit 6 OBF Bit 5 IBOV Bit 4 PSPMODE Bit 3 PCFG3 Bit 2 RE2 Bit 1 RE1 Bit 0 RE0

Configurao dos I/Os PCFG2 PCFG1 PCFG0

No usado para essa finalidade. Para obter mais informaes, consulte pndice A

Estudo dos TimersVamos aprender agora sobre os recursos dos trs timers disponveis no PIC 16F877A e como utiliz-los. Cada um desses contadores internos possui caractersticas prprias, como o limite de contagem, o tipo de incremento, os pr e postscales, a gerao de interrupes, perifricos associados, etc. Vamos, ento, explor-los individualmente:

Timer0Tambm conhecido como TMR0, um contador de 8 bits, cujo valor atual encontra-se disponvel no registrador TMR0. Este registrador pode ser tanto lido quanto escrito, possibilitando a inicializao do contador. Outra caracterstica interessante do TMR0 que apesar dele ser somente incrementai, seus incrementos podem ocorrer de duas maneiras distintas, atravs da chave OPTION_REG: T0CS = 1: Incremento a cada transio no pino RA4 / T0CKI. T0CS = 0: Incremento a cada ciclo de mquina. Quando selecionado o incremento pelo pino TOCKI, isto , um pulso ou clock externo, possvel ainda selecionar se o incremento acontecer na borda de subida ou na borda de descida do sinal de entrada, atravs de OPTION_REG: Conectando o PIC 16F877A - Recursos Avanados

48T0SE = 1: Incremento na borda de descida; T0SE = 0: Incremento na borda de subida. Entretanto, para incremento externo ou interno, ser aplicado um prescaler (PS) antes do registrador TMR0 ser realmente alterado. Desta forma, caso o prescaler esteja configurado em 1