Upload
ermuller
View
223
Download
0
Embed Size (px)
Citation preview
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