program an do micro control adores pic linguagem c

Upload: ermuller

Post on 08-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    1/225

    Programando Microcontroladores PIC_

    Programando Microcontroladores PIC

    Linguagem C

    www.baixebr.org

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    2/225www.mecatronicadegaragem.blogspot.com

    _ Renato A. Silva

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    3/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC_

    Renato A. Silva

    Programando Microcontroladores PIC

    Linguagem C

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    4/225www.mecatronicadegaragem.blogspot.com

    _ Renato A. Silva

    Copyright 2006 by Jubela Livros LtdaCopyright 2006 by Renato A. Silva

    Nenhuma parte desta publicao poder ser reproduzida sem autorizao prvia e escrita de Jubela

    Livros Ltda. Este livro publica nomes comerciais e marcas registradas de produtos pertencentesa diversas companhias. O editor utiliza estas marcas somente para fins editoriais e em benefciodos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

    Novembro de 2006

    Produo: Ensino Profissional EditoraEditor Responssvel: Fbio Luiz Dias

    Organizao: Julianna Alves DiasDesign da Capa: Renato A. SilvaDiagramao : Renato A. SilvaCorreo ortogrfica: Ligia Vaner da Silva

    Direitos reservados por:Jubela Livros Ltda.Rua Maestro Bortolucci, _9_Vila Albertina -So Paulo -SPCep: 0__57-0_0

    Telefone: (__) 6_0_ -6__8Fax: (__) 6_6_ -_9__

    S586p Silva, Renato A.Programando microcontroladores PIC : Linguagem C / RenatoA. Silva. So Paulo : Ensino Profissional, 2006._7_p.

    _. Microcontroladores. _. Microprocessadores. _. C (Linguagemde Programao de Computadores). I. Ttulo.

    CDU: 68_.__

    Catalogao na publicao por: Onlia Silva Guimares CRB-14/071

    E-mail da Editora: [email protected]: www.ensinoprofissional.com.brAtendimento ao Consumidor: [email protected]

    Contato com o Autor:[email protected]://www.renato.silva.nom.br

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    5/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 5

    Quanto ao mais irmos, fortaleci-vos no Senhor, pelo seu soberanopoder. Revesti-vos da armadura de Deus para que possais resistir s ciladas doDemnio. Porque ns no temos que lutar contra a carne e o sangue, mas contraos Principados, Potestades, contra os Dominadores deste mundo tenebroso,contra os espritos malignos espalhados pelos ares. Tomai portanto, a armadurade Deus para que possais resistir no dia mau, e ficar de p depois de terdescumprido todo o vosso dever. Ficai firmes, tendo os vossos rins congidos coma verdade, revestidos com a couraa da justia, e os ps calados, prontos para

    ir anunciar o Evangelho da Paz.

    So Paulo, Efe 6,_0-_5

    PIC, PICmicro, e MPLAB so marcas registadas e protegidas da Microchip TechnologyInc. USA. O nome e o logotipo Microchip so marcas registadas da Microchip Techno-

    logy. Copyright 2003, Microchip Technology Inc. Todas as outras marcas mencionadasno livro constituem propriedade das companhias s quais pertencem

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    6/225www.mecatronicadegaragem.blogspot.com

    6 Renato A. Silva

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    7/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 7

    Prefcio..................................................................................11Apresentao.........................................................................13Introduo:.............................................................................14

    1- Histria do transistor e do microchip1.1 O Transistor.....................................................................161.3 Tipos de transistor.......................................................... 18

    1.4 O Nascimento do Microchip...........................................19

    2- Portas Lgicas, Nmeros Binrios e Hexadecimais2.0- As Portas Lgicas...........................................................202.1- Nmeros Decimais.........................................................222.1.1- Nmeros Binrios........................................................222.1.2- Nmero Hexadecimal.................................................232.1.3- Numerao Octal.........................................................24

    3- Memrias e Microcontroladores3.1- Memrias.......................................................................263.2- Microcontrolador...........................................................273.3- Histria dos microcontroladores ................................. 283.4- Apresentando o PIC 16F62x...........................................293.5- Alimentao................................................................... 303.6- Definio da CPU...........................................................313.7- Arquitetura Interna........................................................323.8- Caractersticas do PIC 16F62x.......................................333.9- Organizao da Memria.............................................. 343.10- A Pilha ou Stack...........................................................343.11- Organizao da memria de dados.............................353.12- Registradores de Funes Especiais............................363.13- Palavra de configurao e identificao..................... 41

    3.14- Portas de Entrada / Sada...........................................423.15- Oscilador...................................................................... 443.16- Pipeline.........................................................................44

    Sumrio

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    8/225www.mecatronicadegaragem.blogspot.com

    8 Renato A. Silva

    3.16.1 Oscilador com cristal modo XT, LP ou HS................463.16.2 oscilador com cristal paralelo....................................463.16.3 Oscilador com cristal em srie...................................473.16.4 Clock externo..............................................................473.16.5 Oscilador com resistor externo..................................473.16.6 Oscilador interno 4 Mhz............................................483.16.7 Oscillator Start-Up timer (OST).................................483.17 Reset.............................................................................. 483.17.1-Reset Normal.............................................................493.17.2-Reset Power-on (POR).............................................. 49

    3.17.3-Power-up Timer (PWRT)..........................................503.17.4-Brown-out detect (BOD)...........................................503.17.5-Reset por transbordamento de WDT....................... 503.18-WatchDog Timer (WDT)..............................................513.19-Set de instrues .........................................................52

    4-Construindo o Primeiro projeto:4.1 Pisca Led......................................................................... 54

    4.1 MPLAB verso 7.0...........................................................574.2-O Gravador.....................................................................634.3.1-IC-Prog........................................................................654.3.2-Gravando o programa................................................ 654.3.3-Erro de gravao.........................................................664.3.4-Arquivo Hexa..............................................................66

    5-Linguagem C5.1-Linguagem de programao..........................................685.2-Comentrios...................................................................695.3-Identificadores...............................................................705.4-Endentao.....................................................................705.5-Constantes......................................................................705.6-Variveis........................................................................ 705.7-Elementos definidos pela linguagem C:.......................70

    5.8-Operadores e Smbolos Especiais..................................715.9-Tipos de dados...............................................................715.10-Comando IF..............................................................73

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    9/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 9

    5.11-Comando WHILE.....................................................745.12-Comando DO............................................................755.13-Comando FOR..............................................................765.14-ComandoSWITCH......................................................775.15-Comando RETURN......................................................785.16-Comando GOTO.......................................................... 785.17-Comando BREAK.........................................................795.18-Comando CONTINUE.................................................795.19-Estrutura de um Programa em C................................795.20-compilador CCS C Compiler...................................80

    6-Temporizadores -timers6.1-TemporizadorTMR0.....................................................856.1-Temporizador TMR1......................................................876.2-Temporizador Timer2....................................................896.3-Configurao do Timer..................................................91

    7-Comunicao

    7.1-Comunicao Serial RS232.............................................967.2-Funes para comunicao I2C...................................1137.3-Comunicao SPI..........................................................115

    8-Captura, Comparao e PWM8.1-Modo captura...............................................................1178.2-Modo comparao........................................................1198.3-Modo PWM Modulao por Largura de Pulso...........120

    9-Comparadores e Tenso de Referncia9.1-Modulo Comparador...................................................1239.2-Tenso de Referncia...................................................126

    10-Displays10.1-Display LED de sete segmentos:................................129

    10.2-Display LCD...............................................................134

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    10/225www.mecatronicadegaragem.blogspot.com

    _0 Renato A. Silva

    11- Motores de Passo11.1- Definio.....................................................................14511.2- Motor de Passo Unipolar...........................................14611.3- Motor de Passo Bipolar..............................................14711.4- Motor de Passo de Relutncia varivel.....................14811.4- Modos de acionamento..............................................148

    ApndiceTabela de funes do compilador CCS...............................158Tabela de converso de caracteres .......................................166

    Layout da placaexperimental..................................................170

    Referncia............................................................................173

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    11/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC__

    PrefcioNaatualidadeumadiversidadedemicrocontroladoresestapresentenomercadoexigindoaefetivabuscaporatualizao,parafinsaplicativosoperacionais e/ou didticos existe uma procura por aperfeioamento numaprogramaomaisfcil.Cadadiasefazmaisnecessrioumconjuntodeinstruesque no sofra variaes bruscas e relevantes entre os microcontroladores. Logo,a sua aprendizagem deve possibilitar o entendimento dos demais. Com basenisto, o contedo da presente obra vem produzir uma documentao para usocomo instrumento de aplicao pedaggica e operacional nos mais variadosambientes, bem como em desenvolver competncias no mbito das aplicaesdemicrocontroladoresemotivardesenvolvedoresaprojetar,desenvolvere

    implementar sistemas microcontrolados de pequeno e mdio porte.

    Ocontedodestelivroapresentaafundamentaotericasobreomicrocontrolador PIC _6F6_7 e _6F6_8, realiza experimentaes prticas comessesmicrocontroladoresesegueumtipodemetodologiacujoobjetivopermitiraodesenvolvedorafamiliaridadecomcomponenteseletrnicos,amontagem em matrizes de contato eposterior anlise, testes e programaodos circuitos propostos.

    Maisumavez,estelivrodedica-seaoaprendizadodatecnologiadeautomaoerobtica,utilizandomicrocontroladoresparaexecutartarefasespecficas. No decorrer do livro o leitor ter a oportunidade de inteirar-se datecnologia dos microcontroladores da famlia PIC da Microchip, iniciandono mdulo bsico com o uso de transistores passando pelas portas lgicas eavanando passo-a-passo at os microcontroladores, onde aprender a fazersoftwares em linguagem assembler e posteriormente utilizando a linguagemC.

    Finalmente,cabeao leitor sempre, o esforoparaaprender aprogramar

    microcontroladoreseusa-loscomcriatividadeeimaginaoparaodesenvolvimento de novos projetos. Aqui reforamos o pedido do autor nosentido de ter uma boa dose de pacincia no aprendizado e no desistir frentesdificuldades,poiscomcerteza,umacaminhadadeenriquecimentodeconhecimentos. E para aqueles que felizmente encontra-se em um degrau maiselevado, espera-se que a obra venha somar algo mais a sua carreira.

    Antonio Ildio Reginaldo da Silva

    Diretor Escola Senai Catalo -GO

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    12/225www.mecatronicadegaragem.blogspot.com

    __ Renato A. Silva

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    13/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC__

    Apresentao

    Estelivro,dedica-seaoaprendizadodaprogramaodemicrocontroladoresutilizando-sedalinguagemC,deformaprtica, conduzindo o leitor a um aprendizado gradativo ao usodosmicrocontroladoresparaexecutartarefasespecficas.Nodecorrerdolivrooleitorteraoportunidadedeinteirar-sedatecnologia dos microcontroladores da famlia PIC MCU da Mi-crochip de forma terica e prtica. Com o auxlio da placa experi-

    mental proposta, cujo layout pode ser baixado gratutamente dainternet no endereo http://renato.silva.nom.br e com a realizaodos exerccios complementares, o leitor encontrar em condiesde desenvolver aplicaes de controle de microcontroladores PIC,utilizando-se da linguagem de programao C.

    A viso da obra consiste em apresentar o microcontroladorcom os seus recursos e a medida que forem utilizados, indicar a

    formadeprogramao.Inicialmenteapresentadoaformadeprogramao em assembler de uma aplicao simples, e os meiosde gravao no microcontrolador. Posteriormente a programaoseguir em linguagem C, a medida que for sendo utilizado osrecursos do microcontrolador e de alguns perifricos.

    Asferramentasaquiutilizadassolivresparausocomexecesso do compilador CCS PIC C Compiler da CCS Inc. cujas

    informaes adcionais e sobre aquisio, podem ser adquiridas di-retamente do fabricante no endereo http://www.ccsinfo.com/

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    14/225www.mecatronicadegaragem.blogspot.com

    __ Renato A. Silva

    Introduo:

    O desenvolvimento atual da tecnologia nas reas de au-tomao e robtica deve-se principalmente ao desenvolvimentodos microcontroladores e processadores digitais de sinais (DSP),tendo estes memrias e estrutura que lembra os microcomputado-res atuais, executando um software escrito para uma determinadafinalidade, sendo extremamente robustos, baratos e confiveis.Dentre os diversos fabricantes, encontramos os microcontroladores

    da Microchip, uma empresa norte americana, fundada em 1989,com sede na cidade de Chandler, Arizona (oeste dos E.U.A.)que fabrica os microcontroladores da famlia PIC, uma das maisvariadas do mercado, tendo eles, uma filosofia de produto emcomum, caracterstica que permite a compatibilidade de softwaree a estruturao das aplicaes, pois um cdigo escrito para ummodelo de PIC poder ser migrado para outro modelo sem quesejam necessrias grandes mudanas no cdigo fonte. Isto facilita

    o trabalho de quem desenvolve e preserva o investimento de quemproduz.

    Os microcontroladores PIC, rene em um nico chip todos oscircuitos necessrios para o desenvolvimento de um sistema digi-tal programvel, dispondo internamente de uma CPU (Unidadecentral de processamento) que controla todas as funes realiza-

    das pelo sistema, tendo em seu interior diversos registradores ea Unidade Lgica Aritmtica (ALU) onde so executadas todas asfunes matemticas e lgicas, basicamente toda movimentao dedados passa atravs da ALU. A CPU conta tambm com memriade programa PROM (Memria programvel somente de leitura),memria RAM (memria de acesso randmico) e registrador W(uso geral) dentre outros.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    15/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _5

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    16/225www.mecatronicadegaragem.blogspot.com

    _6 Renato A. Silva

    1

    Histria do transistor e do microchip

    1.1 O Transistor

    Antes de PICarmos um pouco, faz-se necessrio uma pe-quena viso do desenvolvimento, iniciando no final dos anos 40,com a construo do primeiro transistor nos laboratrios da BELLem23dedezembrode1947porJohnBardeen,WalterHouserBrattain, e William Bradford Shockley, os quais ganharam o pr-mio Nobel de fsica 1956. O transistor a contrao das palavras

    transferresistor,resistnciadetrans-ferncia.umdispositivoeletrnicosemicondutor,componentechaveemtodaaeletrnicamoderna,deondeamplamenteutilizadoformandopartede computadores, portas lgicas mem-rias e uma infinidade de circuitos. Esterevolucionrioengenhotransformouo

    mundoem pouco tempo.Cientistas em diversos laboratrios estavam procura de umcomponente que substitusse as vlvulas e reles antigos. Diversosmateriais foram submetidos a testes fsico-qumicos e classificadosem dois grupos, os condutores e os no condutores, isolantes oudieltricos. Alguns materiais no se enquadravam em nenhum dosdois grupos, ora conduziam ora isolavam, foi ento classificado

    como semicondutor.Em 1945, por iniciativa de Mervin Kelly, ento diretor da BellLabs, formou-se um grupo de pesquisa para o estudo dos semi-

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    17/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _7

    condutores. Um ano mais tarde o grupo j estava quase formado.William Bradford Shockley, fsico do MIT (instituto de pesquisade Massasshussets), John Bardeen, engenheiro eltrico e WalterHouser Brattain, fsico.

    Dois anos mais tarde e depois de muito trabalho, os cientistasconseguiram em 16 de dezembro de 1947 cons-truir o transistor primordial construdo comduas folhas de ouro prensados em um cristalde germnio e com uma carga eltrica aplica-da, esta flua entre o cristal, obtendo o efeito

    de amplificao to desejado. A Bell Labs.Promoveu uma ampla difuso de informaesa fim de incentivar outros a pesquisarem, efabricarem o transistor, chegando a ponto devender a patente do transistor por apenas U$ 25.000,00. O objeti-vo era que outras empresas alavancassem o desenvolvimento denovas tecnologias que pudessem ser usadas em telecomunicaes,sua rea de atuao.

    Anos mais tarde, uma dessas companhias, a Texas Instru-ments, anunciou o primeiro transistor de silcio, material, queapresentava inmeras vantagens sobre o germnio, uma delasera a abundante matria prima o que reduziria os custos de fa-bricao. A Texas tornou-se assim uma poderosa concorrente nomercado.

    O transistor um dispositivo semicondutor de estado slido,ele foi assim chamado pela propriedade de trocar a resistncia pela

    corrente eltrica entre o emissor e o coletor. um sanduche dediferentes materiais semicondutores em quantidade e disposiodiferentes intercalados. Pode-se obter assim transistores PNP eNPN. Estas trs partes so: Uma que emite eltrons (emissor)uma outra que recebe e os coleta (coletor) e uma terceira (base)que est intercalada entre as duas primeiras, regula a quantidadedesses eltrons. Um pequeno sinal eltrico aplicado entre a base e

    o emissor modula a corrente que circula entre o emissor e coletor.O sinal base emissor por ser muito pequeno em comparao como emissor base. A corrente emissor coletor aproximadamente

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    18/225www.mecatronicadegaragem.blogspot.com

    _8 Renato A. Silva

    da mesma forma que a da base emissor, mas amplificada por umfatordeamplificao,chamadoBeta.Todotransitortemumfator beta sendo assim amplificador, pode tambm se usado paraoscilar, para retificar, para comutar, sendo esta a principal funodo transistor na eletrnica digital.

    1.3 Tipos de transistor

    Existem diversos tipos de transistores, mais a

    classificao mais acertada consiste em dividi-losem transistores bipolares e transistor de efeito decampo FET, sendo est dividida em JFET, MOSFET,MISFET, etc. A diferena bsica entre os diversostipos de transistores est na forma em que controlao fluxo de corrente. Nos transistores bipolares que possuem umabaixa impedncia de entrada, onde o controle se exerce injetandouma baixa corrente (corrente de base), ao passo que o transistor de

    efeito de campo que possui uma alta impedncia, tendo o controleatravs de tenso (tenso de gate).Os transistores de efeito de campo FET mais conhecidos soos JFET (Junction Field Effect Transistor), MOSFET(Metal-Oxide-Semiconductor FET) e MISFET (Me-tal-Insulator-Semiconductor FET). Este tem trsterminais denominadosgate, dreno, supridouro.O gate regula a corrente no dreno, fornecida nosupridouro.Indiscutivelmente com o surgimentodo transistorosequi-pamentos eletrnicos ficaram mais leves, compactos e passaramaconsumirmenosenergia,tendoestascaractersticascadavezmais relevncia na indstria.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    19/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC_9

    1.4 O Nascimento do Microchip

    Apenas treze anos aps a inveno do transistor, houve ou-tro grande salto tecnolgico, a inveno do circuito integrado oumicrochip,porJackS.KilbydaTexasInstrumentseRobertN.Noyce da Fairchild Semicondutor.Noverode1958,JackS.Kilby,entroupara a equipe da Texas Instruments, em Dallas,E.U.A,ondedesenvolveuoprimeiromicro-chip da histria, usando componentes ativos

    (transistores,diodos)epassivos(resistores,capacitores)emumanicapeadematerialsemicondutor do tamanho de um clips de papel. O sucesso da de-monstrao de laboratrio foi o nascimento do primeiro microchipsimples da histria, em 12 de Dezembro de 1958.Paralelamente na Fairchild Semicondutor, Robert N. Noyceavanava em suas pesquisas, inspirado nas tcnicas de mascara-mento que empregavam dixido de silcio para a difuso de impu-

    rezas, e utilizando-se de trilhas de ouro ou alumnio aplicado comajuda de mscara e fotolitogrfia, enquanto o processo de Kilbyempregava pequenos fios nas ligaes internas do circuito.A tecnologia evoluiu, e tambm o nmero de empresas e em1962nasceulgicaTTL,eanosmaistardeatecnologiaMOS(metal-oxide semiconductor), seguida pela CMOS (complementarymetal-oxide semiconductor), tecnologia atual hoje em dia. Com atecnologia CMOS e a crescente miniaturizao do microchip, sur-giu em 1974 o primeiro microprocessador da histria denominado1802 fabricado pela RCA, seguido pelo microprocessador de 4bits da Texas Instruments, o TMS1000.A eletrnica digital baseia-se em tenso (definido como 1) eausncia de tenso (definido como 0) onde o nvel alto ou 1 de5 volts ou 2/3 dafonte e o nvel 0 zero volt ou um pouco acima,portanto, para a eletrnica digital somente importa o nvel alto

    ou baixo. Com esta tica as indstria desenvolveram blocos coma unio de centenas de transistores para realizao de uma tarefaespecfica denominando-se circuito integrado.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    20/225www.mecatronicadegaragem.blogspot.com

    _0 Renato A. Silva

    22

    Portas Lgicas, Nmeros Binrios eHexadecimais

    2.0-As Portas LgicasAs portas lgicas formam a base da eletrnica digitalinician-do um novo compndio na eletrnica e o seu estudo essencialao entendimento e aprendizado dos microcontroladores e micro-processadores. Ao agrupar circuitos ativos e passivos em blocos,oscientistascriaramblocosqueexecutavamumadeterminadafuno lgica. Estas funes so AND (E), NAND (NO E), OR

    (OU), XOR (OU EXCLUSIVO), XNOR (NO EXCLUSIVO) e NO(NO). Para trabalharmos com as portas lgicas faz-se o uso deuma tabela verdade, a qual cada funo tem a sua.Nas portas AND tm-se nvel alto (tenso) em sua sada so-mente se todas as suas entradas, tiverem nvel alto, obtendo assimum E em suas entradas, pr exemplo entrada E entrada b.Dizemos assim,queasada

    oresultadodaentradaA,EdaentradaB.

    AsportasNAND,ao

    contrriodasportasANDsomenteter

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    21/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC__

    nvel alto em sua sada se as suas entradas tiverem nvel baixo.As portas lgicas do tipo OR tero nvel alto em sua sada se umaOU outra entrada tiver nvel alto.As portas l-gicastipoNOR,aocontrriodafunoOR,so-mente ter nvelaltoou1emsuasada se as entradas forem zero. Observe a diferena bsica entre

    afunoOReaNOR.

    Asportaslgicas XOR, ga-rantem o nvel alto em sua sada seuma entrada tiver em nvel altoe outra em nvel baixo. Observe

    quediferentementedaANDsetivermos 1 e 1 a sada ser 0.

    As portas XNOR apresentam princpio semelhante funoXOR, apenas com o detalhe de ter sadas invertidas.AsportaslgicasNO,soasmaisfcildetodas,apresen-tanvelaltoemsuasadasesuaentrada for nvelbaixo,inverten-doassimosn-veis lgicos.

    Como j sabemos o nvel alto (normalmente 5 volts) repre-sentados pr 1 e o nvel baixo (zero volts) pr 0, assim a combi-

    nao de 1 e 0 em grupos de 8, formo um conjunto denominadobyte.Veremosagoraasvriasrepresentaesdeconjuntosnumricos e as suas formas de converso.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    22/225

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    23/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC __

    zando nmeros e realizar operaes com eles.Para convertemos uma representao decimalem binria, fazemos sucessivas divises por 2 eanotamos os resultados. Depois ordenamos deforma lgica da direita para a esquerda

    2.1.2- Nmero Hexadecimal

    A numerao hexadecimal que como as anteriores tem seu

    conjunto matemtico representado por 16 nmeros, facilita eacelera a decodificao de dados, economizando espao em ar-mazenamento de dados. Neste conjunto temos 16 nmeros sendo[0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F]. Utilizamos basicamente o conjuntode nmeros decimais (com10 elementos) e lanamos mos das le-tras (A,B,C,D,E,F) para complementar o conjunto atribuindo-lhevalor. Desta forma o nmero A passa a ter o valor 11 e o F o valor16. O nmero 17 decimal igual a 11 hexadecimal e o nmero

    23 decimal igual ao nmero 17 hexadecimal. Parece um poucoconfuso mas no , acompanhe no apndice a tabela de nmerosdecimais x binrio x hexadecimal. Assim o nmero 65535 (5 casas)em decimal, ficaria como 11111111.11111111 (16 casas) em binrioe FFFF (4 casas) em hexadecimal.

    A converso Hexadecimal paradecimal multiplica o valor do digitopela potncia de 16, fazendo a soma-tria. Ex: 8AB1 = 35.505

    Para convertermos hexadeci-mal em binrio, a forma mais prtica termos em mente a tabelade nmeros de A at F embinrio e depois agrupar osdgitos binrios, veja 1A ficacom 1 (primeiro dgito) e 1010

    da tabela. Outro exemplo 3Cconvertido d 11(referente ao3) e 1100(referente ao C).

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    24/225www.mecatronicadegaragem.blogspot.com

    __ Renato A. Silva

    Tabela hexadecimal x binria A - FA B C D E F

    1010 1011 1100 1101 1110 1111

    2.1.3- Numerao Octal

    O sistema de numerao octal um conjunto matemticoonde temos oito elementos [0,1,2,3,4,5,6,7] que apresenta grandeimportncia principalmente pela facilidade

    de converso de binrio para octal. A metodo-logia de converso semelhante as anteriores,para converso de numerao decimal paranumerao octal, faz-se divises sucessivaspor 8 at encontrar o menor quociente e pos-teriormente pegamos o resto da diviso emordem inversa.

    Para converso de octal para decimal, multiplicamos o nu-

    meral por 8 elevado a potencia correspondente.

    A Converso de numerao octal para numerao binriafaz-se uso da tabela octal onde temos o correspondente binrio

    de cada nmero octal, de-pois agrupamos os bytescorrespondentes ao octal dadireita para a esquerda.

    Tabela de converso entre diversas basesDecimal Hexadecimal Binrio Octal

    0 0 0000 000

    1 1 0001 0012 2 0010 010

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    25/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _5

    Decimal Hexadecimal Binrio Octal

    3 3 0011 011

    4 4 0100 1005 5 0101 101

    6 6 0110 110

    7 7 0111 111

    8 8 1000

    9 9 1001

    10 A 1010

    11 B 1011

    12 C 110013 D 1101

    14 E 1110

    15 F 1111

    As funes lgicas booleanas so utilizadas quase que natotalidade das aplicaes com microcontroladores. No captuloanterior o leitor viu as diversas funes (portas lgicas), vejaagora exemplo de aplicao destas funes em numerao binrioe hexadecimal.

    Neste captulo, tivemos uma viso geral da relao, conversoe utilizao dos diversos conjuntos numricos e sua indiscutvele relevante importncia para os sistemas computacionais. Noprximo captulo veremos os diversos tipos de memrias e a suas

    utilizaes.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    26/225www.mecatronicadegaragem.blogspot.com

    _6 Renato A. Silva

    3

    Memrias e Microcontroladores

    3.1 Memrias

    A memria a capacidade de reter, recuperar, armazenare evocar informaes disponveis, neste caso em forma binriade 0 e 1. Transistores, portas lgicas e flip-flops so utilizadosna implementao de memrias eletrnicas, sendo as principaistecnologias definidas como memrias ROM, PROM, EPROM,EEPROM, FLASH e RAM.

    Memrias ROM, memria somente de leitura, uma memriaonde os dados gravados no podem ser modificados ou cancela-dos. Os dados so gravados na fabricao atravs de uma mscaracolocada sobre o chip de modo a registrar nas clulas disponveisas informaes desejadas.

    Memrias PROM, memria somente de leitura programvel aquela onde os dados podem ser inseridos pr meio de gravadores

    especficos uma nica vez. Cada clula deve armazenar um bit debyte, como um fusvel onde o 1 seria o fusvel intacto e o 0 fusvelrompido, preciso muito cuidado ao programar este tipo de me-mria, pois se um bit ou um byte for gravado errado, no h comocorrigir. A gravao feita utilizando uma tenso chamada VPP,cuja amplitude depende da memria, normalmente 25 volts.

    Memrias EPROM, memria somente de leitura apagvel, estasem dvida bem mais comum dos que a PROM, pode ser apagada

    se exposta luz ultravioleta atravs de uma janelinha de quartzo(transparente a radiaes ultravioletas) e programada novamente

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    27/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _7

    pr meio de gravadores especficos, pr muitas vezes.Memrias EEPROM, memria somente de leitura apagvel

    eletricamente, pode ser apagada eletricamente e regravadas mi-lhares de vezes, utilizando gravadores especficos, no precisandoexp-la a radiao ultravioleta, sendo muitas vezes menores queas EPROM, j que no tem a janelinha de quartzo.

    Memria FLASH, parecida em tudo com as do tipo EEPROM,podendo ser apaga e gravada eletricamente e gravada novamente,podendo ter at 100.000 ciclos de apagamentos

    Memria RAM, Constituda de transistores ou flip-flop, po-

    dem armazenar dados somente quando tiverem tenso, quandono houver tenso estaro zeradas, sendo volteis, tem seu usono processo auxiliar ao processador armazenando informaestemporrias. Basicamente so constitudas de dois tipos: estticase dinmicas.

    As memrias RAM estticas, muito utilizada no final dos anos80, tinham como principal desvantagem o tamanho, pois cada chippodia armazenar pequena quantidade de bytes, algo em torno de

    1k, 4k byte. Portanto para criar um banco de memria com certacapacidade, fazia-se necessrio projetar uma placa de proporesconsidervel.

    As memrias RAM dinmicas, ao contrrio tinham alta densi-dade podendo armazenar por chip 1 megabyte facilmente, pormestas memrias necessitam de refresh constante e conseqente-mente circuitos de apoio. So estas empregadas hoje em dia noscomputadores, normalmente tem entre 8 e 10 transistores por byte

    e um tempo de acesso da ordem de 7 nanosegundos !

    3.2 Microcontrolador

    Microcontrolador um circuito integrado programvel quecontm todos os componentes de um computador como CPU

    (unidade central de processamento), memria para armazenarprogramas, memria de trabalho, portas de entrada e sadaspara comunicar-se com o mundo exterior, sistema de controle de

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    28/225

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    29/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _9

    Cada tipo de microcontrolador serve para um propsito ecabe ao projetista selecionar o melhor microcontrolador para oseu trabalho. Dentre os mais populares, encontramos o 16F84,ainda fcil de se obter, mas est sendo substitudo pelo modelo16F627 ou 16F628 por ter mais recursos e preo aproximado. Adiferena entre o PIC 16F627 e o PIC 16F628 est na quantidadede memria.

    3.4 Apresentando o PIC 16F62x

    O microcontrolador PIC 16F62x, rene em uma pastilha to-dos os elementos de uma CPU RISC de alta performance, sendofabricado em encapsulamento DIP (18 Pinos), SOIC (18 pinos) ouSSOP (20 pinos). Onde encontramos:

    - Set (conjunto) de instrues com 35 funes- 200 nanosegundos por instruo @ 20 Mhz.- Clock de at 20 Mhz.

    - 1024 bytes de memria de programa (16F627)- 2048 bytes de memria de programa (16F628)- Stack com 8 nveis- 16 registradores especiais de funes- Capacidade de interrupo- 16 portas de entrada / sadas independente- Alta corrente de sada, suficiente para acender um LED- Comparador analgico.- Timer0 de 8 bits com prescaler, postscaler- Timer1 de 16 bits com possibilidade de uso de cristal ex-

    terno- Timer2 de 8 bits com registro de perodo, prescaler e posts-

    caler- Captura com 16 bits e resoluo mxima de 12,5 nS.- Comparao com 16 bits e resoluo mxima de 200 nS.

    - PWM com resoluo mxima de 10 bits.- USART para comunicao serial- 16 bytes de memria RAM comum

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    30/225www.mecatronicadegaragem.blogspot.com

    _0 Renato A. Silva

    -Power On Reset (POR)-Power Up Timer (PWRT)-Oscillator start-up (OST)-Brow-out Detect (BOD)-Watchdog Timer (WDT)-MCLR multiplexado-Resistor pull-up programveis no PORTB-Proteo de cdigo programvel-Programao em baixa voltagem-Power save SLEEP

    -Oscilador-ResistorexternoER-Resistor interno -INTRC-ClockexternoEC-Cristal alta velocidade -XT-CristalbaixavelocidadeHS-CristalLP-Programao in-circuit

    -Baixo consumo-< 2.0 mA @ 5.0V, 4 Mhz.-15 uA @ 3.0V, 32 Khz.-< 1 uA em repouso @ 3.0V.-Quatro localizaes para ID deusurio

    3.5 Alimentao

    Normalmente o PIC alimentado com uma tenso 5,0 voltsprovenientesdeumafonteDCcomregulaopositiva,umre-gulador7805ou78L05podemserutilizadosparatalfuno,lembrando aqui que o 78L05 tem capacidade de suprir at 100ma,no devendo exceder 80% deste consumo pois aumenta muito o

    aquecimento do regulador. O consumo de corrente do microcon-troladormnimo,consumindomenosde2,0mAcom5volts,trabalhando a 4Mhz ou 15,0 micro amp com 3 volts, trabalhando

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    31/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC __

    a 32 Khz. Quando em modo StandBy, consome menos de 1,0 mi-cro amp. com 3.0V, porm devemos ver o consumos dos outroscomponentes do circuito.

    - PIC 16F62x - 3.0V a 5.5V- PIC 16LF62x - 2.0V a 5.5VEm suas portas de sadas temos uma corrente de aproxima-

    damente 10 mA, o suficiente para iluminar um led diretamente,no entanto, sempre devemos utilizar um resistor em srie na portanormalmente de 10k. Respeitando suas caractersticas o PIC tra-balhar sem problemas com grande estabilidade durante muito

    tempo sem necessidade de manuteno.

    3.6 Definio da CPU

    As CPUs dependendo do tipo de instrues que utilizampodem ser classificadas em:

    CISC: (Complex Instruction Set Computer)processadores

    com conjunto de instrues complexas, dispe de um conjunto comelevado nmero de instrues algumas sofisticadas e potentes. Emcontrapartida requerem muitos ciclos de mquina para executaras instrues complexas.

    RISC: (Reduced Instruction Set Computer) processadorescom conjunto de instrues reduzidos, em nosso caso so 35 ins-trues simples que executam em 1 ou 2 ciclos de mquina comestrutura pipeline onde todas as instrues executam na mesmavelocidade.

    SISC.(SpecificInstruction Set Computer) processadores

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    32/225www.mecatronicadegaragem.blogspot.com

    com conjunto de instrues especficas.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    33/225www.mecatronicadegaragem.blogspot.com

    __ Renato A. Silva

    3.7 Arquitetura Interna

    Entende-se por arquitetura interna a forma como o circuitoconstrudo,representadaporblocos,istocomosuaspartesinternas se interligam, podemos definir os PICscomo sendo Ar-quitetura Harvard, onde a CPU interligada memria de dados(RAM) e a memria de programa (EPROM) por um barramentoespecfico.Tradicionalmenteosmicroprocessadorestmcomobaseestrutura de Von Neumann, que se caracteriza pordispor de uma

    nica memria principal em que se armazenam dados e instru-es.Oacessomemriafeito atravs de um sistema deuma nica via (bus de dados,instrues e de controle).A arquitetura interna doPICdomodeloHarvard,

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    34/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC __

    onde dispe de memrias de dados e de programas. Cada me-mria dispe de seu respectivo bus, o que permite, que a CPUpossa acessar de forma independente a memria de dados e a deinstrues. Como as vias (bus) so independentes estes podem tercontedos distintos na mesma direo. A separao da memriade dados da memria de programa faz com que as instruespossam ser representadas por palavras de mais que 8 bits, assimo PIC, usa 14 bits para cada instruo, o que permite que todasas instrues ocupem uma s palavra de instruo, sua arquite-tura ortogonal, onde qualquer instruo pode utilizar qualquer

    elemento da arquitetura como fonte ou destino.Todo o processo baseia-se em banco de registros onde todosos elementos do sistema como, temporizadores, portas de entrada/sada, posies de memrias, etc, esto implementados fisicamentecomo registros. O manejo do banco de registros, que participamativamente na execuo das instrues, muito interessante aoser ortogonal.

    3.8 Caractersticas do PIC 16F62x

    Conforme vemos no diagrama em blocos do PIC 16F627 e16F628, podemos ressaltar as seguintes caractersticas:

    memria de programa EEPROM de 1Kb x 14 bits no 16F627.memria de programa EEPROM de 2Kb x 14 bits no 16F628.Memria de dados EEPROM de 64 bytes.memria de dados RAM com 224 bytes dividida em 4 ban-

    cos.Registro de propsito especfico (SFR) com 32 posies.Registro de propsito geral (GPR) com 224 posies.ALU de 8 bits e registro de trabalho W que normalmente re-

    cebe um operando que pode ser qualquer registro, memria, portade entrada/sada ou o prprio cdigo de instruo.

    Pilha (Stack) de 8 nveis.Contador de programa (PC) de 13 bits (o que permite ende-rear at 8 KB de memria).

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    35/225www.mecatronicadegaragem.blogspot.com

    __ Renato A. Silva

    Recursos conectados al bus de dados:PortA de 8 bits PortB de 8 bits Temporizadores / contadores TMR0, TMR1, TMR2ComparadoresCaptura , Comparao e PWMVoltagem de referenciaUSART para comunicao serialMemria EEPROM

    3.9 Organizao da Memria

    OPICcontmumregistradorde-nominadoPC(ProgramCounter)queimplementadocom13bits,capazdeenderear at 8K de programa, mas quesomente1 implementado fisicamente

    no16F627(0000h03FF)e2Ksoim-plementados no 16F628 (0000H 07FFh).EsteregistradorligadodiretamenteaPilha(stac)armazenaoendereocontm o endereo da instruo que vaiser executada. Ao incrementar ou alteraro contedo do PC, o microcontroladortemummapasegurodeondeestaepara onde ir.

    3.10 A Pilha ou Stack

    Apilhaumamemriaindepen-dentedamemriadeprogramaeda

    memria de dados, com estrutura LIFO(Last In First Out) ltimo dado a entrar

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    36/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _5

    ser o primeiro dado a sair com oito nveis de profundidade ouarmazenamento com 13 bits cada um, sua funo guardar ovalor do PC quando ocorre um salto do programa principal parao endereo de um subprograma a ser executado, fazendo assimcom que o microcontrolador tenha total controle as chamadasde rotinas. Seu funcionamento como um buffer circular ondeo endereo da ltima chamada o primeiro a retornar em umachamada RETUR, RETLW ou RETIE, como no h nenhuma flagindicando o transbordamento da pilha se houver uma chamada derotina aps outra coma mais de oito nveis a primeira ser sobres-

    crita, impossibilitando o retorno correto do programa causandoum erro fantstico.

    3.11 Organizao da memria de dados

    A memria de dados divide-se em quatro bancos, contendo osregistros de propsitos gerais (GPR), registros de funes especiais

    (FSR). A seleo do banco de memria feita atravs dos bits RP1(STATUS ) e RP0 (STATUS ) conforme a seguinte tabela:

    RP1, RP0 Banco Endereo

    0 0 0 000h - 07Fh

    0 1 1 080h - 0FFh

    1 0 2 100h - 17Fh

    1 1 3 180h - 1FFh

    Em cada banco temos 7F posies de memrias (128 bytes) oque nos d 512 bytes, no entanto existe uma lacuna nos bancosonde temos endereos no implementados, assim para memriaRAM, ou melhor, para os registro de propsito geral (GPR) temos224 bytes. Os Registros especiais (FSR) ocupam os primeiros 32bytes de cada banco e so utilizados pela CPU e pelos mdulos

    perifricos para controlar o funcionamento do dispositivo, ondealguns destes registros especiais esto duplicados nos 4 bancos

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    37/225www.mecatronicadegaragem.blogspot.com

    _6 Renato A. Silva

    para reduzir o cdigo e tornar o acesso mais rpido.Os registros que afetam a CPU so: STATUS, OPTION,

    INTCON, PIE1, PIR e PCON. Veremos agora descrio destes eoutros registros.

    3.12 Registradores de Funes Especiais

    Registro de STATUS endereos 03h, 83h,103h e 183h, contmo estado da Unidade Lgica Aritmtica ALU (C, DC, Z), estado

    de RESET (TO, PD) e os bits para seleo do banco de memria(IRP, RP1, RP0).

    bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

    IRP RP1 RP0 #TO #PD Z DC C

    bit descrio

    IRP Registrador de seleo de banco

    0 = banco 0 e 1 (00h - FFh)RP1,RP0 Registrador de seleo de banco RAM

    RP1,RP0 banco localizao

    00 banco 0 00h 7Fh

    01 banco 1 80h FFh

    10 banco 2 100h 17Fh

    11 banco 3 180h 1FFFh

    TO TimeOut - bit somente leitura0 = ocorreu estouro de WDT

    PD Power Down - bit somente para leitura

    0 = execuo da instruo SLEEP

    Z Zero

    0 = resultado da operao aritmtica ou lgica no zero

    DC Digit Carry - Transporte de dgito

    0 = um valor maior subtrado de um menor

    1 = banco 2 e 3 (100h-1FFh)

    1 = depois de power-up, instruo CLRWDT ou SLEEP

    1 = depois de power-up ou CLRWDT

    1 = resultado da operao aritmtica ou lgica zero

    1 = um valor menor subtrado de um valor maior

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    38/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _7

    bit descrio

    IRP Registrador de seleo de banco

    0 = banco 0 e 1 (00h - FFh)C Carry - Transporte

    0 = um valor maior subtrado de um menor

    Registro OPTION ou OPTION_REG endereo 81h e 181h um registro de leitura e escrita que contm vrios bits de

    controle para configurar o funcionamento do prescaler ao timer0e ao WDT, interrupo externa ao timer0 e os resistores de pull-up do PORTB.

    bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

    RBPU INTED TOCS TOSE PSA PS2 PS1 PS0

    bit descrio

    RBPU habilitao dos resistores pull-up no portB

    0 = resistncias de pull-up ligadas

    INTDEG Interrupo no pino RB0/INT

    0 = interrupo desligada, sensvel subida do pulso

    TOCS seleo da fonte de clock para o timer 0 TMR0

    TOSE fonte de pulso para o timer 0 TMR0

    0 = incrementa pulso de baixo para alto (ascendente)

    PS2, divisor de freqncia (prescaler)

    PS0 BIT 2, 1, 0 TMR0 WDT000 1:2 1:1

    001 1:4 1:2

    010 1:8 1:4

    011 1:16 1:8

    100 1:32 1:16

    101 1:64 1:32

    110 1:128 1:64

    111 1:256 1:128

    1 = banco 2 e 3 (100h-1FFh)

    1 = um valor mais pequeno subtrado de um valor maior

    1 = resistncias de pull-up desligadas

    1 = interrupo ligada, sensvel descida do pulso

    1 = tmr0 atua como contador por transio de RA4/TOCKL

    1 = incrementa pulso alto para baixo (descendente)

    PS1,

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    39/225www.mecatronicadegaragem.blogspot.com

    _8 Renato A. Silva

    Registro INTCON - endereo 0Bh, 8Bh, l0Bh e 18Bh um registro de leitura e escrita que contm os bits de habi-

    litao das vrias interrupes (exceto do comparador), inclusivepor mudana de estado no PORTB.

    bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

    GIE PEIE TOIE INTE RBIE TOIF INTF RBIF

    bit descrio

    GIE interrupo global

    0 = desabilita todas as interrupes

    PEIE interrupes de perifricos

    0 = desabilita todas as interrupes de perifricos

    TOIE interrupo por transbordamento (over_ow) de timer0 TMR0

    0 = desabilita interrupo para TMR0

    INTE interrupo externa

    0 = desabilita interrupo externa de RB0/INT

    RBIE interrupo por mudana de estado no portB

    0 = desabilita interrupo para o portB

    TOIF _ag de over_ow para o TMR0

    0 = no ocorreu estouro

    INTF ocorrncia de interrupo externa em RB0/INT

    0 = no ocorreu interrupo

    RBIF ocorrncia de estado no portB

    0 = no ocorreu mudana de estado em RB7:RB4

    Registro PIE1 - endereo 8Ch.Este registro contm os bits individuais de interrupes dos

    perifricos, sendo que para seu funcionamento o bit PEIE (IN-TCON ) deve estar habilitado.

    bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0EEIE CMIE RCIE TXIE - CCP1IE TMR2IE TMR1IE

    1 = habilita todas as interrupes

    1 = habilita todas as interrupes de perifricos

    1 = habilita interrupo para TMR0

    1 = habilita interrupo externa de RB0/INT

    1 = habilita interrupo para o portB

    1 = ocorreu estou em TMR0 - deve ser zerado via soft

    1 = ocorreu interrupo

    1 = ocorreu mudana de estado em RB7:RB4

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    40/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC_9

    bitdescrio

    EEIE_ag de interrupo de escrita na EEPROM completada

    0 = desabilita interrupo de trmino de escritaCMIEinterrupo do comparador habilitada

    0 = desabilita interrupo do comparador

    RCIEinterrupo de recebimento de caracter no USART

    0 = desabilita interrupo de recebimento do USART

    TXIEinterrupo de envio de caractere no buffer do USART

    0 = desabilita a interrupo de transmisso do USART

    CCP1IEinterrupo do CCP1 para captura, comparao e PWM0 = interrupo desabilitada

    TMR2IEinterrupo

    0 = desabilita interrupo

    TMR1IE_ag de over_ow

    0 = desabilita interrupo de estouro de TMR1

    RegistroPIRIendereo0ChEste registro contm as flags individuais que indicam as in-terrupes provocadas por perifricos.

    bit 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0

    EEIFCMIFRCIFTXIF-CCP1IFTMR2IFTMR1IF

    bitdescrioEEIF_ag de interrupo de escrita na EEPROM

    0 = operao de escrita na eeprom no terminou

    CMIF_ag de interrupo do comparador

    0 = no houve mudana na sada do comparador

    RCIF_ag de interrupo de recebimento no USART

    0 = buffer de recebimento est vazio

    TXIF_ag de interrupo de transmisso do USART0 = buffer de transmisso est cheio

    1 = habilita interrupo de trmino de escrita

    1 = habilita interrupo do comparador

    1 = habilita interrupo de recebimento do USART

    1 = habilita a interrupo de transmisso do USART

    1 = interrupo habilitada

    1 = habilita interrupo

    1 = habilita interrupo para estouro de TMR1

    1 = operao de escrita na eeprom terminou. limpar via soft

    1 = houve mudana na sada do comparador

    1 = buffer de recebimento est cheio

    1 = buffer de transmisso est vazio

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    41/225www.mecatronicadegaragem.blogspot.com

    _0 Renato A. Silva

    bit descrio

    CCPIF _ag de captura, comparao e PWM (no aplicado)

    modo captura modo comparao1 = ocorreu captura 1 = ocorreu comparao

    0 = no ocorreu captura 0 = no ocorreu comp.

    TMR2IF _ag de interrupo do TMR2

    0 = no houve ocorrncia

    TMR1IF _ag de interrupo do TMR1

    0 = no ocorreu estouro no TMR1

    Registro PCON - endereo 0ChEste registro contm as flags que permitem diferenciar entre

    um Power-on Reset (POP), um Brown-out Reset (BOD), um Resetpor Watchdog (WDT) e um Reset externo por MCLR.

    bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

    - - - - OSCF - POR BOD

    bit descrio

    OSCF freqncia do oscilador INTRC/ER

    0 = 32 Khz.

    POR status Power-on-reset

    0 = ocorreu (aps ocorrncia deve ser setado)

    BOD status do Brown-out

    0 = ocorreu reset (aps ocorrncia deve ser setado)

    Os demais registros especiais relacionados com o funciona-mento dos perifricos sero utilizados junto dos perifricos.

    1 = houve ocorrncia entre TMR2 e PR2

    1 = ocorreu estou em TMR1 - deve ser limpo via soft

    1 = 4 Mhz.

    1 = no ocorreu

    1 = no ocorreu reset brown-out

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    42/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC __

    3.13 Palavra de configurao e identificao:

    um registrador com 14 bits que se escreve durante o pro-cesso de gravao do dispositivo que deve estar de acordo com oesquema / sistema em que ser utilizado, pois determina a formado oscilador, se usar reset entre outros. Ocupa a posio reser-vada de memria 2007h.

    13 12 11 10 9 8 7

    CP1 CP0 CP1 CP0 - CPD LVP

    6 5 4 3 2 1 0BODEN MCLRE FOSC2 PWRTE WDTE FOSC1 FOSC0

    bit descrio

    CP1, CP0

    11 desativado desativado

    10 0400h - 07FFh desativado

    01 0200h - 07FFh 0200h - 03FFh

    00 0000h - 07FFh 0000h - 03FFh

    CPD bit de proteo de cdigo

    0 = proteo habilitada

    LVP habilitao do modo de programao em baixa voltagem

    0 = desabilitado e Rb.4 usado como entrada/sada

    BODEN habilitao do reset por deteco Brown-out

    0 = reset desabilitadoMCLRE seleo do Master Clear Reset

    0 = reset desabilitado e Ra.4 como entrada

    PWRTEN termpo de estabilizao - POWER-UP

    0 = habilitado

    WDTE habilitao do WDT - WatchDog Timer

    0 = desabilitado

    bit 13,12,11,10 para 2K de mem. para 1k de mem.

    1 = desabilitada proteo da memria de cdigo

    1 = habilitado em Rb.4

    1 = reset habilitado

    1 = reset habilitado em Ra.4

    1 = desabilitado

    1 = habilitado

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    43/225www.mecatronicadegaragem.blogspot.com

    __ Renato A. Silva

    bit descrio

    FOSC2

    FOSC0 000 LP cristal com baixa freqncia001 XT cristal/ressonador 4 Mhz

    011 EC clock em Ra.7 e I/O em Ra.6

    100 INTRC resistor/capacitor interno com I/O em

    101 INTRC resistor/capacitor com I/O em Ra.7

    110 ER resistor externo em Ra.7 - I/O em Ra.6

    111 ER resistor externo em Ra.7 clkout em Ra.6

    3.14 Portas de Entrada / Sada

    As linhas de comunicao de entrada ou sada de dados (io)no microcontrolador so chamadas de portas, conforme vemos na

    representao esquemtica do microcontrolador, encontramos 16portas de entrada ou sada (I/O). Estas portas esto divididas emdois grupos, o grupo A com 8 portas e o grupo B com 8 portas. Ogrupo A chamado de PORTA e o grupo B de PORTB. Cada portapara ser identificada chamada de R seguido do grupo (A, B) edo nmero da porta, sempre iniciando em zero. Ex. RA0, RA1,RA2, RB0, RB1, RB2.

    Ao contrario de alguns modelos, o 16F62x pode utilizar oscila-

    dor interno, ou externo. Quando usar o oscilador interno, sobraroduas portas para utilizar como entrada ou sada.

    Porta Bidirecional A (PORTA)Consta de 8 linhas de entrada/sada multifuncionais com as

    seguintes funes:

    Pino Funo Tipo Sada Descrio

    Ra0 Ra0 ST CMOS Entrada / sada bidirecional

    bits 4, 1, 0 descrioFOSC1

    Ra.7 e Ra.6

    AN0 NA - Entrada do comparador analgico

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    44/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC__

    PinoFunoTipoSadaDescrio

    Ra1Ra1STCMOSEntrada / sada bidirecional

    Ra2Ra2STCMOSEntrada / sada bidirecional

    Vref-ANSada de voltagem de referncia

    Ra3Ra3STCMOSEntrada / sada bidirecional

    CMP1-CMOSSada do comparador 1

    Ra4Ra4STODEntrada / sada bidirecional

    CMP2-ODSada do comparador 2

    Ra5Ra5ST-Entrada / sada bidirecional

    VPP--Voltagem de programao

    Ra6Ra6STCMOSEntrada / sada bidirecional

    CLKOUT-CMOSSada de clock

    Ra7Ra7STCMOSEntrada / sada bidirecional

    CLKINXTAL-Entrada de clock externo

    ST = Schmitt trigger, NA = Analgico, OD = Coletor Aberto

    Porta Bidirecional (PORTB)Consta de 8 linhas de entrada/sada multifuncionais com asseguintes funes:PinoFunoTipoSadaDescrioRb0Rb0TTLCMOSEntrada / sada bidirecional

    Rb1Rb1TTLCMOSEntrada / sada bidirecional

    DTSTCMOSEntrada / sada de dados sincromonoRb2Rb2TTLCMOSEntrada / sada bidirecional

    CKSTCMOSEntrada / sadade clock sincromono

    Rb3Rb3TTLCMOSEntrada / sada bidirecional

    Rb4Rb4TTLCMOSEntrada / sada bidirecional

    Rb5Rb5TTLCMOSEntrada / sada bidirecional

    Rb6Rb6TTLCMOSEntrada / sada bidirecionalT1CKLST-Entrada do oscilador do timer1

    AN1NA-Entrada do comparador analgico

    AN2NA-Entrada do comparador analgico

    AN3NA-Entrada do comparador analgico

    TOCKLST-Entrada de sinal para o timer0

    MCLRST-Master Clear Reset

    OSC2XTAL-Entrada do oscilador a cristal

    OSC1ST-Entrada do oscilador a cristal

    INTSTInterrupo externa

    RXSTRecebimento comunicao serial USART

    TXCMOSTransmisso comunicao serial USART

    CCP1STCMOSCaptura / comparao / PWM

    PGMSTCMOSProgramao em baixa voltagem

    T10S0-XTALSada do oscilador do timer1

    PGCST-Cloc para programao

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    45/225www.mecatronicadegaragem.blogspot.com

    __ Renato A. Silva

    PinoFunoTipoSadaDescrio

    Rb7Rb7TTLCMOSEntrada / sada bidirecional

    PGDSTCMOSEntrada / sada de dados para progra-

    ST = Schmitt trigger, NA = Analgico, OD = Coletor Aberto

    3.15 Oscilador

    Todo microcontrolador ou microprocessador para que funcio-

    ne, necessita de um sinal de relgio (clock) para faz-lo oscilar jque todas as operaes internas ocorrem em perfeito sincronismo.No PIC ocloc tem quatro fases, chamadas de Q1,Q2,Q3 e Q4. Estasquatro pulsaes perfazem um ciclo mquina (instruo), duranteoqualumainstruoexecutada.Internamenteocontadordeprograma (PC) incrementado a cada ciclo Q1 onde a instruorequisitadadamemriadeprogramaearmadanainstruo

    registrada em Q4. A ins-truodecodificadaeexecutadanoperodoQ1 a Q4.No16F62xtemos8possibilidadesparaocloc, selecionado atra-vs da palavra de confi-

    gurao como vimos noitem 4.13.

    3.16 Pipeline

    O processo pipelining uma tcnica de segmentao quepermite ao microcontrolador realizar simultaneamente a busca decdigo de uma instruo da memria de programa, num ciclo deinstruo, enquanto que a sua decodificao e execuo, so feitos

    T10SIXTALEntrada do oscilador do timer1 de Sleep

    mao

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    46/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _5

    no ciclo de instruo seguinte. Consideramos que cada instruo armada e executada em um ciclo de mquina, contudo se umainstruo provocar uma mudana no contedo do contador deprograma (PC), caso ele no aponte para o endereo seguinte namemria de programa, mas sim para outro (como acontece emsaltos ou chamadas de sub-rotinas), ento dever considerar-seque a execuo desta instruo demora dois ciclos de mquina,porque a instruo dever ser processada de novo mas desta veza partir do endereo correto. veja:

    T1 feita a busca da instruo MOVLW 0x05T2 executada a instruo MOVLW 0x05 e feita a busca da

    instruo MOVWF PORTBT3 executada a instruo MOVWF PORTB e feita busca da

    instruo CALL LEDT4 executado o salto (CALL) e feita a busca da instruo

    seguinte BSF PORTA,0 e como BSF PORTA,0 no a primeirainstruo aps entrar na sub-rotina LED, faz-se necessrio uma

    nova leitura do salto, gastando um ciclo.T5 busca da instruo da subrotinaT6 execuo da primeira instruo da sub-rotina e busca da

    prxima instruo.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    47/225www.mecatronicadegaragem.blogspot.com

    _6 Renato A. Silva

    3.16.1 Oscilador com cristal modo XT, LP ou HS

    O cristal ou ressonador cermico conectado em, paralelonos pinos RA6(OSC1) e RA7(OSC2) com dois capacitores paramassa, conforme a tabela

    seleo do capacitor para uso com cristal.Modo Freqncia OSC 1 - C1 OSC 2 - C2

    LP 32 Khz. 68 - 100 pF. 68 - 100 pF.

    XT 100 Khz. 68 - 150 pF. 150 - 200 pF

    4 Mhz. 15 - 30 pF. 15 - 30 pF.HS 8 Mhz. 15 - 30 pF 15 - 30 pF

    20 Mhz. 15 - 30 pF. 15 - 30 pF.

    seleo do capacitor para uso com ressonador cermicoModo Freqncia OSC 1 - C1 OSC 2 - C2

    XT 455 Khz. 22 - 100 pF. 22 - 100 pF

    4 Mhz. 15 - 68 pF. 15 - 68 pF.

    HS 8 Mhz. 10 - 68 pF 10 - 68 pF

    Modo de ligar o cristal

    3.16.2 oscilador com cristal paralelo

    Preparado com portas TTL, este circuito simples, apresenta

    boa estabilidade e performance, fazendo uso da fundamental docristal. Necessita de um resistor de 4,7k para uma realimentao

    200 Khz. 15 - 30 pF. 15 - 30 pF.

    2 Mhz. 15 - 30 pF 15 - 30 pF

    10 Mhz. 15 - 30 pF. 15 - 30 pF.

    2 Mhz. 15 - 68 pF 15 - 68 pF

    20 Mhz. 10 - 22 pF 10 - 22 pF

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    48/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC_7

    negativaparaestabilidadedocircuitoeospotencimetrosde10kfazajuste(bias)do74AS04emumaregioline-ar.

    3.16.3 Oscilador com cristal em srie

    Tambmdesenhadoparausara

    fundamental do cristal, necessita de umresistor de 330k para prover realimen-tao negativa

    3.16.4Cloc externo

    Quando em uma determinada apli-cao, j existe um sinal de clock (mni-mo de 200Khz.), pode ser usado para omicrocontrolador atravs do pino OSC1,conforme a imagem abaixo:

    3.16.5 Oscilador com resistor externo

    Sem dvida neste modo, temos uma economia no custo doprojeto, com apenas um resistor para massa podemos controlar afreqncia do microcontrolador. O resistor drena a corrente biasDC de controle do oscilador e em adio a ao valor da resistnciaa freqncia do oscilador ir variar de unidade em unidade, em

    funo da voltagem DC e da temperatura. O parmetro de controle corrente DC e no capacitncia.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    49/225www.mecatronicadegaragem.blogspot.com

    _8 Renato A. Silva

    Resistor Freqncia

    0 10.4 Mhz.

    1k. 10 Mhz.

    10k. 7.4 Mhz.

    20k. 5.3 Mhz

    47k. 3 Mhz.

    100k. 1.6 Mhz.

    220k. 800 Khz.

    470k. 300 Khz.

    1M. 200 Khz.

    3.16.6 Oscilador interno 4 Mhz.

    Este modo prov 4Mhz fixo @5,0 volts e 25C podendo sofrervariaes no mnimo de 3,65 Mhz E de no mximo 4,28 Mhz con-forme alimentao e temperatura.

    3.16.7 Oscillator Start-Up timer (OST)

    O OST faz uma pausa de 1024 ciclos de clock atravs daentrada do OSC1, para que haja uma estabilizao de tenso eperifricos. Ocorre somente na utilizao de oscilador no modo

    XT, LP e HS.

    3.17 Reset

    O vetor RESET, localizao 0x00h, ativo em nvel baixo, levao microcontrolador a reiniciar seus registradores para valoresiniciais pr-definidos na fabricao e um dos mais importantesefeitos de um reset, zerar o contador de programa (PC), o quefaz com que o programa comece a ser executado a partir da pri-

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    50/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC _9

    meira instruo do software programado. Em suma Este reinciode atividade pode ocorrer de causa manual, por deficincia naalimentao ou mesmo erro no software. Para o microcontroladorfuncionar corretamente deve ter seu pino MCLR em nvel alto.Caso ocorra uma variao para zero, ocorre a condio de RESET.Este evento pode ocorrer de seis formas:

    1 Nvel baixo em MCLR durante a operao normal.

    2 Power-on reset (POR).

    3 Brown-out detect (BOD).

    4 Reset durante o repouso (SLEEP).5 Estouro de WDT durante um repouso (SLEEP).

    6 Estouro de WDT em operao normal

    3.17.1- Reset Normal

    A condio de reset normal ocorrecolocamos o pino MCLR em nvel baixo.Normalmente isto feito atravs de umachave Push-Bottom, como mostrado noesquema ao lado.

    3.17.2- Reset Power-on (POR)

    Este reset segura o chip emcondio de reset tempo at queVDD esteje em nvel suficiente paraoperao. selecionado pelo bit 1do registro PCOM endereo 0Ch.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    51/225www.mecatronicadegaragem.blogspot.com

    50 Renato A. Silva

    3.17.3- Power-up Timer (PWRT)

    Este prov um tempo fixo nominal de 72ms (28ms a 132ms)para uso em power-on reset e brown-out.

    3.17.4- Brown-out detect (BOD)

    Se VDD cair abaixo de VBOD por mais tempo do que 100us(TBOD), ento ocorrer a situao do brown-out resetando o mi-

    crocontrolador. Se VDD cair abaixo de VBOD, por um perodoinferior a TBOD, ento a condio no ter garantias de ocorrer.Em qualquer reset (Power-on, brown-out, WDT, etc..) o chip con-tinuar em reset at que VDD suba acima de VBOD, invocando opower-on timer dando um atraso adcional de 72ms.

    Pode ser habilitado ou desabilitado pelo bit BODEN da pala-vra de configurao no endereo 2007h e sua ocorrncia pode sermonitorada pelo bit BOD do registro PCON endereo 8Eh

    3.17.5- Reset por transbordamento de WDT

    Quando ocorre transbordamento do WDT, normalmente em

    18ms, este, leva o microcontrolador a condio de reset.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    52/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 5_

    3.18-WatchDog Timer (WDT)

    A traduo deste termo nofaz sentido, mas pode ser enten-dido como co de guarda, umcontadorde8bits,preciso,queatua como temporizador e tem oobjetivo de vigiar o microcontro-ladorimpedindoqueesteentreem alguma rotina ou alguma in-

    stabilidade, que o faria trabalharemumloopinfinitoouparassede responder.O WDT tem um controle detempoindependentedoosciladorprincipalcombaseemumarede RC, causando normalmente o estouro, normalmente em de18 ms. (podendo ser aplicado postscaler), causando um reset nomicrocontrolador.

    Para ativ-lo devemos colocar em 1 o bit WDTE da palavrade configurao, e estando ativo, caso seu software deixe de re-sponder por algum motivo, o WDT ir estourar causando um resetno microcontrolador carregando novamente o software. Devido aesta caracterstica talvez a melhor definio para este sinal code guarda.Havendo necessidade pode-se aplicar o divisor de freqn-cia (postscaler) no WDT o qual poderia alcanar tempos de at 2segundos.Para que o seu software no seje resetado a cada estouro deWDT, deve-se limpa-lo em perodos de tempo inferior ao calcu-lado para o estouro, utilizando-se a instruo CLRWDT ou SLEEP,sendo que esta ltima colocaria o microcontrolador em repouso.O projetista / programador deve colocar a instruo CLRWDTempontosestratgicosdeseusoftwaredeacordocomofluxo

    lgicodemaneiraqueosoftwarevigieoWDTevitandooseuestouro. Por exemplo, se no software h uma rotina ou tempori-zao que gaste um determinado tempo vrias vezes maiores que

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    53/225www.mecatronicadegaragem.blogspot.com

    5_ Renato A. Silva

    o WDT, nesta rotina deve haver uma instruo CLRWDT.AinstruoCLRWDTsimplesmentezeraocontedodoregistrador WDT, reiniciando a contagem. J a instruo SLEEPalm de zerar o WDT, tambm detm todo o sistema entrando emrepouso com baixo consumo de energia.

    3.19-Set de instrues

    Chamamos de Set de instrues o conjunto de instrues que

    comandam o microcontrolador. Estes comandos j vm gravadosde fbrica e ficam na memria ROM. A CPU RISC contm um n-mero reduzido de instrues isto o torna mais fcil de aprender,pois temos menos instrues. No entanto temos que reutiliza-lasmais vezes para realizar operaes diferentes, Ao contrrio outrasCPU como o x86 base de todos os computadores INTEL tem um setde instrues gigantesco. Desta forma temos instrues separadaspara cada operao, aumentando tambm o grau de aprendizado

    de seu assembler.

    No PIC o set de instrues divide-se em trs grupos:-Operaes orientadas para Byte-Operaes orientadas para bit-Operaes orientadas para literais.

    Conjunto de instrues para operaes orientadas por byteMnemnicoCiclosAfetaDescrio

    ADDWF f,d1C,DC,Zsoma W e f, resultado emWANDWF f,d1ZAND W com F

    CLRF f1ZCLear File f limpa o valor da varivelCLRW1ZCLeaR Work limpa o valor de W

    COMF f,d1ZCOMplementa F

    DECF f,d1ZDECrementa F

    DECFSZ f,d1 ou 2-DECrementa F e Salta se o result. for

    Status

    Zero

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    54/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 5_

    MnemnicoCiclosAfetaDescrio

    INCF f,d1ZINCrementa F

    INCFSZ f,d1 ou 2-INCrementa F e Salta se o result. For

    IORWF f,d1ZInclusive OR W com FMOVF f,d1ZMOVe para F

    MOVWF f1-MOVe W para FNOP1-No faa nada

    RLF f,d1ZRotaciona F a esquerda (Left)

    RRF f,d1ZRotaciona F a direita (Right)

    SUBWF f,d1C,DC,ZSUBtrai W de FSWAPF f,d1-Troca bits de posio

    XORWF f,d1ZExclusive OR W com F

    Conjunto de instrues para operaes orientadas para bitBCF f,d1-Bit Clear File limpa (0) um bit do byteBSF f,d1-Bit Set File seta (1) um bit do byte

    BTFSC f,d1 ou 2-Bit Testa File Salta se for zero -Clear

    BTFSS f,d1 ou 2-Bit Testa File Salta se for um -SetadoOperaes orientadas para literais e controle de operaes.ADDLW 1C,DC,ZSoma (ADD) Literal com W

    ANDLW 1ZAND F com WCALL 2-Chama uma sub-rotina

    CLRWDT1TO,PDLimpa WatchDog Timer

    GOTO 2-Go To Adress vai para um endereoIORLW 1ZInclusive OR Literal com W

    MOVLW 1-MOVa Literal para W

    RETFIE2-Retorne de Interrupo

    RETLW 2-RETorne com Literal em WRETURN2-Retorne de uma sub-rotina

    SLEEP1TO, PDVai para o repousoSUBLW 1C,DC,ZSUBtraia Literal de W

    XORLW 1ZEXclusive OR Literal com W

    Status

    Zero

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    55/225www.mecatronicadegaragem.blogspot.com

    5_ Renato A. Silva

    4

    Construindo o Primeiro projeto:

    4.1 Pisca LedNosso primeiro projeto ser fazer um led piscar (oscilar) a

    uma certa freqncia. Neste primeiro exemplo, embora simples,serve perfeitamente para mostrar o uso das intrues vistas ataqui. Para tal usaremos o seguinte esquema ao lado:

    Neste caso a forma de controle do tempo em que o led per-manece aceso ou apagado atravs do artifcio de fazer com que

    o microcontrolador perca tempo, este artifcio chama-se DelayTime.

    A rotina abaixo faz umloop, determinado pelo valorno registrador w (work), assimo numero de ciclos de mquinadeve ser colocado em W antesde chamar a rotina. Para um pe-rodo de tempo maior devemosutilizar varivel (registrador)declarada no incio do software,com valor antes de entrar na ro-tina de tempo. Veja:

    milisegundos

    movlw miliseg

    delay ; total 1000 ciclos

    movlw 0xF8 ; 248

    call microsegundos ; ( 248 x 4 )+ 2 = 994 microsseg.

    nop ; 995

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    56/225

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    57/225www.mecatronicadegaragem.blogspot.com

    ento repete a rotina

    retlw 0; sim, ento sai

    Veja o cdigo fonte de nosso exemplo.

    ;---------------------------------------------------

    ;Projeto........: Pisca_Led

    ;Cliente........: Programando Microcontroladores PIC

    ;Desenvolvimento: Renato;Verso:........: 1.00

    ;Modelo.........: 16F627 - 16F628

    ;Descrio......: Faz um led lig. na porta RB0piscar a 1 Hz.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    58/225www.mecatronicadegaragem.blogspot.com

    56 Renato A. Silva

    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    P R O C E S S O R 1 6 F 6 2 7

    # i n c l u d e < P 1 6 F 6 2 7 A . I N C >

    _ _ C O N F I G _ C P _ O F F & _ W D T _ O F F & _ P W R T E _ O N & _ X T _ O S C

    O R G 0 x 0 0 0 0

    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    ; v a r i v e i s d e m e m r i a s

    m i l i s e g e q u 0 x 2 0

    n s e g u n d o s e q u 0 x 2 1

    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    i n i c i o :

    n o p; f c a u m

    c i c l o s e m f a z e r n a d a m o v l w 0 x 0 0

    ; z e r a o r e g i s t r a d o r W

    m o v w f S T A T U S ; c o l o c a o v a l o r d e W e m S t a t u s

    b s f S T A T U S , R P 0 ; V a i p a r a o b a n c o 1 d a R A M

    m o v l w b 0 0 0 0 0 0 0 0 ; c o l o c a 0 n o r e g i s t r a d o r W

    m o v w f T R I S A ; d e t e r m i n a o m o d o d o P O R T A

    m o v l w b 0 0 0 0 0 0 0 0 ; c o l o c a 0 0 0 0 0 0 0 1 e m W

    m o v w f T R I S B ; B i t 0 d e P O R T B c o m o s a d a

    b c f S T A T U S , R P 0 ; r e t o r n a a o b a n c o 0

    c r l f P O R T B ; l i m p a o b u f f e r d o P O R T B

    c l r f P O R T A ; l i m p a o b u f f e r d o P O R T A

    l o o p :

    b s f P O R T B , 0 ; l e d a c e n d e u n a p o r t a R B 0

    m o v l w 0 x 0 4 ; c a r r e g a W c o m 4

    m o v w f n s e g u n d o s ; c a r r e g a o v a l o r p a r a v a r i v e l

    c a l l u m s e g u n d o ; c h a m a r o t i n a d e u m s e g u n d o

    b c f P O R T B , 0 ; l e d a p a g o u n a p o r t a R B 0

    m o v l w 0 x 0 4 ; c a r r e g a W c o m 4

    m o v w f n s e g u n d o s ; c a r r e g a o v a l o r p a r a v a r i v e l

    c a l l u m s e g u n d o ; c h a m a r o t i n a d e u m s e g u n d o

    g o t o l o o p

    ; r e p e t e o p r o c e s s o i n f n i t a m e n t e

    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    ; e s t a r o t i n a i r e x e c u t a r u m l o o p q u a n t a s v e z e s f o r

    ; o v a l o r d e n s e g u n d o s . ( 4 x 2 5 0 )

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    59/225www.mecatronicadegaragem.blogspot.com

    = umsegundo 1.000035 seg.

    movlw 0xFA; carrega W com 250

    call milisegundos ; executa loop por250 milisegundos

    decfsz nsegundos, F ; nmero desegundos = zero ?

    goto umsegundo ;no, ento repete a rotina

    retlw 0; sim, ento retorna com 0

    em w

    ;---------------------------------------------------

    milisegundos

    movwf miliSeg

    Delay ; total 1000 ciclos

    movlw 0xF8 ; 248

    call microsegundos ;( 248 x 4 ) +2 = 994 microssegundos

    nop ; 995

    decfsz miliSeg, F ; subtrai 1 e salta se for0

    goto Delay; ainda no zero, ento continua

    retlw 0; sai desta rotina e volta a

    rotina

    principal

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    60/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 57

    ;---------------------------------------------------

    microsegundos:

    addlw 0xFF; subtrai 1 de w ou w = w -

    1

    btfss STATUS, Z ; salta sew = 0

    goto microsegundos ; ainda no zeroento repete

    retlw 0; retorna a rotina principal

    ;---------------------------------------------------

    END;

    ;---------------------------------------------------

    Este exemplo exemplifica o modo de controle de portas efunes internas do PIC. Ao invs do led, poderamos ter ummecanismo hidrulico fazendo uma determinada tarefa em per-odos de tempo iguais ou com variaes. Por exemplo mquinaque coloca a tampinha em refrigerantes, cerveja e muitos outrosprodutos. Basicamente a mesma coisa do led onde voc acionaum dispositivo ou vrios, aguarda um determinado tempo ouaguarda sinal de outros sensores e depois de acordo com o seu sof-

    tware aciona a(s) sada(s). Poderia tambm ser uma esteira, ondea sada do PIC acionaria um rele, acionando o motor da esteira emperodos de tempos pr-determinados, enfim praticamente no hlimites para o nmero de coisas que podem ser feitas, baseado ouderivado deste pequeno exemplo.

    Mas para voc que pensa que acabou, esta redondamenteenganado, agora temos que converter este texto (programa) emnmeros hexadecimais e coloca-lo dentro da memria do PIC.

    Para tal usaremos o MPLAB.

    4.1 MPLAB verso 7.0

    MPLAB uma ferramenta da MicroChip para edio dosoftware, simulao e at gravao do microcontrolador. Este

    tem a funo de auxiliar no desenvolvimento de projetos, faci-litando assim a vida do projetista. Esta ferramenta distribudagratuitamente pela MicroChip, podendo ser baixado da internetdiretamente do site do fabricante no endereo www.microchip.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    61/225www.mecatronicadegaragem.blogspot.com

    com ou em nosso site.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    62/225www.mecatronicadegaragem.blogspot.com

    58 Renato A. Silva

    O MPLABintegra em umanica ferramenta,umeditordeprogramafonte,compilador,simuladorequandoconectadosferramentas da Microchip tambm integra o gravador do PIC, oemulador etc.Oprogramafontedigi-tado,serconvertidopeloMPLABemcdigosdem-quina(veremoslogomais)quesergravadoeexecuta-dopelomicrocontrolador.

    Normalmentetodosoftwarequeconverteumaseqnciadecomandosemlinguagemdemquinachamadodecompilador.Ocompiladorcomposto por diversos nveisdesdeanalisadorlxicoatlineditor.

    O ponto alto do MPLAB o simulador, que permite que voc rode (execute) seu programasem a necessidade de grava-lo no microcontrolador, permitindoassim fazer diversas correes enquanto se desenvolve o software.No desanime se o primeiro software que voc fizer apresentaralgum problema, lembre-se que nada acontece do dia para a noite,mas com dedicao e perseverana, far com que voc, caro leitor,supere as dificuldades queaparecerem.O conceito do MPLAB que voc leitor trabalhe com pastasde projetos, aofazerumnovo projeto, primeirocrieumapastaem seu computador, depois inicie o MPLAB iniciando um novoprojeto ou abrindo se o projeto j existir. Na pasta do projeto queo MPLAB mantm est armazenado todas as informaes do PICutilizado, do clock utilizado da linguagem de programao, dasposies das janelas, enfim o projeto de forma global. Para encerrar

    o projeto salve e feche apenas o projeto.Crie uma pasta em seu computador chamada c:\projeto\pis-ca_led, depois inicie o MPLAB, quando estiver no ambiente de

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    63/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 59

    trabalho do MPLAB voc ver o seu menu principal. Selecione aopo Project Wizard; esta janela permite criar um projeto emquatro passos:Passo 1)-Seleo do tipo do microcontrolador utilizado, se-lecione PIC16F628APasso 2)-Seleo da linguagem a ser utilizada. Posteriormentefaremos alterao nesta janela, por ora deixe como est. MicrochipMPASM ToolsuitePasso 3)-Especifique o nome do projeto pisca_led e a pastade armazenamento dos arquivos C:\projeto\pisca_led.

    Passo4)-Seleodearquivofonte.ASM,aseleodearquivos fontes que faro parte do projeto. Se j tiver o arquivocomaextenso.ASMpoderadicion-losaqui,casocontrrioapenas avance e conclua esta fase.DepoisnomenuvocencontraraopoConfigureeasubopoConfigurationBits,nestajanelaajusteosbitsdeconfigurao do projeto.-Oscilador = XT

    -Watchdog Timer = off-Power Up Timer = enabled-Brown Out Detect = disabled-Master Clear Enabled = enabled-Low Voltage Program = off-Data EE Read Protect = off-Code Protect = off

    FecheajanelaConfigu-ration Bits e Clique no MenuFileedepoisemNew.AbrirentoajanelaCodeEditor onde voc ira escreveroprogramafonte.Estajanelaumeditordetextocomum

    como o bloco de Notas do Win-dows, com a diferena que elediferencia os comandos, literais

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    64/225www.mecatronicadegaragem.blogspot.com

    60 Renato A. Silva

    e os labels com cores diferentes, tudo isso para ajuda-lo na horada escrita do software.Depois de editar o soft, salve-o na pasta do projeto e cliquecom o boto esquerdo do mouse sobreSource Files na tela daesquerda e depois em Add File. localize na pasta o arquio digi-tado e adicione-o no projeto.Ajuste a freqncia de clock em Debugger e depois em Set-ting, na janela que se abre, na aba Clock, digite a freqnciado cloc que estamos trabalhando. 4 Mhz.Digite o programa fonte com calma para evitar erros de di-

    gitao. A maneira de digita livre, particularmente acho que asletras minsculas deixam o texto mais legvel a medida que sobramaisespaoentre elas, outros preferem tudo em maiscula,. Oimportantequevocmantenhaumaformaconstante,poisoMPLAB faz diferenciao entre minscula e maiscula. Se o leitornomear uma rotina como UmSegundo e em alguma parte fizera chamada call Umsegundo ir gerar um erro, j que o caractereS diferente. O mesmo vale para os comandos como movwf

    Status, rp0, aqui ser gerado dois erros um referente ao statuse outro referente a RP0 que devem ser em maisculo. Para osexemplos vou utilizar letras minsculas, o importante o leitorter cincia das diferenas para evitar estes erros e depois gastaro tempo procurando-os.Aps digitar o programa fonte, e se tudo estiver correto ,cliqueno menu Project e depois em Make ou use a tecla de atalhoF10 para compilar seu programa fonte e gerar o to esperadoarquivo hexa.Durante o processo de compilao o leitor ver a janela deprogresso, e aps o trmino da compilao ser exibida a janelaOutPut com indicao visual dos passos tomados pelo compi-lador.Caso o arquivo de cdigo fonte contenha algum erro, na com-pilao este ser detectado e o processo falhara com trmino do

    compilador, sendo o resultado exibido na janela OutPut paraleitura do usurio e correes no arquivo de cdigo fonte.Nesteexemploeucoloqueiintencionalmenteumavirgula

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    65/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 6_

    em uma linha aleatria e mandei compilar o projeto. A sada dajanela OutPut foi a seguinte:

    Erro do arquivo de cdigo fonte, na linha 28:,CALL milisegundos ; led aceso por um tempo

    Erro reportado pelo MPLAB:Error[108] C:\PROJETO\PISCA_LED\LED.ASM 28 : Illegalcharacter (,)Halting build on first failure as requested.

    BUILD FAILED: Sun Ago 07 01:39:56 2006

    Como se v o MPLAB reporta a linha onde encontrou o erroe ainda lhe diz porque est errado, neste caso, foi encontrado umcaractere invlido na linha 28. Fazendo a correo (apagando avirgula) e compilando novamente o projeto obtivemos a mensa-gem:

    BUILD SUCCEEDED: Sun Ago 07 01:40:14 2006Neste caso a compilao foi um sucesso.

    Algumasvezesosoftwaretopequenoesimplesquequase impossvel haver erro, podendo ser gravado em seguida,mas na grande maioria das vezes uma boa idia fazer simula-o do funcionamento do software antes de gravar o dispositivoe colocar no PCB. Esta simulao feita no prprio MPLAB, daseguinte forma.No menu principal, clique no item Debugger depois no su-bitem Select Tool e finalmente em MPLAB Sim.No menu VIEW selecione as opes, File Register (Sym-bolic) e Special Function Register, procure organizar as janelasde modo que todas estejam visveis na tela.Para a simulao do programa conveniente, por uma ques-

    to de comodidade e velocidade, utilizar as teclas de atalho doMPLAB, as quais so aqui descritas com os seus respectivos usos,lembrando que estas opes esto dentro do menu Debugger.

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    66/225www.mecatronicadegaragem.blogspot.com

    6_ Renato A. Silva

    -F9(RUN)fazcomqueoprogramasejeexecutadoemve-locidade normal. Voc nem ao menos o ver na tela. Normalmente

    esta opo usada em conjunto com a tecla F2 (Breakpoint).-ANIMATEestafunonopossuitecladeatalho;fazcom que o programa siga passo a passo com indicao na tela dalinhaqueestsendoexecutada,enasoutrasjanelasabertasasindicaes das respectivas funes.-F5(HALT)fazumaparadanaexecuodoprograma.

    -F7(STEPINTO)estafunofazcomoprogramasejeexecutado passo-a-passo como no ANIMATE com a diferena quea cada vez que pressionado esta tecla uma linha executada, cau-sando sua parada na linha seguinte da prxima instruo. Observeque a linha onde est parado o cursor ainda no foi executada.-F8(STEPOVER)muitoparecidacomafunoSTEPINTO,

    com a diferena~que executa a linha onde est o cursor, ou seja, alinha onde est parado o cursor j foi executada. A cada vez queesta tecla pressionada a prxima linha executada.-STEPOUTexecutaumasubrotina,sendomuitotilnocaso de rotinas demoradascomo ocaso do nosso exemplo. Asub rotina milisegundos chamada 4 vezes e a cada vez chamaa sub rotina microeec que executa 255 subtraes. J pensou Ter

    que ficar teclando F7 ou F8 at sair desta sub rotina !-F6(RESET/PROCESSORRESET)estafunocausaumreset geral no programa posicionando o cursor na primeira linhade comando, zerando as memrias e os registradores.-F2(BREAKPOINT)semdvidaalgumaumasdasmaisteis;estafunocausapontosdeparadasnoprograma.Este

    procedimento pode ser feito de duas formas. A forma fcil dardoiscliquesbemnocantodalinhaondedeveficaropontodeparada, ser colocado um cone vermelho com um B, indicandoBreaPoint. A forma mais difcil teclar F2e na janela digitar o

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    67/225www.mecatronicadegaragem.blogspot.com

    nmero da linha em hexadecimal, onde ficar o ponto de parada.Na janela BreakPoint possvel desabilitar ou remover o bre-apoint existenteAlgumas outras funes do MPLAB como veremos logo mais frente na medida que forem necessrias para o nosso estudo, por

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    68/225www.mecatronicadegaragem.blogspot.com

    Programando Microcontroladores PIC 6_

    hora, aps simular o funcionamento do soft, chegou o momento degrav-lo no microcontrolador. Para isso necessrio ter em moumgravadordemicrocontroladorparaomodeloqueestamostrabalhando.

    4.2-O Gravador

    O gravador um dispositivo projetado em concordncia comas caractersticas do microcontrolador. Existem muitos tipos de

    gravadores e softwares de aplicao. Alguns so muito simples eeconmicos, outros so complexos e caros.Dentre os diversos tipos o que nos tem apresentado melhorresultadoogravadoJDM(http://www.jdm.homepage.dk),cujo esquema original apresentado na figura abaixo e esquema, layout de circuito impresso melhorado pode ser encontradoemnossositeemwww.renato.silva.nom.brouacritriodoleitortambm em forma de kit montado.

    AprogramaodoPic serial, feita por unspinos especficos, reque-rendoumatensodealimentao VDD (4,5Va5,0V)eumatensodeprogramaoVPP(12,0V a 14,0V) no modoaltavoltageme4,5Va5,5Vnomododebaixavoltagem,amboscomuma variao mnima de0,25V.Aprogramaoescrevenamemriadeprograma,memriade

    dados, localizao especial para o ID e o byte de configurao.A memria de usurio vai de 0x0000 at 0x1FFF e no modoprogramaooespaoseestendede0x0000at0x3FFF,coma

  • 8/6/2019 Program an Do Micro Control Adores PIC Linguagem C

    69/225www.mecatronicadegaragem.blogspot.com

    6_ Renato A. Silva

    primeira metade (0x0000 a 0x1FFF) usada para o programa deusurio e a Segunda metade (0x2000 a 0x3FFF) inicia a memriade configurao.

    O espao da memria para configurao (0x2000 a 0x200F) fisicamente implementado mas somente estar disponvel o es-pao de 0x2000 a 0x2007, as outras posies esto reservadas. Aposio 0x2007 poder ser fisicamente acessada pela memria dousurio. O usurio pode armazenar informao de identificaoID em quatro localizaes, de 0x2000 at 0x2003. Estas posiespodem ser lidas normalmente mesmo aps a proteo de cdigo

    ativada.

    A programao opera com um simples comando, inserido bita bit, na cadencia do pulso de clock. Os seis primeiros bits so de

    comando, seguido pelos 16 bits de dados do usurio.No incio da operao levanta-se o VPP em 13V e aps um

    perodo mnimo de 5uS, el