Apostila_geral

download Apostila_geral

of 136

Transcript of Apostila_geral

  • 8/2/2019 Apostila_geral

    1/136

    1

    'RFHQWH5LGLV3HUHLUD5LEHLUR

  • 8/2/2019 Apostila_geral

    2/136

    0LFURFRQWURODGRUHV

    0DWHULDO,QVWLWXFLRQDOHVSHFLDOPHQWHHODERUDGR

    SHOR3URIHVVRU5LGLV3HUHLUD5LEHLUR

    &DPDoDUL%$-XOKRGH

  • 8/2/2019 Apostila_geral

    3/136

    3

    6XPiULR

    SUMRIO

    INTRODUO - BLOCOS BSICOS DE UM SISTEMA MICROPROCESSADOR

    CARACTERSTICAS DE MICROCONTROLADORES VERSUS MICROPROCESSADORES

    UNIDADE CENTRAL DE PROCESSAMENTO (CPU)

    ARQUITETURA

    MEMRIAS

    MICROCONTROLADORES

    COMUNICAO SRIE - INTERFACE DE COMUNICAO SERIAL PROGRAMVEL

    UNIDADE DE TEMPORIZAOWATCHDOG

    CONVERSOR ANALGICO - DIGITAL

    MICROCONTROLADORES PIC

    INTRODUO

    RELGIO / CICLO DE INSTRUO

    PIPELINING

    GERADOR DE RELGIO OSCILADOR

    RESET

    UNIDADE CENTRAL DE PROCESSAMENTO

    UNIDADE LGICA ARITMTICA (ALU)

    REGISTROS

    PORTAS - MAPEAMENTO DE ENTRADAS/SADAS

    MEMRIA - MAPEAMENTO E DECODIFICAO DE ENDEREOS

    INTERRUPO

    TEMPORIZADOR - CONTROLADOR E TEMPORIZADOR PROGRAMVEL

    CONJUNTO DE INSTRUES

  • 8/2/2019 Apostila_geral

    4/136

    PROGRAMAO EM LINGUAGEM ASSEMBLY

    MPLAB - SISTEMA DE DESENVOLVIMENTO

    O SMARTPIC - TECLADO E MOSTRADOR (DISPLAY) DE UM SISTEMAMICROPROCESSADO/MICROCONTROLADO

    SMARTPIC - INTERFACE DE COMUNICAO PARALELA PROGRAMVEL

    ANEXOS

    BIBLIOGRAFIA

  • 8/2/2019 Apostila_geral

    5/136

    5

    0,&52&21752/$'25(6,1752'8d2%/2&26%6,&26'(806,67(0$0,&52352&(66$'25Oavano da tecnologia trouxe o aumento da utilizao de sistemas digitais por grande parte das empresas, oemprego de microcontroladores vm sendo requisitado para desenvolvimento da produo, diminuindo os custoscom benefcios para as empresas. Considerando a relao custo/benefcio, os microcontroladores podem no sser usados em empresas de mdio/grande porte e podem tambm, ser utilizados em vrios projetos de eletrnica,na substituio de componentes digitais, obtendo-se assim no final do projeto um melhor acabamento pois ummicrocontrolador ocuparia um menor espao fsico - e uma maior eficincia e praticidade, uma vez que todos oscomandos seriam executados via software. Antes de um aprofundamento no assunto microcontroladores, importante conhecermos um pouco da histria desses componentes desde as suas origens.

    no ano de 1969 que uma equipe de engenheiros japoneses pertencentes companhia BUSICOM chega aosEstados Unidos com a encomenda de alguns circuitos integrados para calculadoras a serem implementadossegundo os seus projetos. A proposta foi entregue INTEL e Marcian Hoff foi o responsvel pela suaconcretizao. Como ele tinha tido experincia de trabalho com um computador (PC) PDP8, lembrou-se deapresentar uma soluo substancialmente diferente em vez da construo sugerida. Esta soluo pressupunha quea funo do circuito integrado seria determinada por um programa nele armazenado. Isso significava que aconfigurao deveria ser mais simples, mas tambm era preciso muito mais memria que no caso do projetoproposto pelos engenheiros japoneses. Depois de algum tempo, embora os engenheiros japoneses tenham tentadoencontrar uma soluo mais fcil, a idia de Marcian venceu e o primeiro microprocessador nasceu. Ao transformaresta idia num produto concreto, Frederico Faggin foi de uma grande utilidade para a INTEL. Ele transferiu-se paraa INTEL e, em somente 9 meses, teve sucesso na criao de um produto real a partir da sua primeira concepo.Em 1971, a INTEL adquiriu os direitos sobre a venda deste bloco integral. Primeiro eles compraram a licena companhia BUSICOM que no tinha a mnima percepo do tesouro que possua. Neste mesmo ano, apareceu nomercado um microprocessador designado por 4004. Este foi o primeiro microprocessador de 4 bits e tinha a

    velocidade de 6 000 operaes (instrues) por segundo 6 KIPS. No muito tempo depois, a companhiaAmericana CTC pediu INTEL e Texas Instruments um microprocessador de 8 bits para usar em terminais.Mesmo apesar da CTC acabar por desistir desta idia, tanto a Intel como a Texas Instruments continuaram atrabalhar no microprocessador e, em Abril de 1972, os primeiros microprocessadores de 8 bits apareceram nomercado com o nome de 8008. Este podia enderear 16KB de memria, possua 45 instrues e tinha a velocidadede 300 000 instrues por segundo. Esse microprocessador foi o pioneiro de todos os microprocessadores atuais. AIntel continuou com o desenvolvimento do produto e, em Abril de 1974 ps c fora um processador de 8 bits com onome de 8080 com a capacidade de enderear 64KB de memria, com 75 instrues e com preos a comearemem $360.

    Uma outra companhia Americana, a Motorola, apercebeu-se rapidamente do que estava a acontecer e, assim, psno mercado um novo microprocessador de 8 bits, o 6800. O construtor chefe foi Chuck Peddle e alm do

    microprocessador propriamente dito, a Motorola foi a primeira companhia a fabricar outros perifricos como os 6820e 6850. Nesta altura, muitas companhias j se tinham apercebido da enorme importncia dos microprocessadores ecomearam a introduzir os seus prprios desenvolvimentos. Chuck Peddle deixa a Motorola para entrar para a MOSTechnology e continua a trabalhar intensivamente no desenvolvimento dos microprocessadores.

    Em 1975, na exposio WESCON nos Estados Unidos, ocorreu um acontecimento crtico na histria dosmicroprocessadores. A MOS Technology anunciou que ia pr no mercado microprocessadores 6501 e 6502 aopreo de $25 cada e que podia satisfazer de imediato todas as encomendas. Isto pareceu to sensacional quemuitos pensaram tratar-se de uma espcie de vigarice, considerando que os competidores vendiam o 8080 e o 6800a $179 cada. Para responder a este competidor, tanto a Intel como a Motorola baixaram os seus preos por

  • 8/2/2019 Apostila_geral

    6/136

    microprocessador para $69,95 logo no primeiro dia da exposio. Rapidamente a Motorola ps uma aco emtribunal contra a MOS Technology e contra Chuck Peddle por violao dos direitos de autor por copiarem aocopiarem o 6800. A MOS Technology deixou de fabricar o 6501, mas continuou com o 6502. O 6502 ummicroprocessador de 8 bits com 56 instrues e uma capacidade de endereamento de 64KB de memria. Devidoao seu baixo custo, o 6502 torna-se muito popular e, assim, instalado em computadores como KIM-1, Apple I,Apple II, Atari, Comodore, Acorn, Oric, Galeb, Orao, Ultra e muitos outros. Cedo aparecem vrios fabricantes do6502 (Rockwell, Sznertek, GTE, NCR, Ricoh e Comodore adquiriram a MOS Technology) que, no auge da suaprosperidade, chegou a vender microprocessadores razo de 15 milhes por ano !

    Contudo, os outros no baixaram os braos. Frederico Faggin deixa a Intel e funda a Zilog Inc.Em 1976, a Zilog anuncia o Z80. Durante a concepo deste microprocessador, Faggin toma uma deciso crtica.Sabendo que tinha sido j desenvolvida uma enorme quantidade de programas para o 8080, Faggin conclui quemuitos vo permanecer fieis a este microprocessador por causa das grandes despesas que adviriam das alteraesa todos estes programas. Assim, ele decide que o novo microprocessador deve ser compatvel com o 8080, ou seja,deve ser capaz de executar todos os programas que j tenham sido escritos para o 8080. Alm destascaractersticas, outras caractersticas adicionais foram introduzidas, de tal modo que o Z80 se tornou ummicroprocessador muito potente no seu tempo. Ele podia enderear diretamente 64KB de memria, tinha 176instrues, um grande nmero de registros, uma opo para refresh de memria RAM dinmica, uma nicaalimentao, maior velocidade de funcionamento, etc. O Z80 tornou-se um grande sucesso.Pode dizer-se que o Z80 se constituiu sem sombra de dvida como o microprocessador de 8 bits com maior

    sucesso no seu tempo. Alm da Zilog, outros novos fabricantes como Mostek, NEC, SHARP e SGS apareceram. OZ80 foi o corao de muitos computadores como o Spectrum, Partner, TRS703, Z-3 e Galaxy, que foram aquiusados.

    Em 1976, a Intel apareceu com uma verso melhorada do microprocessador de 8 bits e designada por 8085.Contudo, o Z80 era to superior a este que, bem depressa, a Intel perdeu a batalha. Ainda que mais algunsmicroprocessadores tenham aparecido no mercado (6809, 2650, SC/MP etc.), j tudo estava ento decidido. J nohavia melhorias introduzidas pelos fabricantes que fundamentassem a troca por um novo microprocessador, assim,o 6502, o Z80 e o 6800, mantiveram-se como os mais representativos microprocessadores de 8 bits desse tempo.

    Em resumo: Na dcada de 70 comearam a ser utilizados microprocessadores em computadores para uma maioreficincia no processamento de dados. O microprocessador Intel foi um dos precursores e, a partir da, houve uma

    preocupao em melhorar cada vez mais o sistema de processamento de dados atravs desses componentes.Baseado na arquitetura de um microprocessador e seus perifricos, foi criado um componente que (fisicamente emuma unidade) comportasse todo um sistema que equivalesse a um microprocessador e seus perifricos; assimsurgiu o microcontrolador.

    &$5$&7(567,&$6'(0,&52&21752/$'25(69(56860,&52352&(66$'25(6

    Um microcontrolador difere de um microprocessador em vrios aspectos. Primeiro e o mais importante, a suafuncionalidade. Para que um microprocessador possa ser usado, outros componentes devem ser adicionados, taiscomo memria e componentes para receber e enviar dados. Isso significa que o microprocessador o verdadeirocorao do computador. Por outro lado, o microcontrolador foi projetado para ter tudo num s chip. Nenhum outro

    componente externo necessrio nas aplicaes, uma vez que todos os perifricos necessrios j esto contidosnele. Assim, poupamos tempo e espao na construo dos dispositivos.

  • 8/2/2019 Apostila_geral

    7/136

    7

    81,'$'(&(175$/'(352&(66$0(172&38A unidade central de processamento controla todas as funes realizadas pelo sistema. A CPU de qualquer sistemade computador contm os seguintes grupos de unidades funcionais:- Registradores e contadores Os registradores e contadores so unidades funcionais usadas para o armazenamentotemporrio de bits dentro da CPU.- Unidade Lgica e Aritmtica (ULA) A unidade lgica e aritmtica a unidade funcional da CPU que executaoperaes lgicas e aritmticas entre palavras binrias, gerando uma outra palavra na sada .- Unidade de controle e sincronizao A unidade de controle e sincronizao coordena e controla todas as unidadesfuncionais em uma seqncia lgica e sincronizada.

    &DPLQKREDUUDPHQWR%XVO "caminho" designa-se por "bus" . Fisicamente ele corresponde a um grupo de 8, 16 ou mais fios.Existem dois tipos de bus: bus de dados e de endereo. O nmero de linhas do primeiro depende da quantidade dememria que desejamos enderear e o nmero de linhas do outro depende da largura da palavra de dados, nonosso caso igual a oito. O primeiro bus serve para transmitir endereos do CPU para a memria e o segundo paraligar todos os blocos dentro do microcontrolador.

    352&(66$0(172O processador ou unidade central de processamento (CPU) a parte do sistema que faz o processamento dasinformaes para que as instrues sejam executadas; as instrues devem estar armazenadas na memria deprograma em seqncia, formando assim o programa . A CPU possui um registrador chamado de contador deprograma (PC) que contm o endereo da prxima instruo que deve ser executada. Toda vez que uma instruo retirada da memria pela unidade central de processamento, automaticamente o contador de programa incrementado para que, aps o processamento desta instruo, quando a CPU for buscar a prxima instruo,baste usar o endereo contido no contador de programa. Toda vez que a CPU ligada ou resetada,automaticamente o seu contador de programa zerado, desta forma, a primeira tarefa que a CPU ir realizar aexecuo da instruo contida na posio de memria de endereo 0000. Cada instruo possui duas fasesdistintas: o ciclo de busca e o ciclo de execuo.

    Durante o ciclo de uma instruo a CPU faz com que o contedo do contador de programa seja colocado nobarramento de endereos, endereando, desta maneira, a posio de memria que contm a instruo que deveser executada.

    81,'$'(6'((175$'$6$'$,2As unidades de entrada/sada so os meios pelos quais o usurio se comunica com o sistema. Essas unidadespossuem interfaces que permitem a conexo com dispositivos chamados de perifricos, tais como teclado,monitores, LCD s, etc.

  • 8/2/2019 Apostila_geral

    8/136

    $548,7(785$O desempenho do microcontrolador depende da sua arquitetura interna, ou seja, do modo em que omicrocontrolador foi projetado tanto para o hardware como para software. No hardware apresentaremos aarquitetura Von-Neumann, na qual se refere o software CISC.

    $UTXLWHWXUD9RQ1HXPDQQNa arquitetura Von-Neumann, os barramentos de dados e endereos

    so compartilhados entre memrias de programas e memrias dedados na comunicao com a CPU (figura1). Nesse tipo de arquitetura,quando a CPU est acessando a memria de programa no podeacessar a memria de dados, porque usa os mesmos barramentos paraas duas memrias.

    $UTXLWHWXUDGH+$59$5'A arquitetura de Harvard um conceito mais recente que a de von-Neumann. Ela adveio da necessidade domicrocontrolador trabalhar mais rapidamente. Na arquitetura de Harvard, a memria de dados est separada damemria de programa. Assim, possvel uma maior fluncia de dados atravs da unidade central deprocessamento e, claro, uma maior velocidade de funcionamento.

    CISC (Complex Instruction Set Code)

    CISC: Conjunto de Instrues Complexo, quanto maior a complexidade da instruo que deve ser executada, maisespao ela ocupa no chip. Desse modo, chegar um momento que passaremos a ter um set de instrues togrande que comear a afetar o desempenho, dificultando a possibilidade de implementar outras funesimportantes. Ter um complexo (grande) set de intrues CISC nem sempre interessante para um bom

    desempenho do processador. Numa anlise feita pelo laboratrio da IBM sobre como estavam sendo usado osdiversos tipos de instrues, concluiram que num microprocessador que usava um set de instrues de, porexemplo, 200 instrues, a maior parte do processamento era feita apenas com umas 10 instrues. Uma grandeparte das instrues era pouco usada, s vezes at uma nica vez em um longo programa, de modo que elaspoderiam ser implementadas pelas instrues bsicas mais usadas. Da o aparecimento da nova arquitetura com oset de instrues reduzido RISC (Reduced Instruction Set Code).

  • 8/2/2019 Apostila_geral

    9/136

    9

    0(05,$6

    Memrias so os dispositivos que armazenam informaes e so usadas em todos os sistemas microcontrolados. Amaneira mais fcil de explicar descrev-la como uma grande prateleira cheia de gavetas. Se supusermos quemarcamos as gavetas de modo a elas no se confundirem umas com as outras, ento o seu contedo serfacilmente acessvel. Basta saber a designao da gaveta e o seu contedo ser conhecido. Existem vrios tipos dememrias que podem ser classificadas por vrios tens diferentes. Abaixo os principais:

    $FHVVRAs memrias armazenam informaes em lugares que se denominam localidades de memria. Cada localidade dememria guarda um conjunto de bits e tem um endereo. No acesso desses endereos tem-se:2WHPSRGHDFHVVR: o tempo que a memria necessita para que sejam escritos ou lidos os dados em suaslocalidades;$FHVVRVHTHQFLDO: nas memrias que tm acesso seqencial, para acessar um endereo de uma certalocalidade, precisa-se passar por endereos intermedirios (as memrias mais comuns desse tipo so as queutilizam fita magntica, por exemplo, Fitas DAT, ZIP DRIVE);$FHVVRDOHDWyULRas memrias que utilizam esse tipo de acesso so as que permitem que seja acessado qualquerdado em qualquer endereo sem a necessidade de ter que passar por outros endereos intermedirios.9RODWLOLGDGH0HPyULDVYROiWHLV: so aquelas que perdem as informaes quando cortada sua alimentao. Somemrias que geralmente usam como elemento de memria o flip-flop.0HPyULDVQmRYROiWHLV: so memrias que mesmo desligando-se sua alimentao, no perdem as informaesarmazenadas. Dentre essas se destacam as magnticas e as eletrnicas ROM, PROM, EPROM, EEPROM , eoutras.

    0HPyULDVGHHVFULWDOHLWXUDRXVRPHQWHOHLWXUD(VFULWDOHLWXUD: so memrias que podem ser acessadas pelaCPU tanto para leitura quanto para escrita; elas so usadas para armazenar dados que sero utilizados durante aexecuo do programa (memrias RAM s, EEPROM s). 6RPHQWHOHLWXUD: so as memrias que armazenam oprograma, ou seja so as memrias que s sero lidas pela CPU e que j vm gravadas para o sistema (memriasROM s ,PROM s , etc).7LSRGHDUPD]HQDPHQWR(VWiWLFDV: memrias estticas so aquelas nas quais as informaes permanecemarmazenadas enquanto no houver escrita ou no faltar energia.'LQkPLFDV: memrias dinmicas so memrias que perdem informaes armazenadas mesmo com alimentao.Na RAM dinmica (ou DRAM) isso acontece porque cada clula tem um transistor MOSFET e um capacitor quearmazena um dado (1bit).

  • 8/2/2019 Apostila_geral

    10/136

    7LSRVGHPHPyULDVA seguir sero vistos alguns tipos de memrias existentes no mercado e que so muitoutilizadas:0HPyULDV5$0(Random Acces Memory) Essas memrias so de acesso aleatrio, que podem ser acessadas aqualquer momento e em qualquer endereo. Elas podem ser estticas ou dinmicas e tambm podem ser gravadaspelo sistema com a tenso de 5V. So memrias consideradas volteis.0HPyULDV520(Ready Only Memory) Essas memrias so utilizadas no sistema somente para a leitura.0HPyULDV3520(Programmable Ready Only Memory) Essas memrias so utilizadas no sistema somente para aleitura; geralmente usadas como memrias de programa, s podem ser gravadas com gravadores especficos e s

    uma vez. So as memrias no volteis;0HPyULDV(3520(Erasable Programmable Ready Only Memory) Essas memrias so utilizadas no sistemasomente para a leitura , tambm empregadas como memrias de programa e s podem ser gravadas comgravadores especficos. Podem ser apagadas por raios ultravioleta e regravadas por muitas vezes. So chamadasmemrias no volteis.0HPyULDV((3520RX(3520(Electrically Erasable Programmable Ready Only Memory) Essas memriaspodem ser usadas no sistema tanto para leitura como para escrita, podem ser gravadas com gravadores especficosou pelo sistema; so apagadas eletricamente e regravadas por muitas vezes; so consideradas memrias novolteis.0HPyULDV3(520(Programmable Erasable Ready Only Memory) Uma linha de memrias programveis eapagveis apenas para leitura, de 3V e 5V, apenas dentro do sistema. Fabricadas com a avanada tecnologiaCMOS, no volteis, suas caractersticas incluem: Operao de leitura e programao em apenas 3V e 5V

    Proteo de dados de software e hardware Operao de programao por setor 1000 ciclos de programa Reteno de dados de 10 anos Baixa dissipao de potncia Tempo de ciclo de programa rpido Deteco defim de programa0HPyULDV)/$6+A memria FLASH um dispositivo de armazenamento confivel, no voltil, de boa relaocusto/ benefcio e que possui caractersticas de leitura da EPROM, EEPROM e SRAM , porm quando aplica-se12V sobre o dispositivo, este pode ser gravado com base em bytes. No caso da memria FLASH - 5V estesdispositivos foram projetados para serem programados dentro do sistema com o fornecimento padro de 5V. Emprogramadores de EPROM convencionais no h necessidade de 12Vpp, nem para programao, nem paraapagamento. composta de uma arquitetura de apagamento de setor (qualquer combinao pode ser apagadasimultaneamente) e 100.000 ciclos de apagamento/ programao.0HPyULD)/$6+),/(A memria FLASHFILE, simetricamente bloqueada, da Intel, oferece uma soluo no voltilcom leitura e programao de mais alta densidade para armazenamento em massa. O armazenamento de

    aplicaes de software e a operao com cdigo de sistema em RFAs (Residential Flash Arrays ) proporcionamexecuo instantnea, rpida e no local (in place). RFAs so protegidos tambm contra o envelhecimento dosoftware, j que este pode ser atualizado no sistema. O software RFA prolonga a vida da bateria e aumenta aconfiabilidade do sistema atravs da reduo do nmero de acessos ao diskdrive. 100.000 ciclos de apagamento/programao.0HPyULDV),(/'Estes dispositivos so para utilizao em filmes digitais e sistemas multimdia. Eles fornecemdados atravs de acesso serial de alta velocidade. Sua capacidade de memria preenche um arquivo de uma telade TV NTSC. Cada um dos bits possui porta de leitura e gravao assncronas, de controle independente adiferentes velocidades de clock, proporcionando uma operao FIFO , renovando a clulas de armazenamento RAMautomaticamente.0HPyULDV),)2Os dispositivos FIFO proporcionam armazenamento temporrio de dados em sequncia de talforma que a primeira palavra na porta de entrada ser a primeira na porta de sada. As portas operam de formaindependente e os dados podem ser lidos e gravados em velocidades diferentes. Os dispositivos FIFO possuemposies de memria que inibem a entrada de dados adicionais caso estejam ocupadas, podendo apenas enviardados armazenados para fora. O tempo utilizado para completar uma operao chama-se tempo de acesso, essevalor pode determinar a velocidade do sistema no qual o dispositivo est operando.0HPyULDV6HULDLVEstes dispositivos so de tamanho reduzido podendo ser ligados a um barramento serial IC(Inter-Integrated Circuit Bus) ou SPI (Serial Peripheral Interface) junto com outros dispositivos seriais, com muitasvantagens em relao s memrias paralelas.0,&52&21752/$'25(6

  • 8/2/2019 Apostila_geral

    11/136

    11

    Existem no mercado muitos tipos de microcontroladores, sendo o 8051 (INTEL) e o PIC (MICROCHIP) os maispopulares. O microcontrolador tambm conhecido com microcomputador de um s chip reunindo num nicocomponente vrios elementos de um sistema, antes baseado em microprocessador e que eram desempenhadospor vrios componentes independentes tais como RAM, ROM, comunicao serial, etc. A memria de programapode ser ROM, FLASH ou outro tipo. No caso do microcontrolador 8051 ele pode funcionar como ummicrocontrolador ou como um microprocessador, no caso do PIC, funciona como Microcontrolador. A ATMEL possuiuma famlia de componentes com as mesmas caractersticas do 8051, alguns at com as mesmas pinagens dos

    registradores; outros com pinagens diferentes, mas com o mesmo set de instrues, com clock de 12 MHz ataproximadamente 35 MHz. A DALLAS Semicondutor tem um microcontrolador de alta performance, de at 90MHz,compatvel com 8051.

  • 8/2/2019 Apostila_geral

    12/136

    &2081,&$d26e5,(,17(5)$&('(&2081,&$d26(5,$/352*5$09(/

    A possibilidade de comunicar com o mundo exterior deve ser prevista no Sistema Digital. Contudo, esta maneira decomunicar tem os seus inconvenientes. Um dos inconvenientes bsicos o nmero de linhas que necessriousarmos para transferir dados. E se for necessrio transferi-los a uma distncia de vrios quilmetros? O nmero delinhas vezes o nmero de quilmetros no atesta a economia do projeto. Isto leva-nos a ter que reduzir o nmero delinhas de modo a que a funcionalidade se mantenha. Suponha que estamos a trabalhar apenas com trs linhas e

    que uma linha usada para enviar dados, outra para receber e a terceira usada como linha de referncia tanto dolado de entrada como do lado da sada. Para que isto trabalhe necessario definir as regras para a troca de dados.A este conjunto de regras chama-se protocolo. Este protocolo deve ser definido com antecedncia de modo que nohaja mal entendidos entre as partes que possam comunicar entre si. Por exemplo, se um homem fala em francs eo outro em ingls, altamente improvvel que efetivamente e rapidamente, ambos se entendam. Vamos supor quetemos o seguinte protocolo. A unidade lgica "1" colocada na linha de transmisso at que a transferncia seinicie. Assim que isto acontece, a linha passa para nvel lgico '0' durante um certo perodo de tempo (que vamosdesignar por T), assim, do lado da recepo saberemos que existem dados para receber e, o mecanismo derecepo, vai ativar-se. Regressemos agora ao lado da emisso e comecemos a pr zeros e uns lgicos na linha detransmisso correspondentes aos bits, primeiro o menos significativo e finalmente o mais significativo. Vamosesperar que cada bit permanea na linha durante um perodo de tempo igual a T, e, finalmente, depois do oitavo bit,vamos pr novamente na linha o nvel lgico "1" , o que assinala a transmisso de um dado. O protocolo que

    acabamos de descrever designado na literatura profissional por NRZ (No Retorno a Zero).

  • 8/2/2019 Apostila_geral

    13/136

    13

    8QLGDGHGHWHPSRUL]DomRAgora j foi visto que em uma unidade de comunicao, o sistema digital pode receber, enviar e processar dados.

    Para utilizar isto na indstria, so necessrios ainda, mais alguns blocos. Um deles o bloco de temporizao quepode proporcionar informaes sobre hora, durao, protocolo, etc. A unidade bsica do temporizador umcontador que na realidade um registro cujo contedo aumenta de uma unidade num intervalo de tempo fixo,assim, anotando o seu valor durante os instantes de tempo T1 e T2 e calculando a sua diferena, saberemosquantidade de tempo decorrida. Esta uma parte muito importante do microcontrolador, cujo domnio vai requerermuito da nossa ateno.

    :DWFKGRJNos interessa a fluncia da execuo do programa pelo microcontrolador durante a sua utilizao. Suponha quecomo resultado de qualquer interferncia (que ocorre frequentemente num ambiente industrial), o microcontroladorpra de executar o programa ou, ainda pior, trabalha incorretamente.

    Claro que, quando isto acontece com um computador, ns simplesmente pressionamos o boto de reset econtinuamos a trabalhar. Contudo, no caso do microcontrolador ns no podemos resolver o nosso problema destemodo, porque no temos boto. Para ultrapassar este obstculo, torna-se necessrio introduzir no nosso modelo umnovo bloco chamado watchdog (co de guarda). Este bloco de fato outro contador que est continuamentecontando e que o nosso programa resseta (coloca zero) sempre que executado corretamente. No caso doprograma "travar", o zero no vai ser escrito e o contador, por si s, far o reset do microcontrolador quandoalcanar o seu valor mximo. Isto vai fazer com que o programa reinicie de novo e desta vez corretamente. Este um elemento importante para que qualquer programa se execute fiavelmente, sem precisar da interveno do serhumano.

    &RQYHUVRUDQDOyJLFRGLJLWDO

    Como os sinais dos perifricos podem ser substancialmente diferentes daqueles que o microcontrolador pode

    entender (zero e um), eles devem ser convertidos num formato que possa ser compreendido pelo microcontrolador.Esta tarefa executada por intermdio de um bloco destinado converso analgica-digital ou com um conversorA/D. Este bloco vai ser responsvel pela converso de uma informao de valor analgico para um nmero binrio epelo seu trajeto atravs do bloco do CPU, de modo a que este possa processar de imediato.

  • 8/2/2019 Apostila_geral

    14/136

    Aconfigurao do microcontrolador possui estes blocos, tudo o que falta introduzir num nico CHIP eletrnico quepoder acessar aos blocos internos atravs dos pinos deste componente. A figura a seguir, ilustra o aspecto internode um microcontrolador.

    Numa aplicao real, um microcontrolador, por si s, no suficiente. Alm dele, necessrio um programa que vaiser executado e de mais alguns elementos que constituiro uma interface lgica para outros elementos.

  • 8/2/2019 Apostila_geral

    15/136

    15

    3URJUDPDEscrever um programa uma parte especial do trabalho com microcontroladores e designado por "programao".Seja o pequeno programa numa linguagem que criamos e que todos sero capazes de compreender.

    ,1,&,25(*,6752/2&$/B'(B0(025,$B$5(*,6752/2&$/B'(B0(025,$B%3257B$5(*,67525(*,6752),0

    O programa adiciona os contedos de dois locais de memria e coloca a soma destes contedos no porta A. Aprimeira linha do programa manda mover o contedo do local de memria "A" para um dos registros da unidadecentral de processamento. Como necessitamos tambm de outra parcela, vamos colocar o outro contedo em outroregistro da unidade central de processamento (CPU). A instruo seguinte pede ao CPU para adicionar oscontedos dos dois registros e enviar o resultado obtido para a porta A, de modo a que o resultado desta adioseja visvel para o mundo exterior. Para um problema mais complexo, naturalmente o programa que o resolve sermaior.

    A tarefa de programao pode ser executada em vrias linguagens tais como o Assembly, C e Basic que so aslinguagens normalmente mais usadas. O Assembly pertence ao grupo das linguagens de baixo nvel que implicamum trabalho de programao lento, mas que oferece os melhores resultados quando se pretende poupar espao dememria e aumentar a velocidade de execuo do programa. Se trata da linguagem mais frequentemente usada naprogramao de microcontroladores. Os programas na linguagem C so mais fceis de escrever e compreender,mas, tambm, so mais lentos a serem executados que os programas assembly. Basic a mais fcil de todas parase aprender e as suas instrues so semelhantes maneira de um ser humano se exprimir, mas tal como alinguagem C, tambm de execuo mais lenta que o assembly. Em qualquer caso, antes que escolha entre umadestas linguagens, necessrio examinar cuidadosamente os requisitos de velocidade de execuo, de espao dememria a ocupar e o tempo que vai demorar a fazer o programa em assembly.Depois do programa escrito, necessitamos introduzir o microcontrolador num dispositivo para trabalhar. Para queisto acontea, devem-se adicionar mais alguns componentes externos. Primeiro temos que dar vida ao

    microcontrolador fornecendo-lhe a tenso (a tenso eltrica necessria para que qualquer instrumento eletrnicofuncione) e o oscilador cujo papel anlogo ao do corao que bate no ser humano. A execuo das instrues doprograma regulada pelas pulsaes do oscilador. Logo que aplicada a tenso, o microcontrolador executa umaverificao dele prprio, vai para o princpio do programa e comea a execut-lo. O modo como o dispositivo vaitrabalhar depende de muitos parmetros, os mais importantes dos quais so a competncia da pessoa quedesenvolve o hardware e do programador que, com o seu programa, deve tirar o mximo do dispositivo.

  • 8/2/2019 Apostila_geral

    16/136

    0LFURFRQWURODGRUHV3,&,QWURGXomR

    O3,&3HULSKHUDO,QWHUIDFH&RQWUROHUpertence a uma classe de microcontroladores de 8 bits, com umaarquitetura RISC. A estrutura genrica a do mapa que se segue, que nos mostra os seus blocos bsicos.

    0HPyULDGHSURJUDPD(FLASH) - para armazenar o programa que se escreveu.Como a memria fabricada com tecnologia FLASH pode ser programa e limpa mais que uma vez. ela torna-seadequada para o desenvolvimento de dispositivos.

    ((3520 - memria dos dados que necessitam ser guardados quando a alimentao desligada. Normalmente usada para guardar dados importantes que no se podem perder quando a alimentao, de repente, vai abaixo.Um exemplo deste tipo de dados a temperatura fixada para os reguladores de temperatura. Se, durante umaquebra de alimentao, se perdessem dados, ns precisaramos de um novo ajuste quando a alimentao fosserestabelecida. Assim, o nosso dispositivo, perderia eficcia.

    5$0 - memria de dados usada por um programa, durante a sua execuo.Na RAM, so guardados todos os resultados intermdios ou dados temporrios durante a execuo do programa eque no so cruciais para o dispositivo, depois de ocorrer uma falha na alimentao.

    3257$6so ligaes fsicas entre o microcontrolador e o mundo exterior.

    &217$'257(0325,=$'25 um registro de 8 bits no interior do microcontrolador que trabalhaindependentemente do programa. No fim de cada conjunto de quatro ciclos de relgio do oscilador, ele incrementa ovalor armazenado, at atingir o valor mximo (255), nesta altura recomea a contagem a partir de zero. Como nssabemos o tempo exato entre dois incrementos sucessivos do contedo do temporizador, podemos utilizar este paramedir intervalos de tempo, o que o torna muito til em vrios dispositivos.

    81,'$'('(352&(66$0(172&(175$/ faz a conexo com todos os outros blocos do microcontrolador. Elecoordena o trabalho dos outros blocos e executa o programa do utilizador.

    &,6&5,6&

    O PIC tem uma arquitetura RISC. Este termo encontrado, muitas vezes, na literatura sobre computadores e nonecessita ser explicada aqui, mais detalhadamente. A separao da memria de dados da memria de programa,faz com que as instrues possam ser representadas por palavras de mais que 8 bits. O PIC, dependendo domodelo, usa 12, 13 ou 14 bits para cada instruo, o que permite que todas as instrues ocupem uma s palavrade instruo. tambm tpico da arquitetura Harvard ter um repertrio com menos instrues que a de Von-Neumann, instrues essas, geralmente executadas apenas num nico ciclo de relgio.Os microcontroladores com a arquitetura Harvard, so tambm designados por "microcontroladores RISC". RISCprovm de Conjunto Reduzido de Cdigos de Instrues (Reduced Instruction Set Code). Os microcontroladorescom uma arquitetura Von-Neumann so designados por 'microcontroladores CISC'. O nome CISC deriva de

    Conjunto Complexo de Cdigos de Instrues (Complex Instruction Set Computer).Como o PIC um microcontrolador RISC, disso resulta que possui um nmero reduzido de instrues, maisprecisamente 35 (por exemplo, os microcontroladores da Intel e da Motorola tm mais de cem instrues). Todasestas instrues so executadas num nico ciclo, exceto no caso de instrues de salto e de ramificao. De acordocom o que o seu fabricante refere, o PIC geralmente atinge resultados de 2 para 1 na compresso de cdigo e 4para 1 na velocidade, em relao aos outros microcontroladores de 8 bits da sua classe.

    $SOLFDo}HV

  • 8/2/2019 Apostila_geral

    17/136

    17

    O PIC, perfeitamente adequado para muitas variedades de aplicaes, como a indstria automvel, sensoresremotos, fechaduras eltricas e dispositivos de segurana. tambm um dispositivo ideal para cartes inteligentes,bem como para dispositivos alimentados por baterias, por causa do seu baixo consumo.As memrias EEPROM e FLASH, fazem com que se torne mais fcil usar microcontroladores em dispositivos ondeo armazenamento permanente de vrios parmetros, seja necessrio (cdigos para transmissores, velocidade deum motor, freqncias de recepo, etc.). O baixo custo, baixo consumo, facilidade de manuseamento eflexibilidade fazem com que o PIC possa ser utilizado em reas em que os microcontroladores no eramanteriormente (exemplo: funes de temporizao, substituio de interfaces em sistemas de grande porte,aplicaes de co-processamento, etc.).A possibilidade deste chip de ser programvel no sistema (usando somente dois pinos para a transferncia dedados), do flexibilidade do produto, mesmo depois de a sua montagem e teste estarem completos.Esta capacidade, pode ser usada para criar linhas de produo e montagem, para armazenar dados de calibragemdisponveis apenas quando se proceder ao teste final ou, ainda, para aperfeioar os programas presentes emprodutos acabados.

    5HOyJLRFLFORGHLQVWUXomR

    O relgio (clock), quem d o sinal de partida para o microcontrolador e obtido a partir de um circuito externo

    chamado oscilador. Se considerarmos que um microcontrolador um relgio de sala, o nosso clock corresponderiaao pndulo e emitiria um rudo correspondente ao deslocar do pndulo. Tambm, a fora usada para dar corda aorelgio, podia comparar-se alimentao eltrica.O clock do oscilador, ligado ao microcontrolador atravs do pino OSC1, aqui, o circuito interno do microcontroladordivide o sinal de clock em quatro fases, Q1, Q2, Q3 e Q4 que no se sobrepem. Estas quatro pulsaes perfazemum ciclo de instruo (tambm chamado ciclo de mquina) e durante o qual uma instruo executada.A execuo de uma instruo, antecedida pela extrao (busca, fetch) da instruo que est na linha seguinte. Ocdigo da instruo extrado da memria de programa em Q1 e escrito no registro de instruo em Q4.A decodificao e execuo dessa mesma instruo, faz-se entre as fases Q1 e Q4 seguintes. No diagrama embaixo, podemos observar a relao entre o ciclo de instruo e o clock do oscilador (OSC1) assim como as fasesQ1-Q4.O contador de programa (Program Counter ou PC) guarda o endereo da prxima instruo a ser executada.

  • 8/2/2019 Apostila_geral

    18/136

    3LSHOLQLQJ

    Cada ciclo de instruo inclui as fases Q1, Q2, Q3 e Q4. A busca do cdigo de uma instruo da memria deprograma, feita num ciclo de instruo, enquanto que a sua decodificao e execuo, so feitos no ciclo deinstruo seguinte. Contudo, devido sobreposio pipelining (o microcontrolador ao mesmo tempo que executauma instruo busca simultaneamente da memria o cdigo da instruo seguinte), podemos considerar que, paraefeitos prticos, cada instruo demora um ciclo de instruo a ser executada. No entanto, se a instruo provocaruma mudana no contedo do contador de programa (PC), ou seja, se o PC no tiver que apontar para o endereo

    seguinte na memria de programa, mas sim para outro (como no caso de saltos ou de chamadas de subrotinas),ento dever considerar-se que a execuo desta instruo demora dois ciclos. Isto acontece, porque a instruovai ter que ser processada de novo, mas, desta vez, a partir do endereo correto. O ciclo de chamada comea nafase Q1, escrevendo a instruo no registrador de instruo (Instruction Register IR). A decodificao e execuocontinua nas fases Q2, Q3 e Q4 do clock.

    )OX[RJUDPDGDV,QVWUXo}HVQR3LSHOLQH

    7&

  • 8/2/2019 Apostila_geral

    19/136

    19

    *HUDGRUGHUHOyJLRRVFLODGRU

    O circuito do oscilador usado para fornecer um relgio (clock), ao microcontrolador. O clock necessrio para queo microcontrolador possa executar um programa ou as instrues de um programa.

    7LSRVGHRVFLODGRUHV

    O PIC pode trabalhar com quatro configuraes de oscilador. Uma vez que as configuraes com um oscilador decristal e resistor-capacitor (RC) so aquelas mais frequentemente usadas.Quando o oscilador de cristal, a designao da configurao de XT, se o oscilador for uma resistncia em sriecom um capacitor, tem a designao RC. Isto importante, porque h necessidade de optar entre os diversos tiposde oscilador, quando se escolhe um microcontrolador.

    2VFLODGRU;7

    O oscilador de cristal est contido num envlucro de metal com dois pinos onde foi escrita a freqncia a que ocristal oscila. Dois condensadores cermicos devem ligar cada um dos pinos do cristal massa. Casos h em quecristal e condensadores esto contidos no mesmo encapsulamento, tambm o caso do ressonador cermico ao

    lado representado. Este elemento tem trs pinos com o pino central ligado massa e os outros dois pinos ligadosaos pinos OSC1 e OSC2 do microcontrolador. Quando projetamos um dispositivo, a regra colocar o oscilador toperto quanto possvel do microcontrolador, de modo a evitar qualquer interferncia nas linhas que ligam o osciladorao microcontrolador.

    26&,/$'255&

    Em aplicaes em que a preciso da temporizao no um fator crtico, o oscilador RC torna-se mais econmico.A freqncia de ressonncia do oscilador RC depende da tenso de alimentao, da resistncia R, capacidade C eda temperatura de funcionamento.

    O diagrama acima, mostra como um oscilador RC deve ser ligado a um PIC (16F84). Com um valor para aresistncia R abaixo de 2,2 K, o oscilador pode tornar-se instvel ou pode mesmo parar de oscilar. Para um valormuito grande R (1M por exemplo), o oscilador torna-se muito sensvel umidade e ao rudo. recomendado que ovalor da resistncia R esteja compreendido entre 3K e 100K. Apesar de o oscilador poder trabalhar semcondensador externo (C = 10 pF), conveniente, ainda assim, usar um condensador acima de 20 pF para evitar o

  • 8/2/2019 Apostila_geral

    20/136

    rudo e aumentar a estabilidade. Qualquer que seja o oscilador que se est a utilizar, a freqncia de trabalho domicrocontrolador a do oscilador dividida por 4. A freqncia de oscilao dividida por 4 tambm fornecida nopino OSC2/CLKOUT e, pode ser usada, para testar ou sincronizar outros circuitos lgicos pertencentes ao sistema.

    Relao entre o sinal de clock e os ciclos de instruo

    Ao ligar a alimentao do circuito, o oscilador comea a oscilar. Primeiro com um perodo de oscilao e umaamplitude instveis, mas, depois de algum tempo, tudo estabiliza.

    Sinal de clock do oscilador do microcontrolador depois de ser ligada a alimentao

    Para evitar que esta instabilidade inicial do clock afete o funcionamento do microcontrolador, ns necessitamos demanter o microcontrolador no estado de reset enquanto o clock do oscilador no estabiliza. O diagrama em cima,

    mostra uma forma tpica do sinal fornecido por um oscilador de cristal de quartzo ao microcontrolador quando se ligaa alimentao.

    5HVHW

    O reset usado para pr o microcontrolador num estado conhecido. Na prtica isto significa que s vezes omicrocontrolador pode comportar-se de um modo inadequado em determinadas condies indesejveis. Para que oseu funcionamento normal seja restabelecido, preciso fazer o reset do microcontrolador, isto significa que todos osseus registros vo conter valores iniciais pr-definidos, correspondentes a uma posio inicial. O reset no usadosomente quando o microcontrolador no se comporta da maneira que ns queremos, mas, tambm pode ser usado,quando ocorre uma interrupo por parte de outro dispositivo, ou quando se quer que o microcontrolador estejapronto para executar um programa .

    De modo a prevenir a ocorrncia de um zero lgico acidental no pino MCLR (a linha por cima de MCLR significa osinal de reset ativado por nvel lgico baixo), o pino MCLR tem que ser ligado atravs de uma resistncia ao ladopositivo da alimentao. Esta resistncia deve ter um valor entre 5 e 10K. Uma resistncia como esta, cuja funo conservar uma determinada linha a nvel lgico alto, chamada resistncia de pull up.

  • 8/2/2019 Apostila_geral

    21/136

    21

    Utilizao do circuito interno de reset

    O microcontrolador PIC, admite vrias formas de reset:

    a) Reset quando se liga a alimentao, POR (Power-On Reset)b) Reset durante o funcionamento normal, quando se pe a nvel lgico baixo o pino MCLR do microcontrolador.c) Reset durante o regime de SLEEP (dormir).d) Reset quando o temporizador do watchdog (WDT) transborda (passa para 0 depois de atingir o valor mximo).

    e) Reset quando o temporizador do watchdog (WDT) transborda estando no regime de SLEEP.

    Os reset mais importantes so o (a) e o (b). O primeiro, ocorre sempre que ligada a alimentao domicrocontrolador e serve para trazer todos os registros para um estado inicial. O segundo que resulta da aplicaode um valor lgico baixo ao pino MCLR durante o funcionamento normal do microcontrolador e, usado muitasvezes, durante o desenvolvimento de um programa.

    Durante um reset, os locais de memria da RAM (registros) no so alterados. Ou seja, os contedos destesregistros, so desconhecidos durante o restabelecimento da alimentao, mas mantm-se inalterados durantequalquer outro reset. Ao contrrio dos registros normais, os SFR (registros com funes especiais) so reiniciadoscom um valor inicial pr-definido. Um dos mais importantes efeitos de um reset, introduzir no contador deprograma (PC), o valor zero (0000), o que faz com que o programa comece a ser executado a partir da primeira

    instruo deste.

    5HVHWTXDQGRRYDORUGDDOLPHQWDomRGHVFHDEDL[RGROLPLWHSHUPLWLGR%URZQRXW5HVHW

    O impulso que provoca o reset durante o estabelecimento da alimentao (power-up), gerado pelo prpriomicrocontrolador quando detecta um aumento na tenso Vdd (numa faixa entre 1,2V e 1,8V). Esse impulso perduradurante 72ms, o que, em princpio, tempo suficiente para que o oscilador estabilize. Esse intervalo de tempo de72ms definido por um temporizador interno PWRT, com um oscilador RC prprio. Enquanto PWRT estiver ativo, omicrocontrolador mantm-se no estado de reset. Contudo, quando o dispositivo est a trabalhar, pode surgir umproblema no resultante de uma queda da tenso para 0 volts, mas sim de uma queda de tenso para um valorabaixo do limite que garante o correto funcionamento do microcontrolador. Trata-se de um fato muito provvel deocorrer na prtica, especialmente em ambientes industriais onde as perturbaes e instabilidade da alimentao

    ocorrem frequentemente. Para resolver este problema, precisamos de estar certos de que o microcontrolador entrano estado de reset de cada vez que a alimentao desce abaixo do limite aprovado.

  • 8/2/2019 Apostila_geral

    22/136

    Exemplos de quedas na alimentao abaixo do limite

    Se, de acordo com as especificaes eltricas, o circuito interno de reset de um microcontrolador no satisfizer asnecessidades, ento, devero ser usados componentes eletrnicos especiais, capazes de gerarem o sinal de resetdesejado. Alm desta funo, estes componentes, podem tambm cumprir o papel de vigiarem as quedas de tenso

    para um valor abaixo de um nvel especificado. Quando isto ocorre, aparece um zero lgico no pino MCLR, quemantm o microcontrolador no estado de reset, enquanto a voltagem no estiver dentro dos limites que garantemum correto funcionamento.

    8QLGDGH&HQWUDOGH3URFHVVDPHQWR

    Como visto anteriormente, a unidade central de processamento (CPU) o crebro de um microcontrolador. Essaparte responsvel por buscar a instruo, decodificar essa instruo e, finalmente, execut-la.

    Esquema da unidade central de processamento - CPU

    A unidade central de processamento interliga todas as partes do microcontrolador de modo a que este se comportecomo um todo. Uma das suas funes mais importantes , seguramente, decodificar as instrues do programa.

  • 8/2/2019 Apostila_geral

    23/136

    23

    Quando o programador escreve um programa, as instrues assumem um claro significado como o caso, porexemplo, de MOVLW 0x20. Contudo, para que um microcontrolador possa entender, esta forma escrita de umainstruo tem que ser traduzida numa srie de zeros e uns que o opcode (operation code ou cdigo daoperao). Esta passagem de uma palavra escrita para a forma binria executada por tradutores ou compiladoresda linguagem assembly (ou simplesmente assembler). O cdigo da instruo extrado da memria de programa tem

    que ser decodificado pela unidade central de processamento (CPU). A cada uma das instrues do repertrio domicrocontrolador, corresponde um conjunto de aes a concretizar. Estas aes podem envolver transferncias dedados de um local de memria para outro, de um local de memria para os portos, e diversos clculos, pelo que, seconclui que, o CPU, tem que estar ligado a todas as partes do microcontrolador. Os bus de dados e o de endereopermitem-nos fazer isso.

    8QLGDGH/yJLFD$ULWPpWLFD$/8A unidade lgica aritmtica (ALU Arithmetic Logic Unit), responsvel pela execuo de operaes de adio,subtrao, deslocamento (para a esquerda ou para a direita dentro de um registro) e operaes lgicas (and, or, xore not). O PIC contm uma unidade lgica aritmtica de 8 bits e registros de uso genrico tambm de 8 bits.

    Unidade lgica-aritmtica e como funciona

    Operando o contedo sobre o qual uma operao incide. Nas instrues com dois operandos, geralmente umoperando est contido no registro de trabalho W (working register) e o outro operando ou uma constante ou entoest contido num dos outros registros. Esses registros podem ser Registros de Uso Genrico (General PurposeRegisters GPR) ou Registros com funes especiais (Special Function Registers SFR). Nas instrues s comum operando, um dos operandos o contedo do registro W ou o contedo de um dos outros registros. Quando soexecutadas operaes lgicas ou aritmticas como o caso da adio, a ALU controla o estado dos bits (queconstam do registro de estado STATUS). Dependendo da instruo a ser executada, a ALU, pode modificar os

    valores bits do Carry (C), Carry de dgito (DC) e Z (zero) no registro de estado - STATUS.

  • 8/2/2019 Apostila_geral

    24/136

    Diagrama bloco detalhado do microcontrolador PIC16F84

    5HJLVWUR67$786

    ELW&&DUU\TransporteEste bit afetado pelas operaes de adio, subtrao e deslocamento. Toma o valor 1 (set), quando um valormais pequeno subtrado de um valor maior e toma o valor 0 (reset) quando um valor maior subtrado de ummenor.1= Ocorreu um transporte no bit mais significativo0= No ocorreu transporte no bit mais significativoO bit C afetado pelas instrues ADDWF, ADDLW, SUBLW e SUBWF.

  • 8/2/2019 Apostila_geral

    25/136

    25

    ELW'& (Digit Carry) Transporte de dgitoEste bit afetado pelas operaes de adio, subtrao. Ao contrrio do anterior, DC assinala um transporte do bit3 para o bit 4 do resultado. Este bit toma o valor 1, quando um valor mais pequeno subtrado de um valor maior etoma o valor 0 quando um valor maior subtrado de um menor.1= Ocorreu um transporte no quarto bit mais significativo0= No ocorreu transporte nesse bit

    O bit DC afetado pelas instrues ADDWF, ADDLW, SUBLW e SUBWF.

    ELW=(bit Zero) Indicao de resultado igual a zero.Este bit toma o valor 1 quando o resultado da operao lgica ou aritmtica executada igual a 0.1= resultado igual a zero0= resultado diferente de zero

    ELW3' (Bit de baixa de tenso Power Down)Este bit posto a 1 quando o microcontrolador alimentado e comea a trabalhar, depois de um reset normal edepois da execuo da instruo CLRWDT. A instruo SLEEP pe este bit a 0 ou seja, quando o microcontroladorentra no regime de baixo consumo / pouco trabalho. Este bit pode tambm ser posto a 1, no caso de ocorrer umimpulso no pino RB0/INT, uma variao nos quatro bits mais significativos do porto B, ou quando completada umaoperao de escrita na DATA EEPROM ou ainda pelo watchdog.1 = depois de ter sido ligada a alimentao0 = depois da execuo de uma instruo SLEEP

    ELW72 Time-out ; transbordo do WatchdogEste bit posto a 1, depois de a alimentao ser ligada e depois da execuo das instrues CLRWDT e SLEEP.O bit posto a 0 quando o watchdog consegue chegar ao fim da sua contagem (overflow = transbordar), o queindica que qualquer coisa no esteve bem.1 = no ocorreu transbordo0 = ocorreu transbordo

    ELWVH5353 (bits de seleo de banco de registros)Estes dois bits so a parte mais significativa do endereo utilizado para endereamento direto. Como as instruesque endeream diretamente a memria, dispem somente de sete bits para este efeito, preciso mais um bit parapoder enderear todos os 256 registros do PIC. No caso do PIC16F84, RP1, no usado, mas pode ser necessriono caso de outros microcontroladores PIC, de maior capacidade.01 = banco de registros 100 = banco de registros 0

    ELW,53 (Bit de seleo de banco de registros)Este bit utilizado no endereamento indireto da RAM interna, como oitavo bit1 = bancos 2 e 30 = bancos 0 e 1 (endereos de 00h a FFh)

    O registro de estado (STATUS), contm o estado da ALU (C, DC, Z), estado de RESET (TO, PD) e os bits paraseleo do banco de memria (IRP, RP1, RP0). Considerando que a seleo do banco de memria controladaatravs deste registro, ele tem que estar presente em todos os bancos.. Se o registro STATUS for o registro dedestino para instrues que afetem os bits Z, DC ou C, ento no possvel escrever nestes trs bits.

  • 8/2/2019 Apostila_geral

    26/136

    5HJLVWUR237,21

    ELWVD363636 (bits de seleo do divisor Prescaler)Estes trs bits definem o fator de diviso do prescaler. Aquilo que o prescaler e o modo como o valor destes trsbits afetam o funcionamento do microcontrolador ser estudado na seco referente a TMR0.

    bLW36$(Bit de Atribuio do Prescaler)Bit que atribui o prescaler ao TMR0 ou ao watchdog.1 = prescaler atribudo ao watchdog0 = prescaler atribudo ao temporizador TMR0

    ELW76( (bit de seleo de bordo ativo em TMR0)Se for permitido aplicar impulsos em TMR0, a partir do pino RA4/TOCK1, este bit determina se os impulsos ativosso os impulsos ascendentes ou os impulsos descendentes.1 = bordo descendente0 = bordo ascendente

    ELW72&6(bit de seleo de fonte de clock em TMR0)Este pino escolhe a fonte de impulsos que vai ligar ao temporizador. Esta fonte pode ser o clock do microcontrolador(freqncia de clock a dividir por 4) ou impulsos externos no pino RA4/TOCKI.1 = impulsos externos0 = do clock interno

    ELW,1'('* (bit de seleo de bordo de interrupo)Se esta interrupo estiver habilitada, possvel definir o bordo que vai ativar a interrupo no pino RB0/INT.1 = bordo ascendente0 = bordo descendente

    ELW5%38 (Habilitao dos pull-up nos bits do porto B)Este bit introduz ou retira as resistncias internas de pull-up do porto B.1 = resistncias de pull-up desligadas0 = resistncias de pull-up ligadas

  • 8/2/2019 Apostila_geral

    27/136

    27

    3257$60$3($0(172'((175$'$66$'$6

    Porta, um grupo de pinos num microcontrolador que podem ser acedidos simultaneamente, e, no qual nspodemos colocar uma combinao de zeros e uns ou ler dele o estado existente. Fisicamente, porto um registro

    dentro de um microcontrolador que est ligado por fios aos pinos do microcontrolador. Os portos representam aconexo fsica da Unidade Central de Processamento (CPU) com o mundo exterior. O microcontrolador usa paraobservar ou comandar outros componentes ou dispositivos. Para aumentar a sua funcionalidade, os mesmos pinospodem ter duas aplicaes distintas, como, por exemplo, RA4/TOCKI, que simultaneamente o bit 4 do porto A euma entrada externa para o contador/temporizador TMR0. A escolha de uma destas duas funes feita atravsdos registros de configurao. Um exemplo disto o TOCS, quinto bit do registro OPTION. Ao selecionar uma dasfunes, a outra automaticamente inibida.

    Relao entre os registros TRISA e PORTA A

    Todos os pinos dos portos podem ser definidos como de entrada ou de sada, de acordo com as necessidades dodispositivo a ser projetado. Para definir um pino como entrada ou como sada, preciso, em primeiro lugar, escreverno registro TRIS, a combinao apropriada de zeros e uns. Se no local apropriado de um registro TRIS for escrito ovalor lgico 1, ento o correspondente pino do porto definido como entrada, se suceder o contrrio, o pino definido como sada. Todos as portas, tm um registro TRIS associado. Assim, para o porto A, existe o registroTRISA no endereo 85h e, para o porto B existe o registro TRISB, no endereo 86h.

    3257$%

    O porto B tem 8 pinos associados a ele. O respectivo registro de direo de dados chama-se TRISB e tem oendereo 86h. Ao pr a 1 um bit do registro TRISB, define-se o correspondente pino do porto como entrada e sepusermos a 0 um bit do registro TRISB, o pino correspondente vai ser uma sada. Cada pino do PORTA B possuiuma pequena resistncia de pull-up (resistncia que define a linha como tendo o valor lgico 1). As resistncias depull-up so ativadas pondo a 0 o bit RBPU, que o bit 7 do registro OPTION. Estas resistncias de pull-up soautomaticamente desligadas quando os pinos do porto so configurados como sadas. Quando a alimentao domicrocontrolador ligada, as resistncias de pull-up so tambm desativadas.

  • 8/2/2019 Apostila_geral

    28/136

    No PIC16F84, quatro pinos da PORTAB, RB4 a RB7 podem causar uma interrupo, que ocorre quando qualquerdeles varia do valor lgico zero para valor lgico um ou o contrrio. Esta forma de interrupo s pode ocorrer seestes pinos forem configurados como entradas (se qualquer um destes 4 pinos for configurado como sada, noser gerada uma interrupo quando h variao de estado). Esta modalidade de interrupo, acompanhada daexistncia de resistncias de pull-up internas, torna possvel resolver mais facilmente problemas freqentes quepodemos encontrar na prtica, como, por exemplo, a ligao de um teclado matricial. Se as linhas de um tecladoficarem ligadas a estes pinos, sempre que se prime uma tecla, ir-se- provocar uma interrupo. Ao processar ainterrupo, o microcontrolador ter que identificar a tecla que a produziu. No recomendvel utilizar o porta B, ao

    mesmo tempo em que esta interrupo est a ser processada.

    O exemplo de cima mostra como os pinos 0, 1, 2 e 3 so definidos como entradas e 4, 5, 6 e 7 como sadas.

    3257$$No PIC 16F84, a porta A (PORTA) est associado a 5 pinos. O registro de direo de dados correspondente oTRISA, no endereo 85h. Tal como no caso do porto B, pr a 1 um bit do registro TRISA, equivale a definir ocorrespondente pino do porto A, como entrada e pr a 0 um bit do mesmo registro, equivale a definir ocorrespondente pino do porta A, como sada.O quinto pino da porta A tem uma funo dupla. Nesse pino est tambm situada a entrada externa do temporizadorTMR0. Cada uma destas opes escolhida pondo a 1 ou pondo a 0 o bit TOCS (bit de seleo de fonte de clockde TMR0). Conforme o valor deste bit, assim o temporizador TMR0 incrementa o seu valor por causa de um impulsodo oscilador interno ou devido a um impulso externo aplicado ao pino RA4/TOCKI.

    Este exemplo mostra como os pinos 0, 1, 2, 3 e 4 so declarados como entradas e os pinos 5, 6 e 7 como pinos desada.

  • 8/2/2019 Apostila_geral

    29/136

    29

    25*$1,=$d2'$0(05,$0$3($0(172('(&2',),&$d2'((1'(5(d26

    O PIC16F84, possui dois blocos de memria separados, um para dados e o outro para o programa. A memriaEEPROM e os registros de uso genrico (GPR) na memria RAM constituem o bloco para dados e a memria

    FLASH constitui o bloco de programa.

    0HPyULDGHSURJUDPDA memria de programa implementada usando tecnologia FLASH, o que torna possvel programar omicrocontrolador muitas vezes antes de este ser instalado num dispositivo, e, mesmo depois da sua instalao,podemos alterar o programa e parmetros contidos. No PIC 16F84, o tamanho da memria de programa de 1024endereos de palavras de 14 bits, destes, os endereos zero e quatro esto reservados respectivamente para oreset e para o vetor de interrupo.

    0HPyULDGHGDGRVA memria de dados compreende memria EEPROM e memria RAM. No 16F84, a memria EEPROM consiste em

    64 posies para palavras de oito bits e cujos contedos no se perdem durante uma falha na alimentao. Amemria EEPROM no faz parte diretamente do espao de memria mas acessada indiretamente atravs dosregistros EEADR e EEDATA. Como a memria EEPROM serve usualmente para guardar parmetros importantes(por exemplo, de uma dada temperatura em reguladores de temperatura), existe um procedimento estrito paraescrever na EEPROM que tem que ser seguido de modo a evitar uma escrita acidental. A memria RAM paradados, ocupa um espao no mapa de memria desde o endereo 0x0C at 0x4F, o que corresponde a 68localizaes. Os locais da memria RAM so tambm chamados registros GPR (General Purpose Registers =Registros de uso genrico). Os registros GPR podem ser acedidos sem ter em ateno o banco em que nosencontramos de momento.

    5HJLVWURV6)5Os registros que ocupam as 12 primeiras localizaes nos bancos 0 e 1 so registros especiais e tm a ver com a

    manipulao de certos blocos do microcontrolador. Estes registros so os SFR (Special Function Registers ouRegistros de Funes Especiais).

  • 8/2/2019 Apostila_geral

    30/136

    Organizao da memria no microcontrolador PIC16F84

  • 8/2/2019 Apostila_geral

    31/136

    31

    %DQFRVGH0HPyULDAlm da diviso em comprimento entre registros SFR e GPR, o mapa de memria est tambm dividido emlargura (ver mapa anterior) em duas reas chamadas bancos. A seleo de um dos bancos feita por intermdiodos bits RP0 e RP1 do registro STATUS.Exemplo :

    bcf STATUS, RP0A instruo BCF limpa o bit RP0 (RP0 = 0) do registro STATUS e, assim, coloca-nos no banco 0.bsf STATUS, RP0

    A instruo BSF pe a um, o bit RP0 (RP0 = 1) do registro STATUS e, assim, coloca-nos no banco 1.Normalmente, os grupos de instrues muito usados so ligados numa nica unidade que pode ser facilmenteinvocada por diversas vezes num programa, uma unidade desse tipo chama-se genericamente Macro e,normalmente, essa unidade designada por um nome especifico facilmente compreensvel. Com a sua utilizao, aseleo entre os dois bancos torna-se mais clara e o prprio programa fica mais legvel.

    BANK0 macroBcf STATUS, RP0 ;Selecionar o banco 0 da memriaEndm

    BANK1 macroBsf STATUS, RP0 ; Selecionar o banco 1 da memriaEndm

    Os locais de memria 0Ch 4Fh so registros de uso genrico (GPR) e so usados como memria RAM.Quando os endereos 8Ch CFh so acessados, ns acessamos tambm s mesmas localizaes do banco0. Em outras palavras, quando trabalhamos com os registros de uso genrico, no precisamos nos preocupar

    com o banco em que nos encontramos!

    &RQWDGRUGH3URJUDPDO contador de programa (PC = Program Counter), um registro de 13 bits que contm o endereo da instruo quevai ser executada. Ao incrementar ou alterar (por exemplo no caso de saltos) o contedo do PC, o microcontroladorconsegue executar as todas as instrues do programa, uma aps outra.3LOKDO PIC16F84 tem uma pilha (stack) de 13 bits e 8 nveis de profundidade cclica, o que corresponde a 8 locais dememria com 13 bits de largura. O seu papel bsico guardar o valor do contador de programa quando ocorre umsalto do programa principal para o endereo de um subprograma a ser executado. Depois de ter executado osubprograma, para que o microcontrolador possa continuar com o programa principal a partir do ponto em que o

    deixou, ele tem que ir buscar pilha esse endereo e carreg-lo no contador de programa. Quando nos movemosde um programa para um subprograma, o contedo do contador de programa empurrado para o interior da pilha(um exemplo disto a instruo CALL). Quando so executadas instrues tais como RETURN, RETLW ou RETFIEno fim de um subprograma, o contador de programa retirado da pilha, de modo a que o programa possa continuara partir do ponto em que a sequncia foi interrompida. Estas operaes de colocar e extrair da pilha o contador deprograma, so designadas por PUSH (meter na pilha) e POP (tirar da pilha), estes dois nomes provm de instruescom estas designaes, existentes nalguns microcontroladores de maior porte.

  • 8/2/2019 Apostila_geral

    32/136

    3URJUDPDomRQR6LVWHPD

    Para programar a memria de programa, o microcontrolador tem que entrar num modo especial de funcionamentono qual o pino MCLR posto a 13,5V e a voltagem da alimentao Vdd deve permanecer estvel entre 4,5V e 5,5V.A memria de programa pode ser programada em srie, usando dois pinos data/clock que devem ser previamenteseparados do dispositivo em que o microcontrolador est inserido, de modo a que no possam ocorrer erros durantea programao.

    0RGRVGHHQGHUHoDPHQWR

    Os locais da memria RAM podem ser acessados direta ou indiretamente.

    (QGHUHoDPHQWR'LUHWR

    O endereamento direto feito atravs de um endereo de 9 bits. Este endereo obtm-se juntando aos sete bits doendereo direto de uma instruo, mais dois bits (RP1 e RP0) do registro STATUS, como se mostra na figura que sesegue. Qualquer acesso aos registros especiais (SFR), pode ser um exemplo de endereamento direto.

    Bsf STATUS, RP0 ; Banco 1movlw 0xFF ; w = 0xFF

    movwf TRISA ; o endereo do registro TRISA tirado do cdigo da instruo movwf TRISA

    Endereamento Directo

  • 8/2/2019 Apostila_geral

    33/136

    33

    (QGHUHoDPHQWR,QGLUHWRO endereamento indireto, ao contrrio do direto, no tira um endereo do cdigo instruo, mas faz com a ajuda dobit IRP do registro STATUS e do registro FSR. O local endereado acessado atravs do registro INDF e coincidecom o endereo contido em FSR. Por outras palavras, qualquer instruo que use INDF como registro, na realidadeacessa aos dados apontados pelo registro FSR. Vamos supor, por exemplo, que o registro de uso genrico de

    endereo 0Fh contm o valor 20. Escrevendo o valor de 0Fh no registro FSR, ns vamos obter um ponteiro para oregistro 0Fh e, ao ler o registro INDF, ns iremos obter o valor 20, o que significa que lemos o contedo do registro0Fh, sem o mencionar explicitamente (mas atravs de FSR e INDF). Pode parecer que este tipo de endereamentono tem quaisquer vantagens sobre o endereamento direto, mas existem problemas que s podem ser resolvidosde uma forma simples, atravs do endereamento indireto.

    Endereamento Indirecto

    Um exemplo pode ser enviar um conjunto de dados atravs de uma comunicao srie, usando buffers eindicadores (que sero discutidos num captulo mais frente, com exemplos), outro exemplo limpar os registrosda memria RAM (16 endereos neste caso) como se pode ver a seguir.

    Quando o contedo do registro FSR igual a zero, ler dados do registro INDF resulta no valor 0 e escrever em INDFresulta na instruo NOP (no operation = nenhuma operao).

  • 8/2/2019 Apostila_geral

    34/136

    ,QWHUUXSo}HV

    As interrupes so mecanismos que o microcontrolador possui e que torna possvel responder a algunsacontecimentos no momento em que eles ocorrem, qualquer que seja a tarefa que o microcontrolador esteja aexecutar no momento. Esta uma parte muito importante, porque fornece a ligao entre um microcontrolador e omundo real que nos rodeia. Geralmente, cada interrupo muda a direo de execuo do programa, suspendendoa sua execuo, enquanto o microcontrolador corre um subprograma que a rotina de atendimento de interrupo.Depois de este subprograma ter sido executado, o microcontrolador continua com o programa principal, a partir do

    local em que o tinha abandonado.

    Uma das possveis fontes de interrupo e como afeta o programa principal

    O registro que controla as interrupes chamado INTCON e tem o endereo 0Bh. O papel do INTCON permitir

    ou impedir as interrupes e, mesmo no caso de elas no serem permitidas, ele toma nota de pedidos especficos,alterando o nvel lgico de alguns dos seus bits.

  • 8/2/2019 Apostila_geral

    35/136

    35

    5HJLVWUR,17&21

    ELW5%,) (flag que indica variao no porto B) Bit que informa que houve mudana nos nveis lgicos nos pinos 4,5, 6 e 7 do porto B.1= pelo menos um destes pinos mudou de nvel lgico0= no ocorreu nenhuma variao nestes pinos

    ELW,17)(flag de interrupo externa INT) Ocorrncia de uma interrupo externa1= ocorreu uma interrupo externa0= no ocorreu uma interrupo externaSe um impulso ascendente ou descendente for detectado no pino RB0/INT, o bit INTF posto a 1 (o tipo desensibilidade, ascendente ou descendente definida atravs do bit INTEDG do registro OPTION). O subprogramade atendimento desta interrupo, deve repor este bit a 0, afim de que a prxima interrupo possa ser detectada.

    ELW72,) (Flag de interrupo por transbordo de TMR0) O contador TMR0, transbordou.1= o contador mudou a contagem de FFh para 00h0= o contador no transbordouPara que esta interrupo seja detectada, o programa deve pr este bit a 0

    ELW5%,((bit de habilitao de interrupo por variao no porto B) Permite que a interrupo por variao dosnveis lgicos nos pinos 4, 5, 6 e 7 do porto B, ocorra.1= habilita a interrupo por variao dos nveis lgicos

    0= inibe a interrupo por variao dos nveis lgicosA interrupo s pode ocorrer se RBIE e RBIF estiverem simultaneamente a 1 lgico.

    ELW,17( (bit de habilitao da interrupo externa INT) bit que permite uma interrupo externa no bit RB0/INT.1= interrupo externa habilitada0= interrupo externa impedidaA interrupo s pode ocorrer se INTE e INTF estiverem simultaneamente a 1 lgico.

    ELW72,( (bit de habilitao de interrupo por transbordo de TMR0) bit que autoriza a interrupo por transbordodo contador TMR0.1= interrupo autorizada0= interrupo impedida

    A interrupo s pode ocorrer se TOIE e TOIF estiverem simultaneamente a 1 lgico.

    ELW((,( (bit de habilitao de interrupo por escrita completa, na EEPROM) bit que habilita uma interrupoquando uma operao de escrita na EEPROM termina.1= interrupo habilitada0= interrupo inibidaSe EEIE e EEIF (que pertence ao registro EECON1) estiverem simultaneamente a 1, a interrupo pode ocorrer.

  • 8/2/2019 Apostila_geral

    36/136

    ELW*,( (bit de habilitao global de interrupo) bit que permite ou impede todas as interrupes1= todas as interrupes so permitidas0= todas as interrupes impedidas

    O PIC16F84 possui quatro fontes de interrupo:

    1. Fim de escrita na EEPROM

    2. Interrupo em TMR0 causada por transbordo do temporizador3. Interrupo por alterao nos pinos RB4, RB5, RB6 e RB7 do porto B.4. Interrupo externa no pino RB0/INT do microcontrolador

    De um modo geral, cada fonte de interrupo tem dois bits associados. Um habilita a interrupo e o outro assinalaquando a interrupo ocorre. Existe um bit comum a todas as interrupes chamado GIE que pode ser usado paraimpedir ou habilitar todas as interrupes, simultaneamente. Este bit muito til quando se est a escrever umprograma porque permite que todas as interrupes sejam impedidas durante um perodo de tempo, de tal maneiraque a execuo de uma parte crtica do programa no possa ser interrompida. Quando a instruo que faz GIE= 0 executada (GIE= 0 impede todas as interrupes), todas os pedidos de interrupo pendentes, sero ignorados.

    Esquema das interrupes no microcontrolador PIC16F84

    As interrupes que esto pendentes e que so ignoradas, so processadas quando o bit GIE posto a 1 (GIE= 1,todas as interrupes permitidas). Quando a interrupo atendida, o bit GIE posto a 0, de tal modo que,quaisquer interrupes adicionais sejam inibidas, o endereo de retorno guardado na pilha e, no contador deprograma, escrito 0004h somente depois disto, que a resposta a uma interrupo comea!Depois de a interrupo ser processada, o bit que por ter sido posto a 1 permitiu a interrupo, deve agora serreposto a 0, seno, a rotina de interrupo ir ser automaticamente processada novamente, mal se efetue oregresso ao programa principal.

  • 8/2/2019 Apostila_geral

    37/136

    37

    *XDUGDQGRRVFRQWH~GRVGRVUHJLVWURVLPSRUWDQWHV

    A nica coisa que guardada na pilha durante uma interrupo o valor de retorno do contador de programa (porvalor de retorno do contador de programa entende-se o endereo da instruo que estava para ser executada, masque no foi, por causa de ter ocorrido a interrupo). Guardar apenas o valor do contador de programa no ,muitas vezes, suficiente. Alguns registros que j foram usados no programa principal, podem tambm vir a serusados na rotina de interrupo. Se ns no salvaguardamos os seus valores, quando acontece o regresso da sub-rotina para o programa principal os contedos dos registros podem ser inteiramente diferentes, o que causaria umerro no programa. Um exemplo para este caso o contedo do registro de trabalho W (work register). Se supormosque o programa principal estava a usar o registro de trabalho W nalgumas das suas operaes e se ele contiveralgum valor que seja importante para a instruo seguinte, ento a interrupo que ocorre antes desta instruo vaialterar o valor do registro de trabalho W, indo influenciar diretamente o programa principal.

    O procedimento para a gravao de registros importantes antes de ir para a sub-rotina de interrupo, designa-sepor PUSH, enquanto que o procedimento que recupera esses valores, chamado POP. PUSH e POP soinstrues provenientes de outros microcontroladores (da Intel), agora esses nomes so aceites para designar estes

    dois processos de salvaguarda e recuperao de dados. Como o PIC16F84 no possui instrues comparveis,elas tm que ser programadas.

    Uma das possveis causas de erros no guardar os dados antes de executar um subprograma de interrupo

    Devido sua simplicidade e uso freqente, estas partes do programa podem ser implementadas com macros. Oconceito de Macro explicado em Programao em linguagem Assembly. No exemplo que se segue, oscontedos de W e do registro STATUS so guardados nas variveis W_TEMP e STATUS_TEMP antes de correr arotina de interrupo. No incio da rotina PUSH, ns precisamos verificar qual o banco que ser selecionado,porque W_TEMP e STATUS_TEMP esto situados no banco 0. Para troca de dados entre estes dois registros, usada a instruo SWAPF em vez de MOVF, pois a primeira no afeta os bits do registro STATUS.

  • 8/2/2019 Apostila_geral

    38/136

    Exemplo um programa assembly com os seguintes passos:

    1. Verificar em que banco nos encontramos2. Guardar o registro W qualquer que seja o banco em que nos encontramos3. Guardar o registro STATUS no banco 0.4. Executar a rotina de servio de interrupo ISR (Interrupt Service Routine)5. Recuperao do registro STATUS6. Restaurar o valor do registro W

    Se existirem mais variveis ou registros que necessitem de ser salvaguardados, ento, precisamos de os guardardepois de guardar o registro STATUS (passo 3) e recuper-los depois de restaurar o registro STATUS (passo 5).

    A mesma operao pode ser realizada usando macros, desta maneira obtemos um programa mais legvel. Osmacros que j esto definidos podem ser usados para escrever novos macros. Os macros BANK1 e BANK0 queso explicados no captulo Organizao da memria so usados nos macros push e pop.

  • 8/2/2019 Apostila_geral

    39/136

    39

    ,QWHUUXSomRH[WHUQDQRSLQR5%,17GRPLFURFRQWURODGRU

    A interrupo externa no pino RB0/ INT desencadeada por um impulso ascendente (se o bit INTEDG = 1 noregistro OPTION), ou por um impulso descendente (se INTEDG = 0). Quando o sinal correto surge no pino INT,o bit INTF do registro INTCON posto a 1. O bit INTF (INTCON) tem que ser reposto a 0 na rotina deinterrupo, afim de que a interrupo no possa voltar a ocorrer de novo, quando do regresso ao programaprincipal. Esta uma parte importante do programa e que o programador no pode esquecer, caso contrrio oprograma ir constantemente saltar para a rotina de interrupo. A interrupo pode ser inibida, pondo a 0 o bit decontrole INTE (INTCON).

    ,QWHUUXSomRGHYLGRDRWUDQVERUGDURYHUIORZGRFRQWDGRU705

    O transbordar do contador TMR0 (passagem de FFh para 00h) vai pr a 1 o bit TOIF (INTCON), Esta uma

    interrupo muito importante, uma vez que, muitos problemas da vida real podem ser resolvidos utilizando estainterrupo. Um exemplo o da medio de tempo. Se soubermos de quanto tempo o contador precisa paracompletar um ciclo de 00h a FFh, ento, o nmero de interrupes multiplicado por esse intervalo de tempo, d-noso tempo total decorrido. Na rotina de interrupo uma varivel guardada na memria RAM vai sendo incrementada,o valor dessa varivel multiplicado pelo tempo que o contador precisa para um ciclo completo de contagem, vai daro tempo gasto. Esta interrupo pode ser habilitada ou inibida, pondo a 1 ou a 0 o bit TOIE (INTCON).

    ,QWHUUXSomRSRUYDULDomRQRVSLQRVHGDSRUWD%

    Uma variao em 4 bits de entrada do Porta B (bits 4 a 7), pe a 1 o bit RBIF (INTCON). A interrupo ocorre,portanto, quando os nveis lgicos em RB7, RB6, RB5 e RB4 do porta B, mudam do valor lgico 1 para o valorlgico 0 ou vice-versa. Para que estes pinos detectem as variaes, eles devem ser definidos como entradas. Se

    qualquer deles for definido como sada, nenhuma interrupo ser gerada quando surgir uma variao do nvellgico. Se estes pinos forem definidos como entradas, o seu valor atual comparado com o valor anterior, que foiguardado quando se fez a leitura anterior do porto B. Esta interrupo pode ser habilitada/inibida pondo a 1 ou a0, o bit RBIE do registro INTCON.

  • 8/2/2019 Apostila_geral

    40/136

    ,QWHUUXSomRSRUILPGHHVFULWDQD((3520

    Esta interrupo apenas de natureza prtica. Como escrever num endereo da EEPROM leva cerca de 10ms (oque representa muito tempo quando se fala de um microcontrolador), no recomendvel que se deixe omicrocontrolador um grande intervalo de tempo sem fazer nada, espera do fim da operao da escrita. Assim,dispomos de um mecanismo de interrupo que permite ao microcontrolador continuar a executar o programaprincipal, enquanto, em simultneo, procede escrita na EEPROM. Quando esta operao de escrita se completa,uma interrupo informa o microcontrolador deste fato. O bit EEIF, atravs do qual esta informao dada, pertence

    ao registro EECON1. A ocorrncia desta interrupo pode ser impedida, pondo a 0 o bit EEIE do registro INTCON.

    ,QLFLDomRGDLQWHUUXSomR

    Para que num microcontrolador se possa usar um mecanismo de interrupo, preciso executar algumas tarefaspreliminares. Estes procedimentos so designados resumidamente por iniciao. Na iniciao, ns estabelecemosa que interrupes o microcontrolador deve responder e as que deve ignorar. Se no pusermos a 1 o bit quepermite uma certa interrupo, o programa vai ignorar a correspondente sub-rotina de interrupo. Por este meio,ns podemos controlar a ocorrncia das interrupes, o que muito til.

    O exemplo de cima, mostra a iniciao da interrupo externa no pino RB0 de um microcontrolador. Na posio emque vemos 1, isso significa que essa interrupo est habilitada. A ocorrncia de outras interrupes no permitida, e todas as interrupes em conjunto esto mascaradas at que o bit GIE seja posto a 1.

    O exemplo que se segue, ilustra uma maneira tpica de lidar com as interrupes. O PIC16F84 tem somente umendereo para a rotina de interrupo. Isto significa que, primeiro, necessrio identificar qual a origem dainterrupo (se mais que uma fonte de interrupo estiver habilitada), e a seguir deve executar-se apenas a parte dasub-rotina que se refere interrupo em causa.

  • 8/2/2019 Apostila_geral

    41/136

    41

    O retorno de uma rotina de interrupo pode efetuar-se com as instrues RETURN, RETLW e RETFIE.Recomenda-se que seja usada a instruo RETFIE porque, essa instruo a nica que automaticamentepe a 1 o bit GIE, permitindo assim que novas interrupes possam ocorrer.

    &21752/$'25(7(0325,=$'25352*5$09(/7(0325,=$'25705

    Os temporizadores so normalmente as partes mais complicadas de um microcontrolador, assim, necessriogastar mais tempo a explic-los. Servindo-nos deles, possvel relacionar uma dimenso real que o tempo, comuma varivel que representa o estado de um temporizador dentro de um microcontrolador. Fsicamente, otemporizador um registro cujo valor est continuamente a ser incrementado at 255, chegado a este nmero, elecomea outra vez de novo: 0, 1, 2, 3, 4, ...,255, 0,1, 2, 3,..., etc.

  • 8/2/2019 Apostila_geral

    42/136

    Relao entre o temporizador TMR0 e o prescaler

    O incremento do temporizador feito em simultneo com tudo o que o microcontrolador faz. Compete aoprogramador arranjar maneira de tirar partido desta caracterstica. Uma das maneiras incrementar uma varivelsempre que o microcontrolador transvaza (passa de 255 para 0). Se soubermos de quanto tempo um temporizadorprecisa para perfazer uma contagem completa (de 0 a 255), ento, se multiplicarmos o valor da varivel por esse

    tempo, ns obteremos o tempo total decorrido.

    O PIC16F84, possui um temporizador de 8 bits. O nmero de bits determina a quantidade de valores diferentes quea contagem pode assumir, antes de voltar novamente para zero. No caso de um temporizador de 8 bits esse valor 256. Um esquema simplificado da relao entre um temporizador e um prescaler est representado no diagramaanterior. Prescaler a designao para a parte do microcontrolador que divide a frequncia de oscilao do clockantes que os respectivos impulsos possam incrementar o temporizador. O nmero pelo qual a frequncia de clock dividida, est definido nos trs primeiros bits do registro OPTION. O maior divisor possvel 256. Neste caso,significa que s aps 256 impulsos de clock que o contedo do temporizador incrementado de uma unidade. Istopermite-nos medir grandes intervalos de tempo.

  • 8/2/2019 Apostila_geral

    43/136

    43

    Diagrama temporal de uma interrupo causada pelo temporizador TMR0

    Quando a contagem ultrapassa 255, o temporizador volta de novo a zero e comea um novo ciclo de contagem at255. Sempre que ocorre uma transio de 255 para 0, o bit TOIF do registro INTCON posto a '1'. Se asinterrupes estiverem habilitadas, possvel tirar partido das interrupes geradas e da rotina de servio de

    interrupo. Cabe ao programador voltar a pr a '0' o bit TOIF na rotina de interrupo, para que uma novainterrupo possa ser detectada. Alm do oscilador de clock do microcontrolador, o contedo do temporizador podetambm ser incrementado atravs de um clock externo ligado ao pino RA4/TOCKI. A escolha entre uma destasopes feita no bit TOCS, pertencente ao registro OPTION. Se for selecionado o clock externo, possvel definir aborda ativa do sinal (ascendente ou descendente), que vai incrementar o valor do temporizador.

    Utilizao do temporizador TMR0 na determinao do nmero de rotaes completas do eixo de um motor

  • 8/2/2019 Apostila_geral

    44/136

    Na prtica, um exemplo tpico que resolvido atravs de um clock externo e um temporizador, a contagem donmero de rotaes completas do eixo de uma mquina, por exemplo, um enrrolador de espiras paratransformadores. Vamos considerar que o rotor do motor do enrrolador, contm quatro plos ou salincias. Vamoscolocar o sensor indutivo distncia de 5mm do topo da salincia. O sensor indutivo ir gerar um impulsodescendente sempre que a salincia se encontre alinhada com a cabea do sensor. Cada sinal vai representar umquarto de uma rotao completa e, a soma de todas as rotaes completas, ficar registrado no temporizadorTMR0. O programa pode ler facilmente estes dados do temporizador atravs do bus de dados.

    O exemplo seguinte mostra como iniciar o temporizador para contar os impulsos descendentes provenientes de umafonte de clock externa com um prescaler 1:4.

    O mesmo exemplo pode ser implementado atravs de uma interrupo do modo seguinte:

    O prescaler tanto pode ser atribudo ao temporizador TMR0, como ao watchdog. O watchdog um mecanismo queo microcontrolador usa para se defender contra "estouros" do programa. Como qualquer circuito eltrico, tambm osmicrocontroladores podem ter uma falha ou algum percalo no seu funcionamento. Infelizmente, o microcontrolador

  • 8/2/2019 Apostila_geral

    45/136

    45

    tambm pode ter problemas com o seu programa. Quando isto acontece, o microcontrolador pra de trabalhar emantm-se nesse estado at que algum faa o reset. Por causa disto, foi introduzido o mecanismo de watchdog(co de guarda). Depois de certo perodo de tempo, o watchdog faz o reset do microcontrolador (o que realmenteacontece, que o microcontrolador executa o reset de si prprio). O watchdog trabalha na base de um princpiosimples: se o seu temporizador transbordar, feito o reset do microcontrolador e este comea a executar de novo oprograma a partir do princpio. Deste modo, o reset poder ocorrer tanto no caso de funcionamento correto como nocaso de funcionamento incorreto. O prximo passo evitar o reset no caso de funcionamento correto, isso feito

    escrevendo zero no registro WDT (instruo CLRWDT) sempre que este est prximo de transbordar. Assim, oprograma ir evitar um reset enquanto est a funcionar corretamente. Se ocorrer o "estouro" do programa, este zerono ser escrito, haver transbordo do temporizador WDT e ir ocorrer um reset que vai fazer com que omicrocontrolador comece de novo a trabalhar corretamente.

    O prescaler pode ser atribudo ao temporizador TMR0, ou ao temporizador do watchdog, isso feito atravs do bitPSA no registro OPTION. Fazendo o bit PSA igual a '0', o prescaler atribudo ao temporizador TMR0. Quando oprescaler atribudo ao temporizador TMR0, todas as instrues de escrita no registro TMR0 (CLRF TMR0,MOVWF TMR0, BSF TMR0,...) vo limpar o prescaler. Quando o prescaler atribudo ao temporizador dowatchdog, somente a instruo CLRWDT ir limpar o prescaler e o temporizador do watchdog ao mesmo tempo. Amudana do prescaler est completamente sob o controle do programador e pode ser executada enquanto oprograma est rodando.

    Existe apenas um prescaler com o seu temporizador. Dependendo das necessidades, pode ser atribudo aotemporizador TMR0 ou ao watchdog, mas nunca aos dois em simultneo.

    5HJLVWURGH&RQWUROH237,21

    ELW363636 (bits de seleo do divisor prescaler)O prescaler e como estes bits afetam o funcionamento do microcontrolador, so abordados na seco que trata deTMR0.

    ELW36$ (bit de Atribuio do Prescaler)Bit que atribui o prescaler ou ao temporizador TMR0 ou ao temporizador do watchdog1 = o prescaler est atribudo ao temporizador do watchdog.

  • 8/2/2019 Apostila_geral

    46/136

    0 = o prescaler est atribudo ao temporizador TMR0.

    ELW76( (seleo de bordo ativo em TMR0)Se o temporizador estiver configurado para contar impulsos externos aplicados ao pino RA4/T0CKI, este bit vaideterminar quando a contagem ir incidir sobre os impulsos ascendentes ou descendentes do sinal.1 = borda descendente0 = borda ascendente

    ELW7&6 (bit de seleo de fonte de clock para TMR0)Este pino habilita o contador/temporizador TMR0 a incrementar o seu valor ou com os impulsos do oscilador interno,isto , a 1/4 das oscilaes do clock do oscilador, ou atravs de impulsos externos aplicados ao pino

    5$7&.,1 = impulsos externos0 = 1/4 do clock interno

    ELW,17('* (bit de seleo da borda ativa da interrupo)Se a ocorrncia de interrupes estiver habilitada, este bit vai determinar qual a borda em que a interrupo no pinoRB0/INT vai ocorrer.1 = bordo ascendente

    0 = bordo descendente

    ELW5%38 (Bit de habilitao dos pull-up na porta B)Este bit introduz ou retira as resistncias de pull-up internas da porta B.1 = resistncias de 'pull-up' inseridas0 = resistncias de 'pull-up' retiradas

    0HPyULDGHGDGRV((3520

    O PIC16F84 tem 64 bytes de localizaes de memria EEPROM, correspondentes aos endereos de 00h a 63h eonde podemos ler e escrever. A caracterstica mais importante desta memria de no perder o seu contedoquando a alimentao desligada. Na prtica, isso significa que o que l foi escrito permanece no microcontrolador,

    mesmo quando a alimentao desligada. Sem alimentao, estes dados permanecem no microcontroladordurante mais de 40 anos (especificaes do fabricante do microcontrolador PIC16F84), alm disso, esta memriasuporta at 10000 operaes de escrita.

    Na prtica, a memria EEPROM usada para guardar dados importantes ou alguns parmetros de processamento.Um parmetro deste tipo, uma dada temperatura, atribuda quando ajustamos um regulador de temperatura paraum processo. Se esse valor se perder, seria necessrio introduzi-lo sempre que houvesse uma falha naalimentao. Como isto impraticvel (e mesmo perigoso), os fabricantes de microcontroladores comearam ainstalar nestes uma pequena quantidade de memria EEPROM.

  • 8/2/2019 Apostila_geral

    47/136

    47

    A memria EEPROM colocada num espao de memria especial e pode ser acedida atravs de registrosespeciais. Estes registros so:

    (('$7$no endereo 08h, que contm o dado lido ou aquele que se quer escrever.(($'5 no endereo 09h, que contm o endereo do local da EEPROM que vai ser acessado((&21 no endereo 88h, que contm os bits de controle.((&21 no endereo 89h. Este registro no existe fisicamente e serve para proteger a EEPROM de uma escritaacidental.

    O registro EECON1 ocupa o endereo 88h e um registro de controle com cinco bits implementados.Os bits 5, 6 e 7 no so usados e, se forem lidos, so sempre iguais a zero.Os bits do registro EECON1 devem ser interpretados do modo que se segue.

    5HJLVWUR((&21

    ELW5' (bit de controle de leitura)Ao pr este bit a '1', tem incio a transferncia do dado do endereo definido em EEADR para o registro EEDATA.Como o tempo no essencial, tanto na leitura como na escrita, o dado de EEDATA pode j ser usado na instruoseguinte.1 = inicia a leitura0 = no inicia a leitura

    ELW:5 (bit de controle de escrita)Pr este bit a '1' faz iniciar-se a escrita do dado a partir do registro EEDATA para o endereo especificado noregistro EEADR.1 = inicia a escrita0 = no inicia a escrita

    ELW:5(1 (bit de habilitao de escrita na EEPROM). Permite a escrita na EEPROM.Se este bit no estiver a um, o microcontrolador no permite a escrita na EEPROM.1 = a escrita permitida0 = no pode escrever

    ELW:5(55 ( Erro de escrita na EEPROM). Erro durante a escrita na EEPROMEste bit posto a '1' s em casos em que a escrita na EEPROM tenha sido interrompida por um sinal de reset oupor um transbordo no temporizador do watchdog (no caso deste estar ativo).1 = ocorreu um erro0 = no houve erros

  • 8/2/2019 Apostila_geral

    48/136

    ELW((,) (bit de interrupo por operao de escrita na EEPROM completa) Bit usado para informar que a escritado dado na EEPROM, terminou.Quando a escrita tiver terminado, este bit automaticamente posto a '1'. O programador tem que repor a '0' o bitEEIF no seu programa, para que possa detectar o fim de uma nova operao de escrita.1 = escrita terminada0 = a escrita ainda no terminou ou no comeou.

    /HQGRD0HPyULD((3520

    Pondo a 1 o bit RD inicia-se a transferncia do dado do endereo guardado no registro EEADR para o registroEEDATA. Como para ler os dados no preciso tanto tempo como a escrev-los, os dados extrados do registroEEDATA podem j ser usados na instruo seguinte.

    Uma poro de um programa que leia um dado da EEPROM, pode ser semelhante ao seguinte:

    Depois da ltima instruo do programa, o contedo do endereo 0 da EEPROM pode ser encontrado no registro detrabalho w.

    (VFUHYHQGRQD0HPyULD((3520

    Para escrever dados num local da EEPROM, o programador tem primeiro que enderear o registro EEADR eintroduzir a palavra de dados no registro EEDATA. A