You are on page 1of 24

Coleo TUTPRO Tutoriais sobre programao de microcontroladores

Solbet Ltda
Expandindo a percepo humana

Neste volume: Consideraes bsicas sobre o PIC16F877

verso 1.0 Campinas 10/11/2007

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

Sumrio
Recursos necessrios para execuo deste tutorial...............................................................................3 Introduo.............................................................................................................................................3 A estrutura desta srie de tutoriais...................................................................................................4 O que um microcontrolador...............................................................................................................4 A Arquitetura do microcontrolador PIC16F877A...........................................................................6 Como se programa um microcontrolador ............................................................................................8 As origens do PIC16F877A .................................................................................................................9 Compreendendo a arquitetura do PIC16F877A ................................................................................10 A estrutura interna do PIC16F877A .............................................................................................12 A descrio dos terminais do PIC16F877A ..................................................................................13 A descrio da estrutura interna do PIC16F877A.........................................................................16 As diferentes reas de memria...............................................................................................16 O controle do fluxo de programa...................................................................................................19 O sistema de interrupts..................................................................................................................20 As configuraes do oscilador......................................................................................................21 O sistema de reset..........................................................................................................................23

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

Recursos necessrios para execuo deste tutorial


Este tutorial cobre somente partes tericas. Voc s precisar de um computador com leitor PDF. Voc pode copiar este material a vontade, desde que mantida a informao da fonte.

Introduo

ste conjunto de tutoriais se destina a todos aqueles que desejam se tornar bons projetistas e programadores com os microcontroladores, especialmente os microcontroladores de 14 bits da Microchip, com nfase no PIC16F877. A escolha deste microcontrolador se deve ao fato dos recursos que ele disponibiliza ao programador abrangem um grande nmero de perifricos, e o conhecimento da programao destes perifricos permite a programao de dezenas de outros chips desta linha. Como pr-requisito para a leitura deste tutorial, voc deve ter conhecimentos bsicos sobre lgica Booleana, da estrutura dos microcontroladores e de seus perifricos em geral, assim como fundamentos de programao em qualquer linguagem. O enfoque eminentemente prtico. Voc estuda a teoria e experimenta na prtica os conceitos trabalhados. Ao final do livro voc ter aprendido a desenvolver um conjunto de projetos que variam desde um simples pisca-pisca a um controlador de servo mecanismos para uso em sistemas robticos. Este volume faz parte de uma srie de tutoriais de programao de microcontroladores, que esto sendo paulatinamente colocados em formato eletrnico e disponibilizados para cpia individual. O material pode ser utilizado livremente por indivduos ou instituies sem fim lucrativo, devendo ser mantida sempre a obra integral, com os crditos do autor. Para facilitar o aprendizado utilizaremos como plataforma alvo a placa Powerboard2 . A Powerboard2 uma placa para experimentao e desenvolvimento com microcontroladores extremamente verstil. Com ela voc pode programar o microcontrolador sem necessidade de um programador avulso, e toda a sua experimentao pode ser realizada sem necessidade de retirar o PIC do soquete. Embora os simuladores sejam uma ferramenta muito adequada no desenvolvimento de programas com o PIC16F877, somente a experimentao real lhe garantir uma capacitao efetiva no desenvolvimento de projetos baseados em microcontroladores. O manual completo da Powerboard2 voc encontra em http://www.solbet.com.br. Para voc implementar os programas exemplo ser necessrio a utilizao de um software assembler, um compilador C e de um carregador. O assembler sugerido o MPLAB, da Microchip, disponvel em http://www.microchip.com. O compilador C que utilizamos o CCS, de baixo custo, que pode ser adquirido em http://www.ccsinfo.com/. E o carregador , o software SbMaster, pode ser obtido gratuitamente em http://www.solbet.com.br. O carregador e o compilador C podem operar em Linux ou Windows, mas o MPLAB opera somente em Windows. Se voc utilizar os diversos mdulos de desenvolvimento j disponveis na Solbet, certamente ir economizar tempo e poder focalizar seu esforo no domnio da programao de microcontroladores.

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

A estrutura desta srie de tutoriais

este srie de tutoriais voc encontrar captulos tericos e captulos com sugestes de exerccios de laboratrio. Cada exerccio acompanhado de propostas de projetos baseadas nos pontos explanados. No deixe de implementar de forma prtica os exerccios, tanto os j resolvidos como os propostos. Para realizar as prticas de laboratrio voc dever ter acesso a um computador do tipo IBM-PC, com o sistema operacional Windows ou Linux , e ser capaz de ler esquemas eletrnicos, e de uma placa Powerboard2. A maioria dos experimentos pode ser realizada com a placa mais custo, a Powerboard2 Light. Instrumentao bsica para o desenvolvimento de circuitos eletrnicos, tais como multmetro e osciloscpio, iro ajudar muito a depurao dos circuitos, porm no so indispensveis. Um conjunto de exerccios deixada como desafio ao estudante. Se voc deseja comparar a sua resposta com a por ns sugerida, basta acessar o site http://www.solbet.com.br , e procurar na seo Notas de aplicao. As respostas aos problemas e mais informao adicionais sobre programao de microcontroladores esto l disponveis para voc. A seguinte seqncia ser adotada neste tutorial: Introduo Consideraes Bsicas sobre microcontroladores Compreendendo a arquitetura do PIC16F877 Os experimentos podem ser avaliados utilizando apenas o simulador disponvel no MPLAB, mas sugerimos fortemente que voc efetivamente monte os diversos circuitos apresentados. Embora o simulador seja uma ferramenta fantstica para o desenvolvimento, a experincia com o dispositivo real ir ampliar de forma significativa o seu aprendizado. Voc notar aqui vrios termos em ingls. Escolhemos no traduzir alguns termos, visto ser a nomenclatura inglesa mais utilizada em nosso meio. A traduo de alguns termos como STATUS, RESET, CLOCK e outros similares iria apenas dificultar a quem est realizando este curso, a compreenso dos conceitos envolvidos e seria de pouco valor para o projetista.

O que um microcontrolador

m microcontrolador um dispositivo utilizado para controlar (EPA!- definio recursiva?) algum processo ou aspecto do ambiente. Um exemplo tpico de um controlador voc tem no seu forno de microondas. No forno pode-se programar a potncia, o tempo de cozimento , a velocidade de giro e outros parmetros. Alm disso, o controlador toma conta para voc de outros itens igualmente importantes e que podem parecer insignificantes primeira vista. Por exemplo, se voc abrir a forno com ele em funcionamento, o microcontrolador ir desligar imediatamente a gerao de microondas, que poderia vir a provocar leses no usurio. Os microcontroladores esto revolucionando o projeto de equipamentos eletrnicos. No somente os sistemas convencionais esto se tornando mais sofisticados e baratos, como novas funcionalidades esto sendo possveis de serem implementadas a um custo compatvel com o mercado. A propsito, o seu celular s se tornou possvel graas ao uso de microcontroladores cada vez mais poderosos. No incio dos tempos os sistemas de controle eram construdos utilizando-se (ugh !), rels e http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 4

vlvulas. Nestes tempos hericos a construo era cara e os programas difceis de se desenvolver. O programa era implementado pelo hardware do prprio circuito, com enormes dificuldades na hora em que se necessitava alter-lo. Os custos (e dimenses) eram elevados e poucos experimentadores poderiam construir um destes para controlar o ambiente de seu aqurio (temperatura, iluminao, filtros, alimentao, etc...).ou gerenciar sua residncia. Os controladores eram basicamente utilizados em indstrias, onde o seu custo elevado era amortecido pelo grande aumento da produtividade obtida devido sua utilizao. Com o advento da micro-eletrnica as coisas melhoraram um pouco, porm ainda no o suficiente para popularizar os controladores. O tamanho agora era mais reduzido, devido ao uso de transistores onde antes eram empregados vlvulas, porm o problema da dificuldade de reprogramao continuava. O grande passo ocorreu em 1970, com o advento dos microprocessadores. Embora os primeiros microprocessadores fossem destinados ao uso genrico, a possibilidade de reprogramao sem alterao do hardware bsico no passou despercebido dos projetistas de controladores, que passaram a utilizar de forma intensa este componente. Os microprocessadores destinados ao mercado de computadores pessoais podiam ser empregados em controladores, porm o seu custo continuava elevado para o tipo de tarefa que se desejava executar no controle dedicado. Imagine quo pouco competitivo (custo/benefcio) ficaria utilizar um Pentium no controle do nmero de lmpadas acesas simultaneamente numa casa, por exemplo. Em virtude deste mercado, os fabricantes de circuitos lanaram ento os microcontroladores. Estes dispositivos tipicamente possuem integrados em uma nica pastilha de circuito integrado, a CPU (unidade central de processamento), RAM (memria de acesso aleatrio), EPROM(ou suas variantes EEPROM,ROM,PROM) , memria somente de leitura, E/S (entrada e sada digitais e analgicas), TEMPORIZADORES (contadores e temporizadores) e CONTROLADORES DE INTERRUPO (possibilitando rpida reao s mudanas do ambiente). Se voc no compreendeu o significado de algumas destas siglas, no se preocupe. Ns explicaremos o significado de cada uma nas prximas pginas. O surgimento destes dispositivos a um baixo custo provocou uma revoluo nos mtodos de projeto de sistemas de controle para uso domstico ou industrial. Sistemas mecnicos j consagrados pelo uso (por exemplo, controladores de mquinas de lavar roupa) esto sendo rapidamente substitudos por circuitos eletrnicos mais confiveis e baratos. Conhecer estes dispositivos to onipresentes em nossas vidas se tornou uma necessidade de todos os profissionais envolvidos com a produo , desenvolvimento e manuteno de circuitos eletrnicos de qualquer tipo. Do ponto de vista do projetista dos circuitos de controle, esta substituio forou o deslocamento dos projetos baseados em hardware, onde cada projeto correspondia a um circuito eletrnico, para projetos baseados em software, onde o hardware bsico se mantm o mesmo , sendo que a alterao funcional se d atravs da alterao do software do sistema. Desta forma, correes e aumentos na funcionalidade do sistema podem ser feitos muito mais rapidamente e com custos reduzidos, se comparados a soluo de alterao no hardware. Microcontroladores esto em torno de ns em quantidades cada vez maiores. A indstria automobilstica, por exemplo, uma grande consumidora destes dispositivos. A indstria de eletrodomsticos tambm. Conhec-los e saber deles extrair o mximo de funcionalidade, uma capacidade que se exige do engenheiro ou tcnico, projetistas e pessoal de manuteno de sistemas dedicados ou usurios avanados. E alm disto, para o experimentador, fica muito mais barato utilizar estes pequenos mdulos para os seus experimentos que criar um novo hardware para cada http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 5

projeto. O projetista de circuitos que utilizar microcontroladores deve ser eficiente em pelo menos trs diferentes reas. Em primeiro lugar ele deve ter uma compreenso exata da capacidade do microcontrolador que pretende utilizar, em termos de memria, dispositivos de entrada e sada, velocidade de processamento, etc. Em segundo lugar, o projetista deve ser capaz de especificar formalmente os requisitos do seu projeto. Isto significa compreender o ambiente no qual o sistema ser utilizado e qual a interao do sistema sendo desenvolvido com o este ambiente. Por ltimo, papel fundamental de um bom projetista ser capaz de dividir o problema com que se depara em partes menores e mais gerenciveis, que devem trabalhar harmoniosamente de forma a se obter o resultado desejado.

A Arquitetura do microcontrolador PIC16F877A

odemos pensar num microcontrolador como um dispositivo composto de sete partes, como mostrado na figura 2-1. Os dados dentro de um microcontrolador so manipulados em unidades chamadas palavras. O PIC16F877A possui palavras de dados de oito bits de tamanho, e palavras de instruo de 14 bits. Este comprimento da palavra de instruo do PIC16F877A permite que a maioria das instrues possa ser executada dentro de um nico ciclo de mquina, um dos motivos da grande velocidade que se consegue nestes microcontroladores.

PORTA SADA

PORTA ENTRADA

MEMRIA DE PROGRAMAS MEMRIA DE DADOS Figura 2-1. Microcontrolador bsico O clock o responsvel pelo sincronismo entre todas as operaes de um microcontrolador. Todos os eventos que ocorrem dentro de um microcontrolador obedecem a uma lgica preestabelecida pelo fabricante, e so processados em tempos determinados pela freqncia do clock. Normalmente, quanto maior a freqncia de clock de um microcontrolador, mais rpida a execuo das instrues. No caso dos microcontroladores, o clock tambm utilizado como referncia de tempo para execuo de tarefas que devem ser repetidas a determinado intervalo de tempo, como por exemplo a leitura de sinais em interfaces RS232C. A CPU, ou unidade central de processamento, coordena todas as atividades dentro do microcontrolador. Ela organiza a execuo das instrues. a CPU que realiza as operaes lgicas ou matemticas sobre os dados, e envia os resultados para os diversos registros ou portas de entrada e sada. As portas de entrada e de sada so os pontos atravs dos quais o microcontrolador interage com o meio ambiente. As portas digitais assumem valores discretos, normalmente referenciados como 0 ou 1, correspondentes a 0 volts ou 5 volts de sada respectivamente. O valor http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 6

CPU

de tenso correspondente ao nvel lgico 1 normalmente corresponde a tenso de alimentao do microcontrolador. Alm das portas convencionais, nas quais a CPU deve ler sempre que deseja saber sobre o seu estado (0 ou 1), alguns microcontroladores possuem uma ou mais portas de entrada especiais chamadas de Interrupts. Estas portas no exigem que a CPU fique vigiando a ocorrncia de um evento, porque interrompem o programa sendo executado toda vez que ocorre um dado evento. Desta forma a CPU pode atender o evento externo assim que o mesmo ocorre, e no gasta tempo vigiando inutilmente pela ocorrncia do evento na porta. Interrupts so uma das caractersticas mais utilizadas nos projetos em se necessite de uma rapidez de resposta a eventos assncronos, que podem ocorrer a qualquer instante. O PIC16F877A possui portas de entradas analgicas, ou seja, portas que podem receber sinais continuadamente variveis entre 0 e 5 volts. Internamente estes sinais analgicos so convertidos em valores digitais entre 0 e 0x3FF (se utilizamos conversores de 10 bits) , ou 0xFF, se utilizamos conversores de oito bits. A memria de dados normalmente implementada na forma de RAM (memria de acesso aleatrio) em que podemos ler e gravar com facilidade. A leitura no destrutiva, ou seja, podemos ler repetidas vezes o valor de uma posio de memria que o valor no se altera. A gravao de um dado na RAM feita pela CPU, em resposta a instrues colocadas pelo programador. Microcontroladores normalmente se utilizam de pequenas quantidades de memria de dados, principalmente se compararmos com as quantidades de memria RAM utilizadas por computadores pessoais de hoje, algo como 100 bytes para os microcontroladores, versus 512 milhes de bytes de um tpico computador pessoal. A memria de programa onde residem as instrues que devem ser executadas pela CPU. Num computador pessoal os programas tipicamente residem em disquetes ou discos rgidos. J nos microcontroladores o programa deve residir numa memria somente de leitura. O programa normalmente gravado uma s vez e a partir da o microcontrolador executa apenas este programa. A maioria dos microcontroladores se utiliza de memria EPROM, que para ser apagada necessita de ser exposta a luz ultravioleta, ou PROM. No caso da PROM o programa s pode ser gravado uma vez. Portanto s interessante para os fabricantes de produtos baseados em microcontroladores, porque a PROM uma memria de baixo custo. J a gravao de uma EPROM deve ser realizada atravs de equipamento adequado. O ciclo de desenvolvimento normalmente exige inmeras operaes de gravao e apagamento, para correes do programa. Alguns microcontroladores, tais como o PIC16F877A, substituram a EPROM pela EEPROM, memria que pode ser apagada por meios eltricos, sem necessidade de apagamento por luz ultravioleta. Esta forma de trabalho encurta significativamente o ciclo de desenvolvimento do programa, e tambm no exige equipamento sofisticado para gravao e apagamento da memria de programas. A memria de programas e a memria de dados podem ou no compartilhar de um nico espao de endereamento. A arquitetura Von Neuman possui um nico barramento de memria para enderear as instrues e os dados. Dados e instrues, portanto, compartilham do mesmo espao de memria. Quando este tipo de microcontrolador executa uma instruo, ele primeiro pega a instruo e depois pega os dados referentes a esta instruo. Esta necessidade de dois acessos memria torna a operao mais lenta. Os microcontroladores baseados na arquitetura Harward possuem um espao de memria separado para os dados e para as instrues. Isto permite que a leitura das instrues e dos dados ocorra em paralelo. Tambm, enquanto uma instruo est sendo executada a outra j pode estar sendo transferida para a CPU. A execuo utilizando esta arquitetura pode ser muito mais rpida http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 7

que a possvel com a arquitetura Von Neuman, porm isto aumenta a complexidade dos circuitos. O microcontrolador PIC16F877A, objeto de anlise neste tutorial, se utiliza da arquitetura Harward, o que permite uma alta velocidade de operao. Qualquer que seja a arquitetura empregada, um microcontrolador necessita manter um controle rigoroso sobre a seqncia de instrues a serem executadas. Este controle da seqncia conseguido pelo uso de um contador de programa. O contador de programa um registro que mantm a informao de qual o endereo da instruo de programa que deve ser executada. Embora as instrues sejam realizadas na sua maior parte de forma seqencial, alguns fatores podem provocar a alterao deste comportamento. Por exemplo, um determinado ponto do programa chama por uma subrotina. Uma subrotina um trecho de programa, que aps ser executado, deve retornar para a posio onde foi inicialmente chamado. Outro exemplo de desvio o durante o processamento de interrupts. Alm das portas de entrada e sada, o PIC16F877A possui inmeros outros perifricos, tais como gerador de PWM, UART (interface serial) , contadores , e outros que veremos em detalhes ao decorrer do tutorial. A vantagem de dispormos destes blocos de hardware que a velocidade possvel de se obter utilizando mdulos em hardware muito maior do que a velocidade possvel de ser obtida com o uso de software. Alm disto, com o hardware podemos facilmente implementar uma concorrncia, ou sejam, execuo de vrias tarefas simultaneamente.

Como se programa um microcontrolador

rogramar um microcontrolador significa transferir para sua memria de programas um conjunto de instrues que ser executado pela CPU. As instrues devem ser carregadas j no formato binrio, capaz de ser compreendido pela CPU. No entanto, este formato de difcil interpretao por seres humanos. Da surge a necessidade de um sistema de desenvolvimento. Um sistema de desenvolvimento para projetos que empreguem microcontroladores, tipicamente se utiliza de computadores pessoais para executar os softwares de desenvolvimento, tais como montadores (assemblers) , compiladores, simuladores e gravadores. Atravs do uso de montadores e dos compiladores, o programador pode implementar o seu programa com instrues em formato facilmente compreensvel, em oposio linguagem de mquina. Os comandos da linguagem assembler normalmente so mnemnicos que lembram a operao a ser realizada pela instruo. Com o simulador o programa pode ser executado de uma estao de trabalho (um micro do tipo IBM-PC) , sem necessidade de gravao do programa na EEPROM do microcontrolador. Os simuladores tm como principal vantagem, o fato de permitirem ao programador analisar cuidadosamente o que est ocorrendo dentro do microcontrolador, situao praticamente impossvel de se obter quando estamos executando o programa no circuito final, a no que nos utilizemos de emuladores, geralmente muito caros para uso no comercial. Finalmente o gravador permite que seja transferido o programa executvel para a memria de programas do microcontrolador. A soluo adotada no Powerboard2, utilizado neste tutorial, dotar a CPU de um pequeno programa residente, que fica na parte superior de memria, e que capaz de receber um programa em formato hexa atravs da interface serial e armazen-lo na memria de programa da CPU. Assim que o programa transferido, o comando passa para o codigo carregado. Esta soluo elimina a necessidade de um programador externo. Conhecer bem o conjunto de instrues do microcontrolador com o qual se deseja implementar um dado projeto condio essencial para obter a maior eficincia do programa. Embora existam compiladores para linguagens de alto e mdio nvel para uso em http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 8

microcontroladores, o conhecimento da linguagem assembler geralmente o nico recurso quando se necessita otimizar o uso de memria ou aumentar a velocidade de processamento. importante tambm observar que o conhecimento da linguagem assembler deve ser complementado com um perfeito domnio da estrutura de hardware do microcontrolador, de forma a se obter a maior harmonia possvel entre os recursos de hardware e o software. A maioria dos microprocessadores hoje se utiliza de um conjunto de instrues relativamente grande (mais de 80 instrues). Conjunto de instrues deste tipo so denominadas CISC ( Complex Instruction Set Computer). Muitas dessas instrues so bastante poderosas e especializadas. A grande vantagem do modelo CISC que muitas das instrues so como macros, permitindo que o programador use uma nica instruo em lugar de muitas instrues mais simples. J na indstria dos microcontroladores, a tendncia o uso do conceito RISC ( Reduced Instruction Set Computer). Devido ao fato de implementar poucas instrues, o circuito pode ser implementado em uma rea menor, com um conseqente menor consumo de energia e normalmente mais rpido. O PIC16F877A um microcontrolador RISC que se utiliza da arquitetura Harward, permite o pipeline das instrues (as instrues so enfileiradas de forma que num dado instante vrias instrues podem estar em estgios diferentes de execuo), e o conjunto de instrues simtrico, ou seja, uma instruo pode operar em todos os registradores ou usar qualquer modo de endereamento. No existem combinaes especiais de instrues, excees, restries ou efeitos colaterais. A programao ainda facilitada porque o programador tem que se lembrar de um conjunto reduzido de instrues. Ao contrrio de um microcomputador de uso genrico, em que voc mantm o programa em disquete ou no disco rgido, no microcontrolador o programa deve ser armazenado em alguma forma de memria no voltil, tal como ROM, EPROM ou EEPROM, normalmente disponvel dentro do prprio chip do microcontrolador. Algumas verses permitem o uso de memria externa. Quando se deseja programar grandes quantidades de chips, pode-se solicitar ao fabricante para que o mesmo envie os chips j programados. Isto feito atravs do uso de uma memria ROM. Devido a necessidade de altos volumes de produo esta soluo s interessa aos fabricantes de produtos em srie. Uma soluo alternativa tambm indicada para fabricantes, porm sem a necessidade de alto volume a forma OTP (One Time Programable), onde o chip pode ser programado uma nica vez. Se o seu programa no necessitar de alteraes, esta uma soluo de baixo custo, pois se utiliza dos mesmos gravadores de EPROM convencionais. (na realidade, a OTP uma EPROM sem a janela de quartzo para apagamento). A EPROM uma soluo para o desenvolvimento, mas exige um ciclo do tipo grava eprom, testa, apaga eprom,....grava eprom,.. etc... , e tambm exige equipamentos adequados para o apagamento e gravao da memria EPROM. Para projetos especficos ou mesmo pequenas sries, a soluo EEPROM (electrical erasable PROM) a de mais baixo custo operacional. Com esta memria pode-se gravar e apagar os dados eletricamente, muito mais rpido do que o possvel de ser feito com a EPROM convencional. A EEPROM suporta ciclos de leitura/escrita por um nmero limitado de vezes, mas normalmente este nmero bem superior s necessidades tpicas durante o desenvolvimento de um projeto. O PIC16F877 possui uma memria EEPROM para programas e tambm uma memria EEPROM para dados.

As origens do PIC16F877A

PIC16F877 um microcontrolador que teve suas origens no ano de 1965, quando a companhia GI (General Instruments), formou a Diviso de Microeletrnica. Esta diviso foi uma das primeiras a produzir arquiteturas de EPROM e EEPROM viveis, alm das Consideraes bsicas sobre o PIC16F877A 9

http://www.solbet.com.br

famlias de circuitos anlogos/digitais AY3-xxxx e AY5-xxxx. Na dcada de 70, a GI criou um dos primeiros processadores de 16 bits, chamado CP16000. Como este microprocessador tinha uma certa deficincia no processamento de entradas/sadas, a GI projetou e construiu um Controlador de Interface Perifrica (em ingls, Peripheral Interface Controller, ou PIC). Este controlador foi projetado tendo em vista a rapidez, pois devia processar a E/S de uma mquina de 16 bits, e tinha um conjunto de instrues muito pequeno. O CP16000 no teve muito sucesso, porm o PIC evoluiu para a arquitetura PIC16C5x. Como era disponvel somente nas verses em ROM, permaneceu como uma boa soluo para grandes usurios, que podiam encomendar diretamente da fbrica um grande volume de circuitos j pr-programados. Na dcada de 80, a diviso de microeletrnica da GI foi reestruturada e se transformou na GI Microeletrnica, uma empresa subsidiria. Esta empresa foi vendida para investidores e transformada na Arizona Microchip Technology, dedicada especificamente ao desenvolvimento de produtos utilizados em sistemas dedicados. Como parte desta estratgia, grande esforo da companhia foi direcionado ao desenvolvimento de vrias verses do PIC, sendo que a verso com EEPROM (eprom apagvel eletricamente) a mais indicada para o desenvolvimento rpido de aplicaes, devido ao baixo custo do sistema de desenvolvimento necessrio e do hardware de processamento. O dispositivo mais flexivel disponvel hoje da srie PIC de 14 bits e que ao mesmo tempo rene um conjunto de caractersticas adequadas ao uso em pequenas sries de produtos e estudo de microcontroladores, o PIC16F877A. Como o microcontrolador PIC16F877A se utiliza da arquitetura Harvard, isto possibilita que as palavras de instrues tenham um nmero de bits (14 bits de comprimento) diferente do tamanho da palavra de dados (8 bits para este microcontrolador). Com este tamanho de palavra de instruo possvel codificar todas instrues, com exceo dos desvios para outras posies de programas, como instrues de uma nica palavra, resultando em grande velocidade de execuo, 400 ns para a verso de 10Mhz. Estes dispositivos podem enderear direta e indiretamente seus arquivos de registros ou memria de dados. O conjunto de instrues foi projetado de tal forma que se pode realizar qualquer operao em qualquer registro utilizando qualquer modo de endereamento. A unidade lgica aritmtica do PIC16F877 pode realizar operaes de adio, subtrao, deslocamento e operaes lgicas. Tipicamente, para o caso em que so utilizados dois operandos, um deles o registrador W (para aqueles que j programaram os microprocessadores 80XX e Z80, este registrador corresponde ao acumulador destes processadores) e o outro corresponde a um literal (constante) ou a um registro de arquivo. Em operaes com um nico operando, este o registrador W ou um arquivo de registro.

Compreendendo a arquitetura do PIC16F877A

s microcontroladores da srie PIC16F877 so dispositivos computacionais extremamente adequados para experimentao e pequenos projetos. Devido ao seu baixo custo e facilidade de programao, podem ser empregados em aplicaes onde at recentemente se utilizavam componentes discretos, como por exemplo, os temporizadores e controladores de temperatura, adicionando novas funes at ento no implementadas devido a complexidade do circuito necessrio. O projeto com microcontroladores traz uma diferena fundamental de paradigma para o projetista de circuitos. Ao invs de um bem sortido estoque de componentes discretos que realizam vrias funes diferentes cada um, e de um conceito de projeto que consiste em interligar estas http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 10

diferentes funes de forma que o sistema como um todo tenha o comportamento adequado, utilizamos agora praticamente um mesmo tipo de hardware para todas as aplicaes. A diferena de funcionalidade fica por conta do software. Alteraes de funcionalidade podem ser feitas, em grande parte das vezes, atravs da modificao apenas do software, sem ser necessria alterao do hardware. Neste curso utilizaremos um circuito que estende este conceito at os seus limites. Voc poder modificar o programa do microcontrolador sem a necessidade sequer de retir-lo do circuito onde est sendo aplicado. Com um micro do tipo IBM-PC e o com as verses dos software de desenvolvimento disponveis gratuitamente na Internet, voc poder compreender todo o ciclo de desenvolvimento de um programa . Os microcontroladores da srie PIC16F87X so mquinas RISC. Isto significa que so mquinas com um reduzido conjunto de instrues. Para ser exato, so apenas 35 instrues para serem compreendidas, cada uma ocupando uma palavra (14 bits ). Compare este nmero com a quantidade de instrues da linguagem BASIC, e veja como bem mais fcil programar em linguagem de mquina do PIC16F87X do que em BASIC. O PIC16F87X possui as seguintes caractersticas bsicas: Instrues de 14 bits Dados em 8 bits Pilha (stack) com oito nveis Endereamento nos modos direto, indireto e relativo Catorze tipos de interrupts 1.Sinal externo no terminal 6 (RB0/INT) 2.Estouro do temporizador externo TMR0 3.Mudana no nvel dos terminais 13 a 10 (RB7:RB4) 4.Fim de gravao na EEPROM 5.Interrupt ligado a porta paralela 6.Interrupt do conversor AD 7.Interrupt do PWM 8.Interrupt leitura interface serial 9.Interrupt escrita interface serial 10.Interrupt timer 1 11.Interrupt timer 2 Programa gravado em EEPROM, com at 1000000 de ciclos de apagamento e escrita, com reteno garantida por mais de 40 anos.

Trinta e trs terminais de Entrada e Sada, com controle individual por terminal. Capacidade de manipulao de corrente de 25 mA atuando como dreno e 20mA atuando como fonte. Dois temporizadores de oito bits programvel, com pr-divisor tambm programvel de oito bits. Um temporizador de 16 bits http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 11

Sistema de proteo de cdigo na EEPROM. Impossibilita que outras pessoas leiam o seu cdigo. Operao em tenses desde 2 a 6 Volts, com consumo de corrente tpico em torno de 2 mA. Memria RAM interna de 368 bytes, juntamente com uma rea de EEPROM para dados de 256 bytes No deixe que a pequena capacidade de memria (quando comparada com os megabytes a que
estamos acostumados nos computadores pessoais) faa-o acreditar que estes pequenos computadores so apenas brinquedos. A alta velocidade de processamento e o tipo das tarefas tipicamente encontradas nos sistemas dedicados fazem destes circuitos integradas uma soluo extremamente adequada para uma grande quantidade de sistemas. .

A melhor forma de compreender o funcionamento do PIC16F877A e suas variantes comear pela sua estrutura de dados interna. Todo o funcionamento do microcontrolador controlado ou monitorado atravs dos registradores internos da CPU. Um registrador uma rea de memria onde so escritos e lidos parmetros que atuam sobre o comportamento do microcontrolador. Uma perfeita compreenso da organizao da memria e da estrutura interna indispensvel para o desenvolvimento de aplicaes em cdigo assembler.

A estrutura interna do PIC16F877A

PIC16F877 encapsulado de diferentes formas, mas o formato PDIP, de 40 pinos o mais indicado para o experimentador

Cada terminal do integrado tem uma ou mais funes bem definidas, e a cada um associado um nome que nos lembra a funo correspondente. Manteremos neste tutorial o os nomes dos terminais correspondentes nomenclatura inglesa, visto ser esta a forma com que mais freqentemente nos deparamos na literatura tcnica. Para manter o nmero de terminais pequeno e ao mesmo permitir ao PIC16F877 comportar um nmero maior o possvel de perifricos, vrios pinos tiveram que ser multiplexados, ou seja, estes pinos possuem mais de uma funo. A seleo da funo depende o modo de operao do PIC. A definio dos terminais do PIC16F877A apresentada na figura 3.1:

Figura 3.1: Pinagem do PIC16F877 Os terminais so a interface do circuito interno do PIC com o mundo exterior. O circuito http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 12

interno, em forma de diagrama de blocos, pode ser visto na figura 3.2.

Figura 3.2. Diagrama em blocos do circuito interno do PIC16F877

A descrio dos terminais do PIC16F877A


Vamos inicialmente olhar para o PIC como uma caixa preta, aprendendo qual a funo de cada terminal do circuito integrado. Na tabela 3.1 temos o nome e a funo de cada um dos terminais: Funcionalmente, podemos agrupar os terminais nos seguintes grupos: Alimentao Entrada/Sada Clock http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 13

Controle A alimentao deve estar entre 2 e 6 volts, preferencialmente 5 volts para facilitar o interfaceamento com integrados da famlia lgica TTL. Os terminais 32 e 11 devem receber a tenso de alimentao e o terminais 31 e 12 devem ser ligado terra do circuito. sempre interessante, com qualquer tipo de circuito que gere ou receba pulso, desacoplar a alimentao com um pequeno capacitor de 0.01 microfarads, ligado o mais prximo possvel do pino de alimentao.

OSC1/CLKIN OSC2/CLKOU MCLR/VPP RA0/AN0 RA1/AN1 RA2/AN2/VREF

13 14 1 2 3 4

I O I/P I/O I/O I/O

Entrada para cristal externo (fonte de clock) Sada para cristal externo Master Clear (reset) externo. Lgica baixa para reset I/O digital bidirecional ou entrada analgica 0 I/O digital bidirecional ou entrada analgica 1 digital bidirecional ou entrada analgica 2 ou tenso de referncia analgica negativa I/O digital bidirecional ou entrada analgica 3 ou tenso de referncia analgica positiva I/O digital bidirecional ou entrada de clock para contador TMR0 I/O digital bidirecional ou entrada analgica 4 ou slave select para a porta de comunicao serial sncrona I/O digital bidirecional ou entrada para interrupo externa I/O digital bidirecional I/O digital bidirecional I/O digital bidirecional ou entrada para programao em baixa tenso I/O digital bidirecional I/O digital bidirecional

RA3/AN3/VREF+

I/O

RA4/T0CKI RA5/SS/AN4

6 7

I/O I/O

RB0/INT RB1 RB2 RB3/PGM RB4 RB5

33 34 35 36 37 38

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

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

14

RB6/PGC RB7/PGD C0/T1OSO/

39 40 15

I/O I/O I/O

I/O digital bidirecional ou clock da programao serial (ICSP) I/O digital bidirecional ou dados da programao serial (ICSP) I/O digital bidirecional ou sada para cristal esxterno para TMR1 ou entrada de T1CK1 clock para contador TMR1 I/O digital bidirecional ou entrada para cristal esxterno para TMR1 ou I/O para CCP2 Capture ,Compare,PWM 2 I/O digital bidirecional ou I/O para Capture,Compare,PWM 1 I/O digital bidirecional ou entrada de clock serial sncrono ou saida para os modos SPI e I2C I/O digital bidirecional ou entrada de dados SPI ou I/O de dados I2C I/O digital bidirecional ou sada de dados SPI I/O digital bidirecional ou Transmisso para comunicao USART assncrona ou via de clock para para comunicao USART sncrona I/O digital bidirecional ou Recepo para comunicao USART assncrona ou via de dados para para comunicao USART sncrona I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava

RC1/T1OSI/

16

I/O

RC2/CCP1 RC3/SCK/SCL

17 18

I/O I/O

RC4/SDI/SDA RC5/SDO RC6/TX//CK

23 24 25

I/O I/O I/O

RC7/RX/DT

26

I/O

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3

19 20 21 22

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

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

15

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 RE0/RD/AN5

27 28 29 30 8

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

I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Controle de Leitura para a Porta paralela escrava ou entrada analgica 5 I/O digital bidirecional ou Controle de Escrita para a Porta paralela escrava ou entrada analgica 6 I/O digital bidirecional ou Select Control para a Porta paralela escrava ou entrada analgica 7 Referncia TERRA Alimentao Positiva (+5V)

RE1/WR/AN6

I/O

RE2/CS/AN7

10

I/O

VSS VDD

12 31 11 32

P P

Tabela 3.1 Descrio sucinta dos terminais do CI PIC16F877

O clock se utiliza dos terminais 13 e 14. So possveis vrias configuraes de clock, todas elas descritas em detalhes mais adiante. O terminal MCLR uma entrada de controle com duas funes. Em primeiro lugar ele atua como reset do microcontrolador. Esta funo ativada quando o nvel lgico deste terminal for feito igual a zero. A outra funo atuar como indicador de gravao da memria de programas. Para isto a tenso neste terminal deve ser feita igual a 13.5 volts. Para a operao normal este terminal deve ser mantido em cinco volts, ou na tenso de alimentao utilizada.

A descrio da estrutura interna do PIC16F877A


As diferentes reas de memria O PIC possui trs reas de memria, a rea de programas, a rea de registros de arquivos e a EEPROM de dados. O bloco com o nome memria de programa, onde ficam residentes as instrues de programa do PIC16F877. Esta memria pode ser programada e alterada com pulsos eltricos, facilitando a experimentao com diversos programas. Se voc j tem experincia com outros microcontroladores deve estar lembrado do ciclo grava_eprom-->coloca na placa do micro-->testa->apaga com ultravioleta , e assim sucessivamente. No caso das memrias EEPROM utilizadas no http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 16

PIC16F877 este ciclo foi cortado substancialmente, pois tanto a gravao como modificao de programas podem ser feitos eletricamente, inclusive podendo-se efetuar estas operaes sem necessidade de se retirar o microcontrolador do circuito. O espao de memria de programas do PIC16F877 de 1024 posies (1Kbyte), sendo que cada instruo possui 14 bits de comprimento. Os endereos de programa vlidos no PIC16F877 variam de 0H a 3FFH. importante salientar que o nico modo de se escrever na memria de programas atravs de um dispositivo especialmente projetado para este fim. No h possibilidade do prprio PIC escrever na sua rea de memria de programas. O segundo bloco de memria o bloco correspondente aos registros de arquivos, Register File Nesta rea de memria ficam as informaes que definem a forma de funcionamento do microcontrolador e tambm os dados do programa do usurio. O microcontrolador tem total acesso para escrever e ler nesta rea. Existem quatro bancos de memria para armazenar os registros. A tabela 3.1 apresenta uma descrio bsica do espao de memria de registros do PIC16F877. Observe que alguns registradores so duplicados em mais de banco de memria. Isto facilita a programao, visto que o acesso aos mesmos independe de conhecermos o banco atual em que estamos operando. Voc no precisa memorizar o endereo dos registradores. Para facilitar a vida do programador, normalmente todos os programas incluem um arquivo de definies, geralmente chamado de PIC16F877.INC , onde esto associados os nomes dos registros e os endereos correspondentes. Voc s precisa se lembrar do nome do registro que deseja ler ou alterar. A seleo de um determinado banco feita atravs do registrador de status. Por exemplo: Digamos que voc precise alterar o valor de um bit do registrador TRISA. O endereo deste registrador 05H no banco dois. Para alter-lo voc precisa primeiro selecionar o banco dois (veremos como se faz isto mais tarde), e ento escrever no bit desejado do endereo cinco. O controle dos bancos feito totalmente pelo seu programa, e voc deve sempre tomar cuidado em qual banco est, principalmente no atendimento das rotinas de interrupt. Se voc estiver programando em Cesta preocupao normalmente deixada para o compilador. A memria de dados EEPROM uma memria de dados implementada em EEPROM. Os dados gravados neste trecho de memria no so perdidos quando o microcontrolador desligado. Este um espao muito conveniente para se armazenar informaes de configurao ou calibrao de um sistema. Uma maneira de informar ao assembler da Microchip que estamos querendo acessar um registro no banco dois utilizar o endereo = endereo base + 0x80. Mas lembre-se de que de qualquer maneira voc deve chavear o banco primeiro, no adianta apenas acessar o endereo com o bit 7 igual a um (0x80 + endereo). Observe que alguns registros mais importantes so duplicados, isto , voc pode ter acesso a eles independente do banco onde est. Isto facilita o programador e aumenta a rapidez de execuo de um programa.

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

17

A memria de programas organizada da seguinte maneira:

Observe que a memria de programa organizada em quatro bancos. As instrues de call e goto operam apenas dentro de um banco. preciso complementar o contedo do contador de programa caso desejemos fazer um goto ou um call para uma pgina diferente da que estamos. Cada pgina possui um tamanho de 2Kbytes.

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

18

Tabela 3.2:Endereo dos registradores

O controle do fluxo de programa

s prximos blocos a serem descritos so o stack, o PC , o registrador W, a ALU e os vrios temporizadores e circuitos de reset. Estes blocos so os responsveis pelo gerenciamento do fluxo do programa e pela interpretao das instrues.

O PC, contador de programa, onde est armazenado o endereo da instruo que ser executada. O contador de programas possui 13 bits de comprimento, o que nos permite operar com programas de at 8192 posies. Aps cada instruo o valor do contador do programa alterado para passar a indicar o endereo da prxima instruo. As instrues de GOTO (ir para), CALL (chamada de subrotina) e os interrupts provocam o desvio do fluxo normal do programa, que geralmente incrementa o contador de um a cada instruo. No caso da instruo CALL e no atendimento de interrupts, o microcontrolador deve manter a informao do endereo de retorno, http://www.solbet.com.br Consideraes bsicas sobre o PIC16F877A 19

isto , o endereo da instruo a ser executada depois de completada a subrotina ou atendido o interrupt. Este endereo de retorno armazenado no STACK. No caso do PIC16F877 permitido o aninhamento de at oito subrotinas ou interrupts. Voc no tem acesso direto ao STACK. E alm disso o microcontrolador no lhe avisa de estouro (overflow ou underflow) do stack. responsabilidade do programador se assegurar que o stack est vlido. Isto pode ser especialmente complicado na caso de rotinas recursivas (que chamam a si mesmas) ou no tratamento de interrupo. No existem as funes PUSH e POP comuns a outros microcontroladores. A ALU (unidade lgica e aritmtica) quem interpreta e executa as instrues armazenadas na rea de programas. Embora as instrues sejam de 14 bits, os dados so de oito bits. Todas as instrues operam sempre sobre oito bits. A ALU trabalha em estreito relacionamento com o registro W, onde grande parte das operaes so realizadas ou tem neste registro o local de armazenamento do resultado da operao. Para aqueles com conhecimento dos microprocessadores 8080 e Z80, o registro W funcionalmente equivalente ao acumulador destes processadores. Os demais blocos selecionados so os responsveis pela sincronizao das operaes da CPU, assim como garantem que, logo aps a energizao ou reset, a mquina assuma um estado bem conhecido. Isto muito importante para que o programador possa se assegurar das condies que estaro presentes quando o seu programa comear a operar. Um dos registros de grande importncia para o aumento da confiabilidade de um programa que deve operar em ambientes robustos a falhas o temporizador de watchdog. O funcionamento deste temporizador o seguinte. Se o programa estiver executando corretamente, ele reinicializa o watchdog dentro de perodos bem determinados. Se por algum motivo qualquer o programa entra em loop ou se desvia do fluxo programado (por exemplo, devido a um transiente na alimentao), o watchdog no ser reinicializado, e quando o mesmo atingir o tempo limite , ser gerado um interrupt que reinicializar todo o sistema para uma condio segura.

O sistema de interrupts

ara um programa tomar contato com algum evento externo, como por exemplo, um interruptor que se fecha ou abre, existem duas maneiras. A primeira ficar vigiando na porta em que est ligado o interruptor, verificando se ocorreu alguma mudana, e a segunda utilizando os interrupts. A primeira opo muito simples de ser programada, mas tem uma grande desvantagem. A CPU gasta muito tempo apenas vigiando a porta de entrada. Alm do mais, se uma dada tarefa toma muito tempo para ser executada, a chave pode mudar de estado mais de uma vez, fechando e abrindo outra vez, sem que a CPU perceba. Para evitar que a CPU perca a informao de alterao do sinal de entrada, pode-se utilizar os interrupts. Programado desta maneira, quando ocorre o sinal na entrada, o programa desviado para uma posio fixa, no caso do PIC16F877 o desvio ocorre na posio 0x04H . Passa a ser executado ento o trecho do programa responsvel pelo atendimento da interrupo. Aps processado a interrupo o sistema volta a executar o programa que estava sendo executado anteriormente. Desta forma no gastamos tempo vigiando inutilmente a porta e no perdemos o evento que desejamos processar.

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

20

O PIC16F877 pode processar at quinze tipos diferentes de interrupes. Todas as interrupes provocam o desvio do fluxo do programa para a posio 0x0004h. Para voc identificar qual foi a fonte de interrupo consulte o registro INTCON. Um ponto importante sobre os interrupts que o contexto no salvo automaticamente. Voc precisa realizar esta operao via software. Normalmente os registros que voc precisar salvar so os registradores W e de STATUS. Salvar o contexto importante para que o programa que estava sendo executado quando ocorreu a interrupo possa continuar sua execuo como se nada tivesse acontecido. Se voc no salvar o contexto, o comportamento do programa certamente ser aleatrio. O seguinte trecho de cdigo pode ser utilizado para salvar o contexto em interrupes.
WTEMP STEMP EQU INT_ EQU 0x0d 0x0c ;variavel para salvar o registro W ;variavel para salvar o registro status ;registrador status colocado em W

MOVWF WTEMP ;copia o registrador W para o registro TEMP

SWAPF STATUS,W

MOVWF STEMP ;salva status em TEMP1 ; processa aqui o interrupt FIM SWAPF STEMP,W MOVWF STATUS SWAPF WTEMP,F SWAPF WTEMP,W RETFIE ;inverte nibles de temp ; recupera W anterior ;retorna do interrupt ;recupera STATUS anterior

Os interrupts podem ser desabilitados individualmente ou de uma forma geral. Para desabilitar todos interrupts simultaneamente faa igual a zero o bit GIE (global interrupt enable, no registrador INTCON <7>. Aps o reset todos os interrupts esto desabilitados pelo bit GIE , INTCON<7>. Aps receber um interrupt o sistema zera o bit GIE, desabilitando todos os interrupts. Voc deve aproveitar esta situao de interrupts desabilitados para efetuar o reconhecimento do interrupt que est sendo atendido. Se no o fizer, o bit correspondente a gerao do interrupt continuar ativo, e logo aps a instruo RETFIE, (retorno de interrupo), a interrupo ser ativada novamente, independente se o fato gerador existe ainda ou no. Isto provocar um loop infinito no seu programa. Um ponto que torna o PIC16F877 mais flexvel no que diz respeito aos interrupts a possibilidade de programao, via registradores, da situao que o interrupt INT/RB0 ser reconhecido. Podemos programar se o interrupt ocorrer no bordo de subida ou descida do sinal, atravs do bit INTEDG do registrador OPTION <6>.

As configuraes do oscilador

vimos anteriormente que o PIC16F877 pode operar com quatro tipos de osciladores. Estas configuraes so necessrias para que o circuito funcione numa grande faixa de freqncias (32Khz a 10MHz), e com diferentes dispositivos osciladores. Osciladores a cristal de baixa potncia (LP) Osciladores a cristal/ressonadores cermicos convencionais (XT)

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

21

Osciladores a cristal/ressonadores cermicos de alta freqncia (HS) Osciladores a Resistor/Capacitor (RC) A escolha do tipo de oscilador adequado depende das necessidade de nossa aplicao. Assim, se as temporizaes do nosso programa no so crticas, como por exemplo em projetos de alarmes, a opo pelo oscilador RC nos d o menor custo. Se uma baixa freqncia de clock for adequada para o seu programa (entre 32Khz e 200KHz) a melhor opo a do oscilador LP. Freqncias entre 2MHz a 4Mhz devem corresponder ao oscilador XT e finalmente, altas freqncias de oscilao (8Mhz a 10Mhz) correspondem ao oscilador HS. Um modo interessante de se usar o PIC com um oscilador externo. Embora utilize maior nmero de componentes, esta opo permite um sincronismo entre vrios PICS alimentados com o mesmo clock. A seleo do oscilador feita na palavra de configurao. Os cristais devem operar no modo paralelo. Se voc tentar utilizar um cristal cortado para modo serial, a freqncia resultante pode ser diferente daquela especificada pelo fabricante. Para os modos LP, XT e HS o circuito bsico sempre o mesmo, com variaes nos componentes em funo da freqncia de trabalho e uso de cristais ou ressonadores cermicos. A tabela 3.4 apresenta os valores recomendados para os componentes em vrias situaes, e a figura 3.15 mostra o circuito bsico externo do oscilador no PIC16F877. Observe que o resistor RS neste circuito normalmente no necessrio, exceto no caso de alguns cristais de corte AT. Modo XT XT XT HS HS LP LP XT XT XT HS HS freq(tipo) 455 kHz(ressonador) 2.0 MHz(ressonador) 4.0 MHz (ressonador) 8.0MHz(ressonador) 10 MHz (ressonador) 32 kHz(cristal) 200khz(cristal) 100khz(cristal) 2 MHz (cristal) 4 MHz (cristal) 4 MHz (cristal) 10 MHz (cristal) C1 47-100pF 15-33pF 15-33pF 15-33pF 15-33pF 68-100pF 15-33pF 100-150pF 15-33pF 15-33pF 15-33pF 15-33pF C2 47-100pF 15-33pF 15-33pF 15-33pF 15-33pF 68-100pF 15-33pF 100-150pF 15-33pF 15-33pF 15-33pF 15-33pF

Tabela 3.4 Valores recomendados para o oscilador

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

22

P 1F I 68 C 4

Figura 3.15 Circuito do oscilador do PIC16F877 Para o caso de osciladores RC apresentados na figura 3.16, a freqncia de operao ser dependente dos valores de R, C, da fonte de alimentao, da temperatura ambiente e do circuito integrado utilizado. Esta forma de oscilador no recomendada a no ser para sistemas onde o custo e no a estabilidade da freqncia de oscilao for o mais importante.

Figura 3.16 Circuito para oscilador RC Os valores do resistor devem estar entre 100 K e 3K e o capacitor deve ter como valor mnimo 20 pF e valor mximo 330pF. . Ressonadores cermicos so mais baratos que os cristais de quartzo, e possuem estabilidade adequada para a maioria das aplicaes. Alm disso, no precisam utilizar os capacitores externos. No entanto, so mais difceis de serem encontrados no mercado brasileiro.

O sistema de reset
O PIC16F877 reconhece cinco diferentes tipos de reset, a dizer: Reset no terminal MCLR durante operao normal

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

23

Reset no terminal MCLR durante a execuo de uma instruo de SLEEP. Reset atravs do watchdog (WDT) em operao normal. Reset atravs do WDT durante uma instruo de SLEEP. Reset na energizao do sistema (POR) Cada reset atua de modo diferenciado sobre os diversos registros. Com exceo do reset devido ao WDT ocorrendo quando o processador est no modo SLEEP, que desvia o programa para a prxima instruo aps a instruo de SLEEP, todos os outros resets provocam o desvio imediato do programa para a posio 0H. O POR gerado internamente na CPU quando detectada subida no sinal de alimentao. Para utilizar o POR (sempre indicado para garantir o estado do microcontrolador logo aps a energizao) basta ligar o terminal MCLR com o VDD. Este reset s opera na subida do sinal de alimentao. No detectado a queda da alimentao. Voc deve ter um circuito externo para o caso de desejar detectar a situao onde a VDD cai para um valor abaixo do mnimo permitido pelo fabricante, e, sem chegar a zero, retoma os valores de operao. Esta situao pode levar a um comportamento errtico do microcontrolador. A tabela 3.5 mostra o comportamento do contador de programa e do registrador Status nos vrios tipos de reset. Alguns outros registradores tambm so afetados pelos resets. No item Descrio dos registradores voc tem a descrio detalhada do efeito de cada reset sobre cada registrador especfico.

Condio POR MCLR durante operao normal MCLR durante SLEEP WDT em operao normal WDT durante SLEEP

Contador de programa 00H 00H 00H 00H PC+1

Registrador STATUS 0001 1xxx 000u uuuu 0001 0uuu 0000 1uuu uuu0 0uuu

Tabela 3.5 Valores dos registros PC e STATUS nos diversos RESETS

http://www.solbet.com.br

Consideraes bsicas sobre o PIC16F877A

24

You might also like