programando microcontroladores pic março

Download Programando microcontroladores pic março

If you can't read please download the document

Upload: cristiano-correa-dos-santos

Post on 22-Jun-2015

1.329 views

Category:

Documents


22 download

TRANSCRIPT

  • 1. SISTEMAS EMBARCADOS Microcontroladores PIC Prof. Cenilio 2014.

2. "O QUE PROGRAMAO EMBARCADA?" A computao embarcada estuda os computadores embutidos que so encontrados nos mais diversos equipamentos eletroeletrnicos 3. Introduo Os microcontroladores PIC so dispositivos fabricados pela Microchip So de arquitetura RISC com clock de at 40MHz, at 2048kword de memria de programa e at 3968 bytes de memria RAM Podem ter at 4 temporizadores/contadores, memria EEPROM interna, gerador/comparador/amostrador PWM, conversores A/D de at 12 bits, interface de barramento CAN, 12C, SPI entre outros 4. INTRODUO Existem 3 famlias de PICs, de 12, 14 e 16 bits de memria de programa Todos possuem barramento interno de dados de 8 bits Quanto maior a palavra de programa, maior o nmero de instrues 12 bits = 33 instrues; 14 bits = 35 instrues; 16 bits = 77 instrues. 5. A arquitetura dos PICs otimizada para a execuo de um pequeno conjunto de instrues, mas com velocidade muito alta. Exemplo: PIC da srie 16 executa 5 MIPS (Milhes de Instrues por Segundo) a 20MHz ou 10 MIPS a 40 MHz. 6. Diferentes dispositivos PIC so semelhantes em sua arquitetura interna, o que facilita a migrao entre microcontroladores. Os princpios gerais da arquitetura PIC so: Registrador de intercmbio geral, ou registrador de trabalho (W); Registrador de armazenamento de flags (STATUS) Registrador de controle de interrupo (INTCON); Registrador de manipulao de dados nas portas (PORT ou GPIO). 7. MEMRIA DE PROGRAMA Nas sries 12, 14 e 16 est embutida na pastilha Alguns dispositivos das sries 17 e 18 suportam memrias de programa externas Tecnologias de implementao de memria de programa: ROM programada de fbrica; OTP (PROM) Virgens de fbrica; EPROM; FLASH pelo menos 1000 ciclos de gravao/apagamento. 8. MEMRIA RAM E REGISTRADORES A RAM utilizada para abrigar os registradores internos. Divide-se em duas partes: Para abrigar registradores de funes especiais (SFR - Special Function Register); Para abrigar registradores de propsitos gerais (GPR General Purpose Register). Registradores SFR so utilizados para controlar perifricos e dispositivos internos, flags de estado do processador, entre outras funes; Registradores GPR so utilizados para armazenamento temporrio de dados do usurio. 9. Os registradores so muitas vezes referenciados pela letra f (file register) A forma de implementao das instrues limita o endereamento a um mximo de 7 bits ou 128 registradores Para contornar tal limitao, criou-se o esquema de paginao tambm na memria RAM, de modo que existem bancos de memria de 128 posies 10. Alguns registradores SFR podem ser encontrados em dois ou at mesmo nos quatro bancos de memria RAM (registradores espelhados), permitindo a otimizao de acesso de registradores muito usados (STATUS, INTCON, etc.) Alguns dispositivos PIC permitem o espelhamento de registradores GPR Alguns dispositivos permitem ainda espelhamento completo dos registradores GPR 11. REGISTRADOR W Caractersticas: Usado em operaes lgicas ou aritmticas; No pode ser utilizado como fonte de dados em operaes de CPU (rotao de dados, incremento, decremento, etc.); No est mapeado na memria RAM; Sua utilizao principal como ponte entre registradores f. NO POSSVEL TROCAR DIRETAMENTE INFORMAES ENTRE OS REGISTRADORES MOVF (Copia de f para w) e MOVWF (Copia de w para f). 12. CONTADOR DE PROGRAMA - PC Responsvel pelo controle da sequncia de execuo das instrues O registrador PC aponta para a prxima instruo a ser executada pela CPU PC dividido em dois registradores bsicos: PCL, responsvel pelos 8 bits menos significativos; PCH, responsvel pelos 5 bits mais significativos. Somente PCL diretamente acessvel, podendo ser lido ou escrito pelo programa do usurio PCH pode ser alterado somente por intermdio do registrador PCLATH 13. PILHA Estrutura de dados com apenas um ponto de acesso (o topo da pilha) A principal funo da pilha armazenar endereos de retorno para sub- rotinas Alguns dispositivos permitem tambm o armazenamento de dados de usurio Operaes bsicas: PUSH a CPU armazena informao na pilha; POP - a CPU busca informao no topo da pilha. A pilha no est localizada na rea de memria RAM, e sim em uma regio separada (inacessvel diretamente ao usurio) dedicada 14. Normalmente a pilha tem capacidade de 8 palavras do tamanho de PC. O endereo do topo no acessvel ao usurio. Utiliza-se uma estrutura de memria LIFO (Last IN First Out) circular. O programador deve ter muito cuidado para no sobrescrever dados na pilha. No h instrues para manipulao direta da pilha (isso feito inderetamente atravs das instrues CALL, RETURN, RETLW e RETFIE). 15. O QUE PROGRAMAO EMBARCADA?" Desenvolvimento de software embarcado uma modalidade de desenvolvimento na qual se desenvolve os programas e aplicativos que iro fazer parte de dispositivos eletrnicos que possam funcionar independentes de estarem ou no ligadas a um computador central. 16. "O QUE SO SISTEMAS ELETRNICOS EMBARCADOS?" Sistema eletrnico embarcado ou sistema eletrnico embutido um sistema eletrnico que tem como base um microprocessador que possui um software completamente dedicado ao dispositivo ou sistema que ele controla. 17. "EXEMPLOS DE SISTEMAS ELETRNICOS EMBARCADOS:" Telefones celulares e centrais telefnicas; Equipamentos para a montagem de redes de computadores, como roteadores, hubs, switches, firewalls e Access Point WiFi; Modems ADSL e de PLC (Power Line Communication); Controlador de injeo eletrnica de combustveis para motores exploso, a gasolina, a leo Diesel ou bio-Diesel ou sistemas multicombustvel (Flex Fuel); Controladores da trao, acionadores de air bags e sistemas anti-bloqueio dos freios (freios ABS) em automveis, motocicletas, nibus e caminhes; Equipamento de geolocalizao (GPS) e de rastreamento de veculos e cargas; Calculadoras eletrnicas e agendas eletrnicas de bolso; Controladores eletrnicos de eletrodomsticos, como fornos microondas, mquinas de lavar e tambm dos refrigeradores e aparelhos de ar condicionado mais modernos; Aparelhos de TV com controle remoto, CD players, DVD players e Blue-Ray Disc players; Equipamentos mdicos; Alarmes programveis para residncias e comrcio; Videogames; Receptores de TV por satlite e de TV por cabo coaxial; Televisores digitais com telas a LCD ou plasma e monitores de computador de LCD; Robs industriais. 18. "Breve histrico dos Sistemas Eletrnicos Embarcados:" Nos primeiros anos dos computadores digitais na dcada de 1940, os computadores eram por vezes dedicados a uma nica tarefa. Eram, entretanto, muito grandes para serem considerados embarcados. O conceito de controlador programvel foi desenvolvido algum tempo depois. O primeiro sistema embarcado reconhecido mundialmente foi o Apollo Guidance Computer 19. UM POUCO DE HISTORIA O primeiro sistema eletrnico embarcado que foi produzido em grande quantidade foi o computador guia do mssil nuclear norte- americano LGM-30 (Mssil Minuteman), lanado em 1961, que possua um disco rgido para a memria principal. Quando a segunda verso do mssil entrou em produo em 1966, o computador guia foi substitudo por um novo, sem o disco rgido, que constituiu o primeiro uso em grande volume de circuitos integrados. 20. Atualmente, com a disponibilidade de microcontroladores a um custo menor que US$ 1, tornou-se vivel substituir componentes analgicos caros como potencimetros e capacitores por eletrnica digital controlada atravs de pequenos microcontroladores. Assim sendo, o pblico leigo no sabe que sua vida repleta de microcontroladores, embutidos em dispositivos corriqueiros. 21. Por exemplo, o acionamento do relgio de um forno microondas feito por um pequeno microcontrolador, que recebe, interpreta e aciona o equipamento a partir dos comandos do teclado. Tambm o aparelho de TV moderno possui pelo menos um microcontrolador, que recebe os comandos do controle remoto e aciona as vrias funes. 22. Nos automveis, alm do sistema de injeo eletrnica, encontram-se microcontroladores no equipamento de som, nas centrais de alarme, no sistema anti-bloqueio dos freios (freios ABS) e no sistema de acionamento dos airbags. Assim sendo, os veculos mais sofisticados fazem uso de uma grande quantidade de microcontroladores; uma fonte consultada afirma que o automvel BMW 850i possui mais de 100 microcontroladores em seu interior. 23. Um episdio curioso ocorreu em uma das primeiras conferncias em que se discutiu o impacto dos microcontroladores na eletrnica, realizado em 1975 no Hotel Hilton na cidade de Nova Iorque (EUA). Um dos palestrantes, Danny Hillis da empresa ThinkingMachines Corporation, previu que o mercado mundial de microcontroladores seria em poucos anos na faixa de milhes de unidades produzidos a cada ano. 24. Um dos participantes do auditrio manifestou-se contra esta ideia, afirmando que nunca seriam necessrios tanto microcontroladores no mundo. Segundo este participante no identificado, o futuro descrito pelo palestrante seria como se tivssemos um microcontrolador em cada quarto deste hotel. 25. De fato, poucos anos depois outro evento realizou-se no mesmo Hotel Hilton, que nesta poca acabara de instalar fechaduras eletrnicas nos apartamentos, acionadas por um carto magntico entregue ao hspede. Ou seja, havia um microcontrolador em cada quarto do hotel, embutido na fechadura das portas dos apartamentos. Est ai um gostinho de histria 26. Introduo ao funcionamento das mquinas digitais. As mquinas digitais operam apenas em uma nica linguagem, a linguagem binria. Comumente chamada de linguagem de mquina, pois contm instrues (numricas, geralmente expressadas em hexadecimal) que somente uma mquina ou uma famlia especifica capaz de entender. Antes de tentarmos entender como funcionam essas caractersticas. vejamos um diagrama de blocos de uma mquina digital genrica. 27. PROGRAMANDO MICROCONTROLADORES PIC Na atualidade uma diversidade de microcontroladores esta presente no mercado exigindo a efetiva busca por atualizao, para fins aplicativos operacionais e/ou didticos Mais uma vez, este resumo do livro S586p Silva, Renato A. Programando microcontroladores PIC : Linguagem C / Renato A. Silva. So Paulo : Ensino Profissional, 2006. 172p. dedica-se ao aprendizado da tecnologia de automao e robtica, utilizando microcontroladores para executar tarefas especficas. 28. Programando Microcontroladores PIC Mais uma vez, este resumo dedica-se ao aprendizado da tecnologia de automao e robtica, utilizando microcontroladores para executar tarefas especficas. 29. Finalmente, cabe ao leitor sempre, o esforo para aprender a programar microcontroladores e usa-los com criatividade e imaginao para o desenvolvimento de novos projetos 30. Aqui reforamos o pedido do autor no sentido de ter uma boa dose de pacincia no aprendizado e no desistir frente s dificuldades, pois com certeza, uma caminhada de enriquecimento de conhecimentos. 31. E para aqueles que felizmente encontra-se em um degrau mais elevado, espera-se que a obra venha somar algo mais a sua carreira. 32. Introduo: O desenvolvimento atual da tecnologia nas reas de automao e robtica deve-se principalmente ao desenvolvimento dos microcontroladores e processadores digitais de sinais (DSP). 33. Os DSP possui memrias e estrutura que lembra os microcomputadores atuais, executando um software escrito para uma determinada finalidade, sendo extremamente robustos, baratos e confiveis 34. Os microcontroladores PIC, rene em um nico chip todos os circuitos necessrios para o desenvolvimento de um sistema digital programvel, 35. O que significa PIC? o nome que a Microchip adotou para a sua famlia de microcontroladores, sendo que a sigla significa Controlador Integrado de Perifricos. O PIC um circuito integrado produzido pela Microchip Technology Inc 36. Possui: Uma serie de LINHAS de I/O para controlar dispositivos externos Uma serie de dispositivos auxiliares ao funcionamento, ou seja, gerador de clock, bus, 37. O PIC esta disponvel em uma ampla gama de modelos. Diferenciando-se pelo numero de linha de I/O e pelo contedo do dispositivo. Sigla PIC12Cxx dotado de 8 pinos, at chegar a modelos maiores com sigla PIC17Cxx dotados de 40 pinos. 38. Uma descrio detalhada da tipologia do PIC disponvel no site da Microchip Para o nosso curso usaremos um modelo de PIC o PIC16F877. Este dotado de 40 pinos. 39. Componente integrado que em um nico dispositivo contem todos os circuitos necessrios para realizar um completo sistema digital programvel. 40. Internamente dispe de todos os dispositivos tpicos de um sistema micro- processado, ou seja: Uma CPU (Central Processor Unit ou seja Unidade de Processamento Central) Uma memria PROM Uma memria RAM Uma unidade ULA Varias unidades de registradores 41. Programao do PIC Como o PIC um dispositivo programvel, o programa tem como objetivo deixar instrues para que o mesmo possa fazer atividades definidas pelo programador. Para poder programar um PIC precisaremos de um Editor (Mplab ou o PCWH), um compilador (PCWH) e um programador (PICStar Plus). 42. O que o MpLab? O MpLab um ambiente integrado de desenvolvimento (I.D.E.: Integrated Development Environment). Edio O MpLab possui um editor de texto para seus programas que possui diversas ferramentas de auxlio como localizar, substituir, recortar, copiar e colar. 43. Compilao Compilar significa traduzir um programa escrito em assembly (mneumnicos) para linguagem de mquina (nmeros). 44. Simulao O MpLab possui ferramentas para simulao do programa no prprio computador Gravao Para que o programa seja executado no microcontrolador, o arquivo hexadecimal deve ser gravado no PIC. O MpLab oferece suporte aos gravadores fabricados pela Microchip. 45. Emulao A emulao um recurso de desenvolvimento que possibilita testes em tempo real. 46. O PIC 16F877A Microcontrolador de 40 pinos 33 portas configurveis como entrada ou sada. 15 interrupes disponveis. Memria de programao 47. EPROM FLASH, que permite a gravao rpida Memria de programa com 8K Word, com capacidade de escrita e leitura pelo prprio cdigo interno; Memria EPROM (no voltil) interna com 256 bytes; Memria RAM com 368 bytes; Trs timers (2x8bits e 1x16 bits); 48. Comunicaes seriais: SPI, IC e USART;Conversores analgicos de 10 bits (8x) e comparadores analgicos (2x); Conversores analgicos de 10 bits (8x) e comparadores analgicos (2x); Dois mdulos CCP: Capture, Compare e PWM; 49. Histria do transistor e do microchip 1.1 O Transistor Antes de PICarmos um pouco, faz-se necessrio uma pequena viso do desenvolvimento, iniciando no final dos anos 40, com a construo do primeiro transistor nos laboratrios da BELL em 23 de dezembro de 1947 por John Bardeen, Walter Houser Brattain, e William Bradford Shockley, os quais ganharam o prmio Nobel de fsica 1956. 50. O transistor a contrao das palavras transfer resistor, resistncia de transferncia. um dispositivo eletrnico semicondutor, componente chave em toda a eletrnica moderna 51. 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. . 52. um sanduche de diferentes materiais semicondutores em quantidade e disposio diferentes intercalados. Pode-se obter assim transistores PNP e NPN 53. 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 quantidade desses eltrons. 54. Tipos de transistor Existem diversos tipos de transistores, mais a classificao mais acertada consiste em dividi- los em transistores bipolares e transistor de efeito de campo FET. 55. O FET, est dividida em JFET, MOSFET, MISFET, etc. A diferena bsica entre os diversos tipos de transistores est na forma em que controla o fluxo de corrente. 56. O Nascimento do Microchip Apenas treze anos aps a inveno do transistor, houve outro grande salto tecnolgico, a inveno do circuito integrado ou microchip, por Jack S. Kilby da Texas Instruments e Robert N. Noyce da Fairchild Semicondutor. 57. PORTAS LGICAS, NMEROS BINRIOS E HEXADECIMAIS As Portas Lgicas As portas lgicas formam a base da eletrnica digital iniciando um novo compndio na eletrnica e o seu estudo essencial ao entendimento e aprendizado dos microcontroladores e microprocessadores. 58. Ao agrupar circuitos ativos e passivos em blocos, os cientistas criaram blocos que executavam uma determinada funo lgica. Estas funes so AND (E), NAND (NO E), OR (OU), XOR (OU EXCLUSIVO), XNOR (NO EXCLUSIVO) e NO (NO). 59. Para trabalharmos com as portas lgicas faz-se o uso de uma tabela verdade, a qual cada funo tem a sua. 60. nvel alto em sua sada se as suas entradas tiverem nvel baixo. 61. As portas lgicas do tipo OR tero nvel alto em sua sada se uma OU outra entrada tiver nvel alto. 62. As portas lgicas tipo NOR, ao contrrio da funo OR, somente ter nvel alto ou 1 em sua sada se as entradas forem zero. Observe a diferena bsica entre a funo OR e a NOR. 63. As portas lgicas XOR, garantem o nvel alto em sua sada se uma entrada tiver em nvel alto e outra em nvel baixo. Observe que diferentemente da AND se tivermos 1 e 1 a sada ser 0. 64. As portas XNOR apresentam princpio semelhante funo XNOR, apenas com o detalhe de ter sadas invertidas. 65. As portas lgicas NOT, so as mais fcil de todas, apresenta nvel alto em sua sada se sua entrada for nvel baixo, invertendo assim os nveis lgicos. 66. Como j sabemos o nvel alto (normalmente 5 volts) representados pr 1 e o nvel baixo (zero volts) pr 0, assim a combinao de 1 e 0 em grupos de 8, formo um conjunto denominado byte. Veremos agora as vrias representaes de conjuntos numricos e as suas formas de converso. 67. Nmeros Decimais Desde cedo aprendemos a raciocinar com nmeros decimais, onde o conjunto matemtico contm 10 elementos [0..9], este sistema de numerao baseia-se em potencia de 10 onde cada dgito corresponde ao nmero 10 (base) elevado a uma potncia (expoente) de acordo com sua posio. 68. Nmeros Binrios Da mesma forma os nmeros que os nmeros decimais, os nmeros binrios, so assim chamados porque o seu conjunto contm apenas 2 elementos [0,1]. Este conjunto numrico representa os estados lgicos 0 e 1. Ao organizarmos os bits 0 e 1 em grupos de 8 temos um byte de oito bits, em grupos de 16 temos um byte de 16 bits e assim sucessivamente. 69. A escrita do nmero binrio sempre feita da direita para a esquerda, dizemos que a parte da esquerda a mais significativa ou MSB (most significative bit) e a parte da direita a menos significativa ou LSB (low significative bit), dai devemos elevar 2 ao expoente da casa correspondente ao 1 do bit. 70. Observe na tabela de expoentes da figura que o primeiro expoente da direita 1, portanto 20 = 1 e o quarto expoente da direita para a esquerda o 3, portanto 2 = 8 agora fazemos a soma de todos os resultados, neste caso 1 + 8 = 9. Tudo uma questo de prtica, ao praticar um pouco voc entender melhor esta relao. 71. Voc j deve ter percebido, aqui, que existe uma relao, uma forma de representar o 0 e o 5 volts dos circuitos digitais em nmeros, desta forma, podemos conversar facilmente com as mquinas digitais utilizando nmeros e realizar operaes com eles. 72. Para convertemos uma representao decimal em binria, fazemos sucessivas divises por 2 e anotamos os resultados. Depois ordenamos de forma lgica da direita para a esquerda 73. Nmero Hexadecimal A numerao hexadecimal que como as anteriores tem seu conjunto matemtico representado por 16 nmeros, facilita e acelera a decodificao de dados, economizando espao em armazenamento 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 conjunto de nmeros decimais (com10 elementos) e lanamos mos das letras (A,B,C,D,E,F) 74. A converso Hexadecimal para decimal multiplica o valor do digito pela potncia de 16, fazendo a somatria. Ex: 8AB1 = 35.505 75. Para convertermos hexadecimal em binrio, a forma mais prtica termos em mente a tabela de nmeros de A at F em binrio e depois agrupar os dgitos binrios, veja 1A fica com 1 (primeiro dgito) e 1010 da tabela. Outro exemplo 3C convertido d 11(referente ao 3) e 1100(referente ao C). 76. Numerao Octal O sistema de numerao octal um conjunto matemtico onde temos oito elementos [0,1,2,3,4,5,6,7] que apresenta grande importncia principalmente pela facilidade de converso de binrio para octal. 77. A metodologia de converso semelhante as anteriores, para converso de numerao decimal para numerao octal, faz-se divises sucessivas por 8 at encontrar o menor quociente e posteriormente pegamos o resto da diviso em ordem inversa. Para converso de octal para decimal, multiplicamos o numeral por 8 elevado a potencia correspondente. 78. Para converso de octal para decimal, multiplicamos o numeral por 8 elevado a potencia correspondente. 79. uso da tabela octal onde temos o correspondente binrio de cada nmero octal, depois agrupamos os bytes correspondentes ao octal da direita para a esquerda. 80. DECIMAL HEXADECIMAL BINRIO OCTAL 0 0 0000 0000 1 1 0001 0001 2 2 0010 0002 3 3 0011 0003 4 4 0100 0004 5 5 0101 0005 6 6 0110 0006 7 7 0111 0007 8 8 1000 0010 9 9 1001 0011 10 A 1010 0012 11 B 1011 0013 12 C 1100 0014 13 D 1101 0015 14 E 1110 0016 15 F 1111 0017 Tabela de converso entre diversas bases 81. As funes lgicas booleanas so utilizadas quase que na totalidade das aplicaes com microcontroladores. 82. No captulo anterior o leitor viu as diversas funes (portas lgicas), veja agora exemplo de aplicao destas funes em numerao binrio e hexadecimal. 83. Neste captulo, tivemos uma viso geral da relao, converso e utilizao dos diversos conjuntos numricos e sua indiscutvel e relevante importncia para os sistemas computacionais. No prximo captulo veremos os diversos tipos de memrias e a suas utilizaes. 84. OU SE O VALOR VIER EM DECIMAL DEVER SER TRANSFORMADO EM BINRIO REALIZAR A OPERAO COM AS PORTAS LOGICAS E ESCREVER O RESULTADO EM HEXADECIMAL TURMA 528 TURMA 529 Ao fazer a operao logica o resultado dever ser convertido em hexadecimal 85. Memrias A memria a capacidade de reter, recuperar, armazenar e evocar informaes disponveis, neste caso em forma binria de 0 e 1. 86. Transistores, portas lgicas e flip-flops so utilizados na implementao de memrias eletrnicas, sendo as principais tecnologias definidas como memrias ROM, PROM, EPROM, EEPROM, FLASH e RAM. 87. MEMRIAS E MICROCONTROLADORES SENDO AS PRINCIPAIS TECNOLOGIAS DEFINIDAS COMO MEMRIAS ROM, PROM EPROM EEPROM FLASH RAM. 525 turma 523 88. Memrias ROM, memria somente de leitura, uma memria onde os dados gravados no podem ser modificados ou cancelados. Memrias PROM, memria somente de leitura programvel aquela onde os dados podem ser inseridos pr meio de gravadores especficos uma nica vez 89. Memrias EPROM, memria somente de leitura apagvel, esta sem 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 pr meio de gravadores especficos, pr muitas vezes. MEMRIAS E MICROCONTROLADORES 90. Memrias EEPROM, memria somente de leitura apagvel eletricamente, pode ser apagada eletricamente e regravadas milhares de vezes, utilizando gravadores especficos, no precisando exp-la a radiao ultravioleta, sendo muitas vezes menores que as EPROM, j que no tem a janelinha de quartzo. MEMRIAS E MICROCONTROLADORES 91. MEMRIAS E MICROCONTROLADORES 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 92. Memria RAM, Constituda de transistores ou flip-flop, podem armazenar dados somente quando tiverem tenso, quando no houver tenso estaro zeradas, sendo volteis, tem seu uso no processo auxiliar ao processador armazenando informaes temporrias. MEMRIAS E MICROCONTROLADORES 93. MEMRIA RAM Basicamente so constitudas de dois tipos: estticas e dinmicas. As memrias RAM estticas, muito utilizada no final dos anos 80, tinham como principal desvantagem o tamanho 94. MEMRIA RAM As memrias RAM dinmicas, ao contrrio tinham alta densidade podendo armazenar por chip 1 megabyte facilmente, porm estas memrias necessitam de refresh constante e conseqentemente circuitos de apoio 95. MICROCONTROLADOR Microcontrolador um circuito integrado programvel que contm todos os componentes de um computador como CPU (unidade central de processamento), memria para armazenar programas, memria de trabalho, portas de entrada e sadas para comunicar-se com o mundo exterior, sistema de controle de tempo interno e externo, conversores analgico digital, uart de comunicao e outros. 96. MICROCONTROLADOR Pode-se controlar qualquer coisa ou estar includo em unidades de controle para: - mquinas pneumticas, - hidrulicas comandadas - mquinas dispensadoras de produtos - motores, temporizadores - sistemas autnomos de controle, incndio, umidade temperatura - telefonia, automveis, medicina, ...etc Estamos rodeados por mquinas que realizam algum trabalho ajudado por sensores e atuadores que recolhem as informaes. 97. APRESENTANDO O PIC 16F62X O microcontrolador PIC 16F62x, rene em uma pastilha todos os elementos de uma CPU RISC de alta performance, sendo fabricado em encapsulamento DIP (18 Pinos), SOIC (18 pinos) ou SSOP (20 pinos). Onde encontramos: 98. CARACTERSTICAS DO PIC 16F62X Conforme vemos no diagrama em blocos do PIC 16F627 e 16F628, 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 bancos. 99. Registrador de propsito especfico (SFR) com 32 posies. Registrador de propsito geral (GPR) com 224 posies. ALU de 8 bits e registro de trabalho W que normalmente recebe um operando que pode ser qualquer registrador, porta de entrada/sada ou o prprio cdigo de instruo. Pilha (Stack) de 8 nveis. Contador de programa (PC) de 13 bits (o que permite enderear at 8 KB de memria). 100. Recursos conectados al bus de dados: PortA de 8 bits PortB de 8 bits Temporizadores / contadores TMR0, TMR1, TMR2 Comparadores Captura , Comparao e PWM Voltagem de referencia USART para comunicao serial Memria EEPROM 101. SSOP (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 - 102. 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 externo - Timer2 de 8 bits com registro de perodo, prescaler e postscaler 103. - 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 104. - 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 105. - Resistor externo ER - Resistor interno - INTRC - Clock externo EC - Cristal alta velocidade - XT - Cristal baixa velocidade HS - Cristal LP - 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 de usurio 106. Alimentao Normalmente o PIC alimentado com uma tenso 5,0 volts provenientes de uma fonte DC com regulao positiva, um regulador 7805 ou 78L05 podem ser utilizados para tal funo, 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 microcontrolador mnimo, consumindo menos de 2,0 mA com 5 volts, trabalhando a 4Mhz ou 15,0 micro amp com 3 volts, trabalhando 107. Programando Microcontroladores PIC a 32 Khz. Quando em modo StandBy, consome menos de 1,0 micro amper. com 3.0V, porm devemos ver o consumos dos outros componentes do circuito. - PIC 16F62x - 3.0V a 5.5V - PIC 16LF62x - 2.0V a 5.5V 108. DEFINIO DA CPU CISC: (Complex Instruction Set Computer) RISC: (Reduced Instruction Set Computer) SISC.(Specific Instruction Set Computer) 109. CISC: (Complex Instruction Set Computer) processadores com conjunto de instrues complexas, dispe de um conjunto com elevado nmero de instrues algumas sofisticadas e potentes. Em contrapartida requerem muitos ciclos de mquina para executar as instrues complexas. 110. RISC: (Reduced Instruction Set Computer) processadores com conjunto de instrues reduzidos, em nosso caso so 35 instrues simples que executam em 1 ou 2 ciclos de mquina com estrutura pipeline onde todas as instrues executam na mesma velocidade. 111. ARQUITETURA INTERNA Entende-se por arquitetura interna a forma como o circuito construdo, representada por blocos, isto como suas partes internas se interligam, podemos definir os PICs como sendo Arquitetura Harvard, onde a CPU interligada memria de dados (RAM) e a memria de programa (EPROM) por um barramento especfico. 112. Tradicionalmente os microprocessadores tm como base estrutura de Von Neumann, que se caracteriza por dispor de uma nica memria principal em que se armazenam dados e instrues. O acesso memria feito atravs de um sistema de uma nica via (bus de dados, instrues e de controle). A arquitetura interna do PIC do modelo Harvard, 113. SISC.(Specific Instruction Set Computer) processadores com conjunto de instrues especficas 114. ORGANIZAO DA MEMRIA O PIC contm um registrador denominado PC (Program Counter) que implementado com 13 bits, capaz de enderear at 8K de programa, mas que somente 1k implementado fisicamente no 16F627 (0000h 03FF) e 2K so implementados no 16F628 (0000H 07FFh). 115. Este registrador est ligado diretamente a Pilha (stack) armazena o endereo da instruo que vai ser executada. Ao incrementar ou alterar o contedo do PC, o microcontrolador tem um mapa seguro de onde esta e para onde ir. 116. ORGANIZAO DA MEMRIA 117. A PILHA OU STACK 118. A pilha uma memria independente da memria de programa e da memria de dados, com estrutura LIFO (Last In First Out) ltimo dado a entrar ser o primeiro dado a sair com oito nveis de profundidade ou armazenamento com 13 bits cada um. Sua funo guardar o valor do PC quando ocorre um salto do programa principal para o endereo de um subprograma a ser executado, fazendo assim com que o microcontrolador tenha total controle as chamadas de rotinas., 119. A pilha. Seu funcionamento como um buffer circular onde o endereo da ltima chamada o primeiro a retornar em uma chamada RETUR, RETLW ou RETIE 120. ORGANIZAO DA MEMRIA DE DADOS Os registros que afetam a CPU so: STATUS, OPTION, INTCON, PIE1, PIR e PCON. Veremos agora descrio destes e outros registros. 121. REGISTRADORES DE FUNES ESPECIAIS Registro de STATUS endereos 03h, 83h,103h e 183h, contm o 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). 122. ORGANIZAO DA MEMRIA DE DADOS A memria de dados divide-se em quatro bancos, contendo os registros 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 BancoEndereo 0 0 0 000h - 07Fh 0 1 1 080h - 0FFh 1 0 2 100h - 17Fh 1 1 3 180h - 1FFh 123. 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 timer0 e ao WDT, interrupo externa ao timer0 e os resistores de pull-up do PORTB. 124. REGISTRO INTCON - ENDEREO 0BH, 8BH, L0BH E 18BH UM REGISTRO DE LEITURA E ESCRITA QUE CONTM OS BITS DE HABILITAO DAS VRIAS INTERRUPES (EXCETO DO COMPARADOR), INCLUSIVE POR MUDANA DE ESTADO NO PORTB. 125. REGISTRO PIE1 - ENDEREO 8CH. Este registro contm os bits individuais de interrupes dos perifricos, sendo que para seu funcionamento o bit PEIE (INTCON ) deve estar habilitado. bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 EEIE CMIE RCIE TXIE - CCP1IE TMR2IE TMR1IE 126. bit descrio EEIE flag de interrupo de escrita na EEPROM completada 1 = habilita interrupo de trmino de escrita 0 = desabilita interrupo de trmino de escrita CMIE interrupo do comparador habilitada 1 = habilita interrupo do comparador 0 = desabilita interrupo do comparador RCIE interrupo de recebimento de caractere no USART 1 = habilita interrupo de recebimento do USART 0 = desabilita interrupo de recebimento do USART TXIE interrupo de envio de caractere no buffer do USART 1 = habilita a interrupo de transmisso do USART 0 = desabilita a interrupo de transmisso do USART CCP1IE interrupo do CCP1 para captura, comparao e PWM 1 = interrupo habilitada 0 = interrupo desabilitada TMR2IE interrupo 1 = habilita interrupo 0 = desabilita interrupo TMR1IE flag de overflow 1 = habilita interrupo para estouro de TMR1 0 = desabilita interrupo de estouro de TMR1 127. LINGUAGEM C A linguagem C nasceu na Bell Labs, diviso da AT&T, a famosa companhia americana de telecomunicaes desenvolveu em seus laboratrios o sistema operacional Unix, posteriormente desenvolveu tambm a linguagem C em 1969 por Dennis Ritchie, que tambm um dos principais criadores do Unix, partir da linguagem B de Ken Thompson. 128. LINGUAGEM C Seu propsito era gerar uma linguagem de alto nvel, em oposio linguagem de mquina (Assembly), conhecida como de baixo nvel. O C uma linguagem para uso geral, ou seja, desenvolvimento dos mais diversos tipos de aplicao 129. LINGUAGENS DE MAQUINA. Ns vimos como as mquinas digitais entendem o assembly, agora vamos subir mais degrau e entender como a mesma mquina pode entender uma linguagem estruturada, como o C, Pascal ou Basic, Mas antes precisamos entender as diferenas entre essas linguagens. 130. O assembly um exemplo de linguagem puramente imperativa, ou seja, possui aes (comandos), que alteram estados (espaos de memria), essa linguagem facilita muito a programao, pela sua semelhana com a linguagem humana, aes e conseqncias. 131. Mas o assembly no uma linguagem estruturada, o programador possui liberdade para montar seus blocos de programa cada um de uma forma diferente, podemos criar saltos para qualquer parte da memria de maquina. Essa caracterstica que nos permite flexibilidade tambm atrapalha a analise de cdigos, e cooperao entre diversos programadores. 132. LINGUAGEM ESTRUTURADA J no caso da linguagem estrutura podemos reduzir as inmeras formas de pensar, Em trs estruturas bsicas: Estruturas de seqncia Estrutura de deciso Estrutura de repetio 133. LINGUAGEM ESTRUTURADA Estruturas de seqncia: As tarefas so executadas seqencialmente, uma aps a outra. Segundo o raciocnio lgico do programador. Estrutura de deciso: O resultado de um teste lgico define se um trecho do cdigo deve ser executado. Existem estruturas para uma nica deciso, ou mltiplas decises. Estrutura de repetio: Determina se um trecho de cdigo ser repetido at que certa condio lgica seja satisfeita 134. Essa forma de pensar nos aproxima mais ainda da linguagem humana, pois uma nica linha de cdigo estruturado pode conter mais de uma ordem explicita. Por exemplo: Faa enquanto isso for verdadeiro!. Este um tpico comando de linguagem estruturada. Temos uma ordem Faa, um lao de repetio Enquanto e uma comparao lgica enquanto for verdadeiro 135. EXEMPLO 136. Essa facilidade tambm nos traz um empecilho. A maquina digital no consegue seguir ordem complexas. Portanto temos um gap, um espao que precisa ser preenchido conectando a linguagem estruturada. Tambm chamada de linguagem de alto nvel, at a linguagem de mquina, tambm chamada de linguagem de baixo nvel. neste momento que entra em cena os compiladores. 137. OBSERVAO. Diferente dos montadores que apenas trocam um mnemnico por um equivalente cdigo hexadecimal, o compilador precisa traduzir uma linguagem de alto nvel para outra linguagem equivalente em seu conceito e algoritmo, mas no exatamente em seus comandos 138. Logo a compilao um processo mais complexo, e suas tarefas so bem divididas e definidas. Uma vez que o cdigo em alto nvel est pronto e submetido a um compilador este realiza uma analise, neste primeiro processo o compilador interpreta o cdigo e verifica itens bsicos de sua linguagem e estrutura, a analise pode ser subdividida em trs partes. 139. Analise Lxica: Processo tambm conhecido como Scanner, pois verifica se algum caractere do algoritmo est fora dos caracteres permitidos da linguagem. Sempre que for encontrado caracteres vlidos o analisador procura trocar esse caractere por um smbolo. Este smbolo pode ser interpretado mais facilmente no restante do processo. Neste ponto todos os caracteres inteis de um programa so retirados, tais como comentrios, espaos em branco, linhas em branco etc. 140. Analise Sinttica: A analise sinttica (parsing em ingls), recebe os caracteres recm filtrados pelo analisador lxico e cria uma estrutura de dados. Est na verdade uma grande tabela, capaz de organizar os dados e futuramente realizar comparaes e otimizaes do mesmo. Estes dados esto separados pelos smbolos criados no analisador lxico. 141. Analise Semntica: As outras etapas de analise, focam os caracteres ou conjuntos de caracteres de forma quase que individual, sem olhar o sentido das aes. Erros como comparaes entre uma numero e uma string no so observados nas analises anteriores. O analisador Semntico garante a coerncia do programa 142. INTRODUO DA LINGUAGEM C Programa: forma de se comunicar com um computador Linguagem mquina Programas so traduzidos atravs de outros programas especiais: compiladores e interpretadores. Processo: Fonte objeto executvel ESTRUTURA BSICA DE UM PROGRAMA C Consiste em uma coleo de funes Forma geral 143. LNGUAGEM C O pr-processador do compilador, reconhece os comandos e todos os smbolos definidos pelo comando #define, sendo pouco inteligentes fazem basicamente substituio. 144. LINGUAGEM C Tem como caractersticas a modularidade, Portabilidade recursos de baixo e alto nvel, gerao de cdigo eficiente confiabilidade regularidade, alm de conter um nmero pequeno de comandos 145. VERIFICADOR LXICO O verificador lxico ou reconhecedor de palavras passam pelo programa trocando palavras-chaves e smbolos orientados para humanos por valores numricos mais compactos orientados para mquina. 146. Na verdade reconhecedor de palavras uma grande tabela de pesquisa onde a palavra- chave trocada por um cdigo ou token, a grande maioria das mensagens de erro reportadas acontecem neste estgio. 147. Depois vem o analisador o grande perito em C. Ele sabe a sintaxe e quase toda a semntica da linguagem. Este possui a responsabilidade principal pela anlise contextual, um erro se seja reconhecido apenas depois de dois ou trs comandos terem sido analisados ser descoberto 148. COMPILADORES Aps utilizar diversos compiladores existentes atualmente, optei pelo uso do CCS por apresentar uma gama de vantagens sobre os demais. O compilador CCS pode ser adquirido diretamente no site do fabricante no endereo www.ccsinfo.com onde se encontra tambm vrios exemplos de utilizao e outras informaes referentes ao compilador. A instalao do compilador bem simples, basta executar o aplicativo e seguir as instrues das telas. 149. EX DE PROGRAMA EM C #include void main() { while( true ) { //repetio infinita output_high( PIN_B0 ); //coloca o bit led em 1 delay_ms( 1000 ); //aguarda 1 segundo output_low( PIN_B0 ); //coloca o bit led em 0 delay_ms( 1000 ); //aguarda um segundo }; 150. MODELO BSICO DE UM PROGRAMA EM C Quatro elementos esto presentes em um programa C: Comentrios Diretivas de compilao Definies de dados Blocos com instrues e funes 151. COMENTARIOS Os comentrios no programa fonte no tm funo nenhuma para o compilador e serve apenas para aumentar a legibilidade e clareza do programa, podem ser inseridos com // que valem de onde comeam at o fim da linha ou com /* e */, sendo considerado comentrio tudo entre /* e */. 152. IDENTIFICADORES Um identificador um smbolo definido pelo usurio que pode ser um label, uma constante, um tipo, uma varivel, um nome de programa ou subprograma (procedimento ou funo). Normalmente devem comear com um caractere alfabtico e no podem conter espaos em branco, podendo ter no mximo 32 caracteres, no havendo distino entre maisculas e minsculas. 153. ENDENTAO A endentao tambm no tem nenhuma funo para o compilador e serve para tornar a listagem do programa mais claro dando hierarquia e estrutura ao programa. 154. CONSTANTES Constantes so valores declarados no incio do programa e que no se alteram na execuo do programa. Podem ser expressas em qualquer base, Para criar uma constante existe o comando #define que, em geral colocado no incio do programa-fonte. 155. EXEMPLO #define LARGURA_MAXIMA 50 // No se coloca ponto-e-vrgula aps o valor #define NRO_DE_DIAS_DA_SEMANA 7 #define NRO_DE_HORAS_DO_DIA 24 #define VALOR_DE_PI 3.1415 void main () { int TotalDeHoras; TotalDeHoras = 10 * NRO_DE_DIAS_DA_SEMANA * NRO_DE_HORAS_DO_DIA; ...... } 156. VARIVEIS Uma declarao de varivel consiste do nome do tipo de dado seguido do nome da varivel. Todas as variveis devem ser declaradas antes de serem usadas. As variveis devem ser declaradas no incio de cada funo, procedimento ou incio do programa. 157. DECLARAO DE VARIAVEIS Declarao de Variveis Todas as variveis tem que ser declaradas antes de serem usadas; No h uma inicializao implcita na declarao // Exemplo de programa em C #include // Arquivo de cabealho (header) void main() { int contador; // declaraes simples float PrecoDoQuilo; double TaxaDeCambio; char LetraDigitada; int IdadeManoel, IdadeJoao, IdadeMaria; // Pode colocar mais de uma varivel na // na mesma linha 158. Em C, como na maioria das linguagens, os dados so divididos em tipos: inteiro, real, caracter, etc. Esta diviso se deve basicamente ao nmero de bytes reservados para cada dado. Cada tipo de dado possui um intervalo de valores permitidos. Todas as variveis em C tem um tipo; Cada tipo define os valores que a varivel pode armazenar; Cada tipo ocupa certa quantidade de memria. TIPOS DE DADOS Tipos bsicos: Tipo Tamanho Intervalo Uso char 1 byte -128 a 127 nmero e caracter ASCII int 2 bytes -32768 a 32767 contador, controle de lao float 4 bytes 3.4e-38 a 3.4e38 real (preciso de 7 dgitos) double 8 bytes 1.7e-308 a 1.7e308 cientfico (preciso 15 dgitos) 159. (alfanumricasLetras ) Aa at Zz ; Dgitos (numricos) - 0 at 9; Operadores; Tipos de dados. 160. OPERADORES E SMBOLOS ESPECIAIS 161. TIPOS DE DADOS Um Tipo de Dado define o conjunto de valores que uma varivel pode assumir e as operaes que podem ser feitas sobre ela. Toda varivel em um programa deve ser associada a um tipo de dado, conforme a tabela abaixo. 162. O conceito do C que existe uma funo principal chamada main que controla o bloco principal do programa, logicamente ficaria assim: #include void main() { ...declaraes }; 163. A chave ({) abre uma estrutura de bloco de declaraes, onde temos comandos, chamadas de funes ou blocos em assembler. Para cada chave aberta deve-se ter outra chave (}), indicando o fechamento do bloco de declaraes. 164. void main( ) { while( true ) { //repetio infinita output_high( PIN_B0 ); //coloca o bit led em 1 delay_ms( 1000 ); //aguarda 1 segundo output_low( PIN_B0 ); //coloca o bit led em 0 delay_ms( 1000 ); //aguarda um segundo }; }; 165. Normalmente o compilador d uma ajudinha na hora de escrever o cdigo fonte alertando para essas particularidades. O modo de escrever livre, voc pode utilizar letras maisculas, minsculas ou combinadas, somente no pode haver espao entre o label ou a varivel. 166. assim a seguinte declarao de varivel Int varivel 1 ; apresenta dois erros graves. Um deles o uso de acentuao no o outro a presena de espao. O correto para esta declarao seria o seguinte int variavel_1;. 167. Os caracteres acentuados fazem uso do oitavo bit do byte de caracteres o que no suportado pelos compiladores uma vez que na lngua inglesa no existe acentuao fazendo uso, portanto dos caracteres de at 7 bits ou at o caractere 127. 168. No apndice encontra-se uma tabela de caracteres ASCII com os caracteres bsicos de 0 a 127 e uma tabela de caracteres estendido de 127 a 255. 169. Os comandos so: IF, WHILE, DO, FOR, SWITCH, CASE, RETURN, GOTO, LABEL, BREAK, CONTINUE. 170. Este comando de estrutura condicional pode estar sozinho ou em conjunto com else ou else if, na construo de blocos de estruturas condicionais muito eficazes. Sempre recebe um ou mais parmetros, pois sempre comparamos alguma coisa com al- guma coisa, e conforme o resultado da comparao faz algo 171. COMANDO IF Este comando de estrutura condicional pode estar sozinho ou em conjunto com else ou else if, na construo de blocos de estruturas condicionais muito eficazes. Sempre recebe um ou mais parmetros, pois sempre comparamos alguma coisa com alguma coisa, e conforme o resultado da comparao faz algo diferente. Vejamos: 172. COMANDO IF if( modo == 0x01 ){ //varivel modo = 1? buffer = 0x03 & 0xFF; //sim, ento buffer = 2 AND 256 } else{ //seno buffer = 0x03 ^ 0xFF; //buffer = 2 XOR 256 }; 173. COMANDO IF No exemplo acima vemos o operador de igualdade/comparao (==) que indica se o operando da direita igual ao da esquerda, e logo abaixo tempo o operando de atribuio (=), onde o operando da direita atribui-se ao da esquerda. Neste caso, houve a necessidade de se verificar a outra fase da condio, e atribuir-lhe valor. No caso acima se fez uma comparao e tomou- se uma deciso, se aps a deciso houvesse mais de uma declarao, abriramos um bloco de controle assim: 174. COMANDO IF if( TEMP == 0 ){ output_high (PIN_B0); } else if( TEMP == 1 ) { output_high( PIN_B1 ) ; } else if( TEMP == 2 ) { output_high( PIN_B2 ) ; } else{ output_low( PIN_B0 ) ; output_low( PIN_B1 ) ; output_low( PIN_B2 ) ; }; 175. - COMANDO WHILE Este comando pode ser utilizado sozinho ou em conjunto com o comando DO construindo blocos de controle extremamente eficazes. while ou enquanto sempre avalia uma expresso enquanto ela verdadeira podendo ou no executar uma declarao em conjunto. 176. while ( input( PIN_B0 ) ); //aguarda o pino Rb0 descer output_high( PIN_B1 ); //coloca o pino Rb1 em 1 while ( ! input( PIN_B0 ) ); //aguarda o pino Rb0 subir output_low( PIN_B1 ); //coloca Rb1 em 0 177. Depois de compilado, foi gerado o seguinte cdigo: 00BF: BTFSC PORTB.0 00C0: GOTO 0BF 00C1: BSF PORTB.1 00C2: BTFSS PORTB.0 00C3: GOTO 0C2 00C4: BCF PORTB.1 178. Comentrio do cdigo Neste caso, o comando While ir aguardar at que o pino Rb0 mude de 1 para 0, veja, que o compilador colocou na linha 00BF a instruo para testar a flag Rb0 e saltar se estiver limpa, caso contrrio na linha 00CD tm um salto para a linha 00BF, criando um loop at termos Rb0 igual a 0. Quando a condio a ser avaliada no muda de estado temos um loop infinito como normalmente acontece dentro da funo main. No exemplo abaixo criamos nosso pisca_led. 179. void main(){ //funo principal while( TRUE ){ //execute sempre, loop infinito output_high( PIN_B1 ); //pino B1 = 1, led aceso delay_ms( 1000 ); //aguarda 1 segundo output_low( PIN_B1 ); //pino B1 = 0, led apagado }; //fecha o bloco while }; //fecha a funo principal 180. COMANDO DO Este comando execute sempre executado em conjunto com o comando while formando um bloco execute... enquanto (verdadeiro). Com a diferena que a condio avaliada posteriormente a execuo, ou seja, primeiro executa o bloco depois avalia se continua executando, ao contrrio do while 181. STRINGS Uma String uma seqncia de caracteres entre aspas duplas: "exemplo de uma string em C". 182. A FUNO PRINTF A funo printf exibe um ou mais dados na tela. Para tanto ele deve receber pelo menos dois parmetros, separados por vrgula: Um string de formato que define, atravs de caracteres especiais, os tipos dos dados a serem impressos e suas posies na linha de impresso; Um dado a ser impresso. Este dado pode ser qualquer um dos dados visto anteriormente 183. POR EXEMPLO: printf("%s","teste"); "%s" : a string de formato "teste" : o dado a ser impresso. A string de formato define quais os tipos dos dados a serem impressos. O smbolo %s ser substitudo pelo dado que vem aps a vrgula. Os dados definem quais os valores a serem impressos. 184. STRING Se for necessrio, uma string de formato pode definir que mais de um dado ser impresso. Para tanto, dentro da string de formato deve haver mais de um %, um para cada dado a ser impresso. Neste caso, os dados devem vir aps a string de formato separada por vrgulas. 185. Por exemplo: printf("%s %s","teste1", "outra string"); Isto ir imprimir o string teste1 deixar 1 espao em branco e imprimir ao lado o string outra string, assim : teste1 outra string 186. EXEMPLO #include // Necessrio para usar a funo printf // A funo printf exibe um ou mais dados na tela void main () { printf("%s","Isto uma string ....n"); // note o 'n' no final da string; printf("%s","Outra string ...."); printf("%s","Terceira stringn"); //Depois de Executar o programa, tecle ALT-F5 para ver o resultado na tela } 187. IMPRESSO DE INTEIROS COM "PRINTF" Para imprimir um inteiro com printf usa-se o smbolo %d 188. IMPRESSO DE INTEIROS COM "PRINTF" // Impresso de Variveis Inteiras #include #include // necessrio para as funes clrscr e getch void main () { int Contador; int NroDeFilhos; clrscr(); // Limpa a tela Contador = 10; printf("Valor da Varivel: %dn", Contador); // No momento da execuo sinal %d vai // ser substitudo pelo valor da // varivel Contador NroDeFilhos = 3; printf("Maria tem %d filhos", NroDeFilhos); // o inteiro pode ficar no meio da string getch(); // espera que o usurio pressione uma tecla } 189. IMPRESSO DE EXPRESSES ARITMTICAS // Impresso de Expresses aritmticas #include #include // necessrio para as funes clrscr e getch void main () { int NroDeAndares; int AlturaPorAndar; clrscr(); // Limpa a tela NroDeAndares = 7; AlturaPorAndar = 3; printf("Altura Total do Prdio: %d metros", NroDeAndares*AlturaPorAndar); // No momento da execuo sinal %d vai ser substitudo // pelo valor da multiplicao getch(); // espera que o usurio pressione uma tecla } 190. IMPRESSO DE NMEROS REAIS // Impresso de nmeros reais #include #include // necessrio para as funes clrscr e getch void main () { float NotaDaP1, NotaDaP2; float Media; clrscr(); // Limpa a tela NotaDaP1 = 6.6; // Atribuio do Valores das mdias NotaDaP2 = 8.2; Media = (NotaDaP1 + NotaDaP2) / 2.0; printf("Mdia Final : %f", Media); // No momento da execuo sinal %f vai ser substitudo // pelo valor da varivel Media com SEIS casas decimais // Mdia Final : 7.400000 getch(); // espera que o usurio pressione uma tecla } 191. FORMATO DE IMPRESSO DOS NMEROS REAIS No exemplo acima o resultado da mdia (7.4) foi impresso com 6 casas decimais (7.400000). Isto sempre acontece quando se manda imprimir um float da forma como foi feito no exemplo acima. Isto acontece, pois o padro da funo printf completar o nmero com zeros direita, at que fique com seis casas decimais. 192. Para formatar de maneira diferente usar-se, junto com o %f uma especificao de quantas casas decimais se deseja que o nmero tenha. Especifica-se tambm o nmero total de caracteres do nmero a ser impresso. 193. Por exemplo: %6.3f especifica que se quer imprimir um float com 3 casas decimais e com um tamanho total de 6 caracteres no total. 194. #include #include void main() { float NotaDaP1, NotaDaP2; float Media; clrscr(); // Limpa a tela NotaDaP1 = 6.6; // Atribuio do Valores das mdias NotaDaP2 = 8.2; Media = (NotaDaP1 + NotaDaP2) / 2.0; printf("Mdia Final : %6.3f", Media); // No momento da execuo sinal %6.3f vai ser substitudo // pelo valor da varivel Media // Mdia Final : 7.400 getch(); // espera que o usurio pressione uma tecla } 195. Regras para impresso de um nmero real o nmero de casas decimais sempre respeitado. Se for preciso, zeros sero acrescentados direita do nmero. o tamanho total significa o nmero de caracteres do nmero incluindo o ponto decimal e um eventual sinal de menos (-), se for o caso; 196. Se a soma do nmero de caracteres da parte inteira, mais o ponto decimal, mais a parte fracionria, mais um eventual sinal de menos ainda for menor do que o tamanho total especificado no formato, ento, espaos em branco sero acrescentados esquerda da parte real do nmero. 197. Se a soma do nmero de caracteres da parte inteira, mais o ponto decimal, mais a parte fracionria, mais um eventual sinal de menos for maior do que o tamanho total especificado no formato, ento, apenas o nmero de casas decimais respeitado. 198. EXEMPLO #include #include void main() { float Numero; Numero = -2.5; clrscr(); printf("1234567890n"); printf("%7fn", Numero); printf("%7.0fn", Numero); printf("%7.3fn", Numero); printf("%8.3fn", Numero); printf("%9.3fn", Numero); printf("n"); printf("%8.4fn", Numero); printf("%8.1fn", Numero); printf("%6.12fn", Numero); getch(); } // Resultados 1234567890 -2.500000 -2 -2.500 -2.500 -2.500 -2.5000 -2.5 -2.500000000000 199. VARIVEIS DO TIPO STRING Uma varivel capaz de armazenar uma string deve ser declarada informando- se qual o nmero mximo de caracteres que ela poder armazenar Exemplo: char Nome[30]; // isto define que a varivel poder armazenar uma string de at 29 caracteres. 200. ATRIBUIO COM STRINGS Atribuio com strings As atribuies de valores a strings devem ser feitas atravs da funo strcpy 201. // EXEMPLO COM STRINGS #include #include #include // arquivo de cabealho para trabalhar com strings void main() { char Nome[30]; // declara uma string que poder armazenar at 29 caracteres !! clsrscr(); strcpy(Nome, "Jose da Silva"); // atribui "Jose da Silva" para a varivel Nome printf("O funcionrio %s foi transferido", Nome); // no lugar de %s aparecer o // contedo da varivel Nome getch(); }