programação em c para familia pic da microchip

248
O mundo dos microcontroladores - Microcontroladores PIC - Programação em C com exemplos Capítulo 1: O mundo dos microcontroladores A situação atual em matéria de microcontroladores ocorreu graças ao desenvolvimento da tecnologia de fabricação de circuitos integrados. Este desenvolvimento tem permitido construir as centenas de milhares de transistores num chip. Este foi um pré-requisito para o fabrico de um microprocessador. Os primeiros microcomputadores foram feitas para adicioná-los externo, como memória, linhas de I / O, os temporizadores ou outros periféricos. O aumento na densidade de integração possível para criar um circuito integrado contendo o processador e periféricos ambos. É assim que foi desenvolvido o primeiro microcomputador em um único chip, chamado microcontrolador mais tarde. 1.1 Introdução 1,2, números, números ... 1.3 DETALHES IMPORTANTES 1,4 microcontroladores PIC 1.1 INTRODUÇÃO Eletronicamente iniciantes acreditam que um microcontrolador é igual a um microprocessador. Isso não é verdade. Eles diferem uns dos outros, em muitos aspectos. O primeiro e mais importante diferença é a sua funcionalidade. Para utilizar o microprocessador em uma aplicação real, que deve ser ligado com componentes tais como componentes de barramento de memória ou de transmissão de dados.Embora o microprocessador é considerado uma máquina de computação poderoso não está pronto para comunicação com dispositivos periféricos conectados a ele. Para o microprocessador para se comunicar com um periférico, você deve usar circuitos especiais. Por isso, foi no início e esta prática ainda está em vigor hoje.

Upload: sergio-r-c-cruz

Post on 10-Nov-2015

247 views

Category:

Documents


4 download

DESCRIPTION

Livro sobre linguagem C para PIC. Aborda linguagem de programação e o hardware

TRANSCRIPT

O mundo dos microcontroladores - Microcontroladores PIC - Programao em C com exemplos Captulo 1: O mundo dos microcontroladoresA situao atual em matria de microcontroladores ocorreu graas ao desenvolvimento da tecnologia de fabricao de circuitos integrados.Este desenvolvimento tem permitido construir as centenas de milhares de transistores num chip.Este foi um pr-requisito para o fabrico de um microprocessador.Os primeiros microcomputadores foram feitas para adicion-los externo, como memria, linhas de I / O, os temporizadores ou outros perifricos.O aumento na densidade de integrao possvel para criar um circuito integrado contendo o processador e perifricos ambos. assim que foi desenvolvido o primeiro microcomputador em um nico chip, chamado microcontrolador mais tarde. 1.1 Introduo 1,2, nmeros, nmeros ... 1.3 DETALHES IMPORTANTES 1,4 microcontroladores PIC1.1 INTRODUOEletronicamente iniciantes acreditam que um microcontrolador igual a um microprocessador.Isso no verdade.Eles diferem uns dos outros, em muitos aspectos.O primeiro e mais importante diferena a sua funcionalidade.Para utilizar o microprocessador em uma aplicao real, que deve ser ligado com componentes tais como componentes de barramento de memria ou de transmisso de dados.Embora o microprocessador considerado uma mquina de computao poderoso no est pronto para comunicao com dispositivos perifricos conectados a ele.Para o microprocessador para se comunicar com um perifrico, voc deve usar circuitos especiais.Por isso, foi no incio e esta prtica ainda est em vigor hoje.

Por outro lado, o microcontrolador projetado de modo que voc tenha todos integrados nos mesmos componentes do chip.No h necessidade de outros componentes para a sua aplicao, pois todos os circuitos necessrios, que de outro modo correspondem aos perifricos j esto construdos.Isso economiza tempo e espao necessrio para a construo de um dispositivo.

O que pode MICROCONTROLADORES?Para compreender mais facilmente as razes para o enorme sucesso de microcontroladores, vamos prestar ateno ao seguinte exemplo.Cerca de 10 anos atrs, projetando um dispositivo de controle eletrnico de um elevador de um edifcio de vrios andares foi muito difcil, mesmo para uma equipa de peritos.Alguma vez voc j pensou sobre o que requisitos devem atender a um elevador simples?Como lidar com a situao quando duas ou mais pessoas chamar o elevador ao mesmo tempo?O convite tem a prioridade?Como resolver problemas de segurana, perda de energia, falha, abuso?O que acontece depois de resolver estes problemas bsicos uma concepo meticulosa dispositivos apropriados usando um grande nmero de fichas processo especializado.Este processo pode demorar semanas ou meses, dependendo da complexidade do dispositivo.Quando o processo estiver concludo, hora de projetar uma placa de circuito impresso e montagem do dispositivo dispositivo.Un enorme! um outro trabalho difcil e demorado.Finalmente, quando tudo estiver terminado e testado corretamente, e passou o momento crucial quando voc se concentrar, respire profundamente e ligue a fonte de alimentao.Este geralmente o ponto em que o partido se torna um verdadeiro trabalho desde dispositivos electrnicos quase nunca funcionam corretamente desde o incio.Prepare-se para muitas noites sem dormir, correes, melhorias ... e no se esquea de que ainda estamos falando sobre como iniciar um elevador simples.Quando o dispositivo se torne finalmente operacional perfeitamente e todos esto satisfeitos, e ser pago para o trabalho que ele tem feito, muitas empresas esto interessadas em desenvolver seu trabalho.Claro, se voc tiver sorte, a cada dia vai lhe trazer uma oferta de emprego de um novo investidor.No entanto, se voc precisa trabalhar em controlar os elevadores de um novo prdio com quatro andares, dos quais j lida com seu sistema de controle.Voc sabe como proceder?Voc acha que talvez voc possa controlar as demandas de seus clientes?Achamos que voc vai construir um dispositivo universal que pode ser usado em edifcios 4-40 andares, uma obra-prima da eletrnica.Bem, mesmo se voc comea a construir uma jia eletrnico, o investidor vai esperarar porta da frente pedindo uma cmera no elevador ou msica relaxante em caso de falha elevador.Ou um elevador com duas portas.No entanto, a Lei de Murphy inexorvel e, certamente, voc no pode tirar vantagem, apesar de todos os esforos desenvolvidos.Infelizmente, tudo o que foi dito at agora acontece na realidade.Isto o que "envolver-se em engenharia eletrnica" realmente significa.Esta a forma como as coisas eram feitas a emergncia de microcontroladores projetados - pequeno, poderoso e barato.Desde ento sua programao deixou de ser uma cincia, e tudo tomou outro rumo ...O dispositivo eletrnico capaz de controlar um pequeno submarino, um guindaste ou um elevador como mencionado anteriormente, agora incorporados em um nico chip.Microcontroladores de oferecer uma ampla gama de aplicaes e so normalmente apenas um pouco explorado.Cabe a voc decidir o que voc deseja que o microcontrolador e carregar um programa com as instrues adequadas.Antes de ligar o aparelho, aconselhvel verificar o seu funcionamento usando um simulador.Se tudo funcionar como deveria, incorporando o microcontrolador no sistema.Se voc precisar alterar, melhorar ou atualizar o programa, faa isso.Quanto tempo?Para satisfao.Isso pode ser feito sem qualquer problema.

Voc sabia que todas as pessoas podem ser classificadas em um dos 10 grupos, que esto familiarizados com o sistema numrico binrio e aqueles que no esto familiarizados com ele.Se voc no entende o que significa que ainda pertence ao segundo grupo.Para alterar seu status, leia o texto a seguir descreve brevemente alguns dos conceitos bsicos usados mais tarde neste livro (s para ter certeza que ns estamos falando nos mesmos termos).1,2, nmeros, nmeros ...Matemtica uma cincia!Tudo to lgico e simples ... O universo de nmeros pode ser descrita com apenas dez dgitos.No entanto, voc realmente tem que ser?Ser que precisamos exatamente esses 10 dgitos?Claro que no, apenas uma questo de hbito.Lembre-se as lies da escola.Por exemplo, o que que o nmero 764 significa?Quatro unidades, seis dezenas e sete centenas.Muito simples!Voc poderia expressar de uma forma mais desenvolvida?Claro que ele faz: 4 + 60 + 700. Ainda mais desenvolvido?Sim: 4 * 1 + 6 * + 10 7 * 100.Poderia este nmero olhar um pouco mais "cientfico"?A resposta sim mais uma vez: 4 * 100 + 101 + 6 * 7 * 102.O que isso realmente significa?Por que usar exatamente esses nmeros 100, 101 e 102?Por que sempre o nmero 10? porque ns usamos 10 dgitos diferentes (0, 1, 2 ... 8, 9).Em outras palavras, porque usar o sistema de numerao na base 10, ou seja, o sistema decimal.

SISTEMA DE NUMERAO BINRIOE se usssemos apenas dois nmeros 0 e 1?Se pudssemos dizer (1) ou negar (0) que algo existe.A resposta "nada de especial", gostaramos de usar os mesmos nmeros da mesma maneira que usamos hoje, mas eles parecem um pouco diferente.Por exemplo: 11011010.Cuntas so realmente 11.011.010 pginas de um livro?Para entender isso, seguem a mesma lgica que no exemplo anterior, mas na ordem inversa.Note-se que a aritmtica apenas dois dgitos 0 e 1, ou seja, o sistema de numerao na base 2 (sistema de numerao binria).

Obviamente, este o mesmo nmero representado dois diferentes sistemas de numerao.A nica diferena entre estas duas representaes reside no nmero de dgitos necessrios para introduzir um nmero.Dgito (2) usado para escrever o nmero 2 no sistema decimal, enquanto dois dgitos (1 e 0) so usados para escrever esse nmero no sistema binrio.Agora voc concorda que existem 10 grupos de pessoas?Bem-vindo ao mundo da aritmtica binria!Voc tem alguma idia de onde ele usado?Salvo em condies laboratoriais controladas rigorosamente, circuitos electrnicos mais complicados no pode especificar exactamente a diferena entre dois valores (dois valores de tenso, por exemplo), se forem demasiado pequenos (menores do que alguns volts).O motivo o rudo eltrico e fenmenos que ocorrem dentro do que chamamos de "ambiente de trabalho real" (exemplos desses fenmenos so mudanas imprevisveis na tenso de alimentao, mudanas de temperatura, os valores do componente tolerncia etc. ...).Imagine um computador que opera com nmeros decimais, tratando-as como se segue: 0 = 0 V, 1 = 5V, 10V 2 = 3 = 15V, 20V ... 4 = 9 = 45V!?Algum disse baterias?Uma soluo muito mais fcil uma lgica binria 0 indicando a ausncia de tenso, enquanto que 1 indica a presena de tenso. simplesmente mais fcil de escrever 0 ou 1, em vez de "sem tenso" ou "sem tenso".Pela lgica zero (0) e lgica de um (1) rostos perfeitamente eletrnicos e de fcil execuo todas as operaes aritmticas.Obviamente, ele realmente aplicado aritmtica eletrnica em que todos os nmeros so representados com apenas dois dgitos e onde s importante saber se h tenso ou no.Claro, estamos falando de eletrnica digital.

SISTEMA DE NUMERAO HEXADECIMALNo incio do desenvolvimento dos computadores era bvio que as pessoas tinham dificuldade em trabalhar com nmeros binrios.Portanto, um novo sistema de numerao, que utilizou 16 smbolos diferentes so estabelecidos.Ele chamado o sistema de numerao hexadecimal.Este sistema composto de 10 dgitos que so utilizados para (0, 1, 2, 3, ... 9) e seis letras do alfabeto de A, B, C, D, E e F. O que o objectivo da Esta combinao aparentemente estranho?Basta olhar para a forma como tudo na histria dos nmeros binrios se encaixa perfeitamente para uma melhor compreenso do assunto.

O maior nmero que pode ser representado com 4 bits 1111. O nmero corresponde ao nmero 15 no sistema decimal.No sistema hexadecimal esse nmero representado por apenas um dgito F o maior nmero de um dgito no sistema hexadecimal.Voc percebe a utilidade destas equivalncias?O maior nmero escrito com oito dgitos binrios tanto o maior nmero de sistema hexadecimal de dois dgitos.Note-se que um computador usa nmeros binrios de 8 dgitos.Talvez esta seja uma coincidncia?

BCD CODEO cdigo BCD (Binary-COdedDecimal- Cdigo binrio decimal) um cdigo binrio usado para representar nmeros decimais.Ele usado para circuitos eletrnicos para se comunicar com perifricos usando o sistema de numerao decimal ou usando o sistema binrio dentro "seu prprio mundo". composto de nmeros binrios de 4 dgitos que representam os dez primeiros dgitos (0, 1, 2, 3 ... 8, 9).Apesar de quatro dgitos pode fazer 16 combinaes possveis no total, o cdigo BCD normalmente utilizada para o topo dez.

Sistemas de numerao CONVERSOO sistema de numerao binrio utilizado por microcontroladores, o sistema decimal o que ns encontramos mais compreensvel, enquanto o sistema hexadecimal tem um equilbrio entre os dois.Portanto, muito importante aprender como converter nmeros de um sistema para outro nmero, por exemplo, como converter uma srie de zeros e uns de uma forma compreensvel para ns representao.Convertendo binrio em nmeros decimaisOs dgitos em um nmero binrio tm diferente que depende de sua posio dentro do nmero que eles esto representando pesos.Alm disso, cada dgito pode ser 1 ou 0, e o seu peso pode ser determinado facilmente por ter a sua posio a partir da direita.Para fazer uma converso de um nmero binrio para decimal necessrio multiplicar os pesos com os dgitos correspondentes (0 ou 1) e adicionar todos os resultados.A magia da converso de um nmero binrio em decimal faz maravilhas ... ter dvidas?Considere o seguinte exemplo:

Note que voc precisar usar apenas dois dgitos binrios para representar todos os nmeros decimais de 0 a 3. Portanto, para representar nmeros 0-7 necessrio usar trs dgitos binrios para representar nmeros de 0 a 15-4 dgitos etc.Simplificando, o nmero pouco maior que pode ser representado usando n dgitos obtida atravs da elevao da base 2 elevado potncia n.Em seguida, o resultado subtrado de 1. Por exemplo, se n = 4:24- 1 = 16-1 = 15Portanto, ao utilizar quatro dgitos binrios podem representar os nmeros decimais de 0 a 15, valores diferentes so 16 no total.CONVERSO nmeros hexadecimais em decimaisPara fazer uma converso de um nmero hexadecimal para decimal, hexadecimal cada dgito deve ser multiplicado pelo nmero 16 levantou para o valor de sua posio.Por exemplo:

CONVERSO nmeros hexadecimais para binrioNo h necessidade de qualquer clculo para converter um nmero hexadecimal em binrio.Os dgitos hexadecimais so simplesmente substitudos pelos quatro bits apropriados.Uma vez que o dgito hexadecimal mximo equivalente ao nmero decimal 15, necessrio o uso de quatro bits para representar um dgito hexadecimal.Por exemplo:

NMEROS DE MARCAOO sistema de numerao hexadecimal, juntamente com sistemas binrios e decimais, so considerados os mais importantes para ns. fcil de executar uma converso de qualquer nmero hexadecimal em binrio, que tambm fcil de memorizar.Sem No entanto, essas converses pode causar confuso.Por exemplo, o que a frase realmente significa: "Voc precisa de 110 produtos em uma linha de montagem"?Dependendo do sistema em questo (binrio, decimal ou hexadecimal), o resultado poderia ser de 6 272 110, ou produtos, respectivamente.Portanto, para evitar mal-entendidos, diferentes prefixos e sufixos so adicionados diretamente para os nmeros.Ou $ prefixo 0x e sufixo h marca os nmeros no sistema hexadecimal.Por exemplo, o nmero hexadecimal 10AF pode ser escrita como: $ 10AF, 0x10AF ou 10AFh.Da mesma forma, os nmeros binrios obtido normalmente sufixo ou 0B%.Se um nmero no tem sufixo ou prefixo considerado decimal.Infelizmente, esta forma de nmeros de discagem no padronizado, portanto, depende da aplicao particular.O seguinte uma tabela comparativa com os valores de 0-255 nmeros representados em trs sistemas de numerao diferentes.Esta provavelmente a maneira mais fcil de entender a lgica comum aplicado a todos os sistemas de numerao.

Os nmeros negativosComo vimos, para introduzir um nmero negativo em matemtica, basta adicionar o prefixo "-" (sinal de menos).No entanto, na programao, para concluir o processo de compilao, nmeros binrios so apenas virando as coisas mais complicadas.Apenas dois dgitos so utilizados - 0 e 1, enquanto que todos os outros nmeros, smbolos e sinais so formados por combinaes destes dois dgitos.No caso de nmeros negativos, a soluo o seguinte: Em nmeros negativos, o bit mais significativo (o bit mais esquerda) representa o sinal do nmero (onde 0 positiva e uma negativa).No caso de um nmero de 8 bits para representar um valor numrico so apenas 7 bits de.De acordo com este tipo de codificar o nmero 127 o maior nmero assinado positiva que pode ser representada com 8 bits.Alm disso, h zero (0) positivo e negativo (ver quadro direita).A prxima pergunta : Como possvel saber o nmero ?Por exemplo, se colocarmos o nmero 10000001, -1 ou 129?No se preocupe, que o compilador alas.Esta a razo pela qual as variveis so declaradas por escrever o programa.Bem, que vamos discutir a seguir.

BITA teoria que um pouco a unidade bsica de informao ... Vamos esquecer por um momento e mostrar por que que, na prtica.A resposta - nada especial de um bit um dgito binrio.Semelhante a um sistema decimal em que os dgitos de um nmero no tem o mesmo peso (por exemplo, os dgitos no nmero 444 o mesmo, mas tem valores diferentes), o "significado" de um bit depende da posio com nmero binrio.Neste caso, no faz sentido falar de unidades, centenas etc.em nmeros binrios, os dgitos so chamados o bit zero (o primeiro bit para a direita), o primeiro bit (o segundo bit para a direita), etc.Alm disso, uma vez que o sistema utiliza apenas dois dgitos binrios (0 e 1), o valor de um bit pode ser 0 ou 1.No fique confuso se voc est um pouco com o valor de 4, 16 ou 64. Estes so os valores representados no sistema decimal.Simplesmente, ns nos tornamos to acostumados a usar casas decimais que essas expresses tornaram-se comuns.Seria correto dizer por exemplo, "o valor do sexto bit em qualquer nmero binrio equivalente ao nmero decimal 64".Mas somos todos humanos e velhos hbitos custam a morrer.Alm disso, como ele soa "nmero um-um-um-zero-zero, ..."?BYTEUm byte constitudo por 8 bits colocados lado a lado.Se um bit um dgito, lgico que bytes representar nmeros.Todas as operaes matemticas pode ser feito por meio deles, como por meio de nmeros decimais comuns.Semelhante a quaisquer dgitos numricos, os dgitos de um byte no tm o mesmo significado.O bit mais esquerda tem a maior ponderao, de modo que chamado o bit mais significativo (MSB).O bit mais direita tem o menor peso, por isso chamado o bit menos significativo (LSB).Uma vez que um byte de 8 dgitos podem ser combinados de diferentes maneiras 256, o maior nmero decimal que pode ser representada com um byte 255 (uma combinao representa um zero).A mordidela ou quarteto representa um byte metade.Dependendo metade o nmero em questo (esquerda ou direita), mordidelas so chamados "alto" ou "baixo", respectivamente.

Voc provavelmente j pensou sobre como a eletrnica dentro de um circuito integrado digital, um microcontrolador ou microprocessador.Como so os circuitos que executam operaes matemticas complicadas e tomar decises?Voc sabia que os seus regimes, aparentemente complicadas consistem em apenas alguns elementos diferentes, chamados circuitos lgicos ou portas lgicas?1.3 DETALHES IMPORTANTESA operao desses elementos baseado nos princpios estabelecidos pelo matemtico britnicoGeorge Booleem meados do sculo 19 - ou seja, antes da inveno da primeira lmpada!Em suma, a idia principal era expressar formas lgicas por meio de funes algbricas.Essa idia logo se tornou um produto prtico, que mais tarde se tornou o que hoje conhecemos como circuito lgico AND (E), O (OR) ou NO (NOT).O princpio de operao conhecida como lgebra booleana.Circuitos LgicosAlgumas instrues de programa usado por um microcontrolador em funo da mesma maneira como portas lgicas, mas sob a forma de comandos.Abaixo, vamos explicar o princpio do seu funcionamento.PORTA E (AND)

Uma porta lgica "Y" tem duas ou mais entradas e uma sada.Neste caso, a porta utilizada tem apenas duas entradas.Uma lgica um (1) aparece na sua sada apenas se ambas as entradas (A e B) so transportados alta (1).A tabela direita a tabela verdade que mostra a relao entre as entradas e sadas do porto.O princpio de funcionamento o mesmo quando o porto tem mais do que duas entradas: a sada fornece um lgico um (1) apenas se todas as entradas so realizadas alta (1).

Qualquer outra combinao de tenses de entrada proporcionar uma lgica zero (0) na sua sada.Usado no programa, a operao lgica E realizado por um programa de instrues, que falaremos mais tarde.Por agora s sei que a lgica do programa e refere-se realizao deste tipo de operao sobre os bits correspondentes de dois registros diferentes.PORTA O (OR)

De modo semelhante, a porta OU tambm tem duas ou mais entradas e uma sada.Se o porto tem apenas duas entradas, o seguinte aplica-se: a sada fornece um lgico um (1), se uma ou outra entrada (A ou B) colocada em alta (1).Se a porta ou ter mais de duas entradas, o seguinte aplica-se: A sada fornece um lgico um (1) se, pelo menos, uma entrada colocada em alta (1).Se todas as informaes so lgica zero (0), a sada ser uma lgica zero (0), bem.

Em um programa, a operao lgica OR realizada da mesma maneira que a operao de Y.PORTA NO (NO)NO porta lgica tem uma entrada e uma sada, para que ele funciona de maneira muito simples.Quando um lgico zero (0) aparece na sua entrada, a sada fornece um lgico um (1) e vice-versa.Isto significa que este porto inverte-se os sinais e, por isso, chamado investidores.

No programa da operao lgica no executada em um byte.O resultado um byte com os bits invertidos.Se os bits em um byte considerado nmero, o montante investido um complemento a esse nmero.O complemento de um nmero o valor que adicionado ao nmero de atingir o nmero de 8 dgitos binrios.Em outras palavras, a soma dos nmeros de 8 dgitos e o seu complemento sempre 255.PORTA XOR (OU exclusivo)

A XOR (OU exclusivo) um pouco complicado em comparao com os outros.Ele representa uma combinao de todas as portas acima descritos.A sada fornece um lgico um (1) apenas se as suas entradas esto em diferentes estados lgicos.

No programa, esta operao muitas vezes usado para comparar dois bytes.O restante pode ser utilizado para o mesmo fim (se o resultado for 0, os bytes so iguais).Ao contrrio do resto, a vantagem de esta operao lgica que possvel obter resultados negativos.RECORDSUm registo ou uma clula de memria um circuito eletrnico que pode salvar o estado de um byte.

SFR REGISTRADORESAo contrrio de registros no tm funo especial e predeterminado, cada um microcontrolador tem um nmero de registradores de funes especiais (SFR), com a funo de incumprimento por parte do fabricante.Os bits so ligados ao circuito interno do microcontrolador, tais como temporizadores, conversores A / D, osciladores, etc., o que significa que manipular directamente a operao destes circuitos, ou microcontrolador.Imaginem oito interruptores que lidam com a operao de um pequeno circuito dentro do microcontrolador.Os registos SFR fazer exatamente o mesmo.

Em outras palavras, o bit de registo de estado definido dentro do programa, uma pequena cabea SFR regista dentro dos circuitos do microcontrolador, estes circuitos so ligados aos pinos do microcontrolador usado para um dispositivo perifrico ... Bom, depende voc.De entrada / sada (E / S)Para fazer com que um microcontrolador til, deve ser ligada a um dispositivo externo, que , a um perifrico.Cada microcontrolador tem um ou mais discos (chamadas portas) conectados a pinos do microcontrolador.Por que eles so designados como entrada / sada?Porque voc pode alterar a funo de cada pino que voc deseja.Por exemplo, voc quer que seu dispositivo para ligar e desligar os trs sinais de LEDs e, simultaneamente, monitorar o estado lgico de cinco sensores ou botes.Uma das portas devem ser configurados de tal modo que existem trs sadas (ligado aos LEDs) e cinco entradas (ligados aos sensores).Isto feito simplesmente por meio de software, o que significa que a funo de qualquer pino pode ser alterado durante a operao.

Uma das caractersticas mais importantes do pino de entrada / sada (E / S) a corrente mxima que pode entregar / receber.Na maioria dos microcontroladores corrente a partir de um pino que suficiente para disparar um LED ou outro dispositivo de corrente baixa (10-20mA).Os mais pinos de E / S tem, quanto menor for a corrente mxima de um pino.Em outras palavras, todas as portas de E / S compartilham o atual mximo indicado na folha de especificao tcnica do microprocessador.Outra caracterstica importante que os pinos podem ter resistores pull-up.Estas resistncias conectar o pino para a tenso de alimentao de energia positiva e seu efeito pode ser visto quando a configurao do pino como uma entrada ligada a um interruptor mecnico ou um boto de presso.As ltimas verses dos microcontroladores tm resistores pull-up de software configurvel.Cada porta de E / S est normalmente sob o controlo de um registo SFR especializado, o que significa que cada bit do presente registo determina o estado do pino correspondente no microcontrolador.Por exemplo, escrever uma lgica 1 (um) a um bit do registrador de controle (SFR), o pino da porta apropriado automaticamente configurado como uma sada.Isso significa que a tenso levou ao pino pode ser lido como 0 ou 1 lgico.Caso contrrio, escrevendo 0 para registrar SFR, o pino da porta apropriado est configurado como uma sada.Sua tenso (0V ou 5V) corresponde ao estado do bit apropriado de registro de porta.

MEMORY UNITA unidade de memria do microcontrolador usado para armazenar dados.A maneira mais fcil de explicar comparar um grande armrio com muitas gavetas.Se voc verificar as gavetas claramente que fcil o acesso de qualquer dos seus contedos para ler a etiqueta na parte frontal da gaveta.

De modo semelhante, cada endereo de memria corresponde a uma localizao da memria.O contedo de qualquer local pode ser lido e voc pode acessar a dirigi-la.A memria pode ser escritos ou lidos na cidade.Existem vrios tipos de memria dentro do microcontrolador:

Memria ROM (Read Only Memory) - Read Only MemoryA ROM usado para guardar permanentemente o programa que est sendo executado.O tamanho do programa que pode ser escrita depende do tamanho da memria.Microcontroladores atuais normalmente usa endereamento de 16 bits, o que significa que eles so capazes de enderear at 64KB de memria, ou seja, 65.535 locais.Por exemplo, se voc um novato, seu programa raramente excedem o limite de vrias centenas de instrues.Vrios tipos de ROM.

ROM Mask (mascarado) - MROMA ROM de mscara de um tipo de ROM cujo contedo definido pelo fabricante.O termo "mscara" o processo de fabrico, em que as partes de chips so incorporados na mscara usada durante o processo de fotolitografia.No caso da produo de grandes sries, o preo muito baixo.Esquea a idia de modificar ...

ROM OTP (One Time Programmable ROM) - one-time programmable ROMA memria programvel one-time permite baixar um programa no chip, mas como seu nome, disse uma vez.Se um erro depois de baix-lo, a nica coisa a fazer baixar o programa correto em outro chip detectado.

EPROM UV (Erasable Programmable ROM UV) - Erasable Programmable ROM ultravioleta

A encapsulao deste microcontrolador tem uma "janela" reconhecvel no topo.Isto permite expor a superfcie do chip de silcio de luz ultravioleta e de eliminar completamente o programa em vrios minutos.Em seguida, voc pode baixar um novo programa na mesma.A instalao desta janela complicada, o que obviamente afecta o preo.Do nosso ponto de vista, infelizmente, negativa ...

Memria FlashEste tipo de memria foi inventado nos anos 80 nos laboratrios da empresa INTEL, como forma desenvolvida de UV EPROM.Uma vez que possvel escrever e apagar o contedo da memria virtualmente nmero ilimitado de vezes, microcontroladores com memria Flash so ideal para estudar, experimentar e fabricao em pequena escala.Pela grande popularidade desta memria, a maioria so fabricados com microconroladores tecnologiaflash dehoje.Se voc estiver comprando um microcontrolador, esta definitivamente a escolha perfeita!

Memria RAM (Random Access Memory) - Memria de Acesso AleatrioDesligar a fonte de alimentao, o contedo da RAM perdido.Ela utilizada para armazenar temporariamente os dados e resultados imediatos criados e utilizados durante o funcionamento do microcontrolador.Por exemplo, se o programa executa a adio (de qualquer coisa) voc precisa ter um registro que representa o que chamado de "soma" na vida cotidiana.Para este fim, num dos registos da memria RAM chamado de "montante" e usada para armazenar os resultados da adio.

EEPROM (ROM programvel apagvel eletricamente) - ROM programvel apagvel electricamenteO contedo da EEPROM pode ser alterado durante a operao (semelhante RAM), mas memorizado permanentemente aps a perda de fornecimento de energia (semelhante ROM).Portanto, a EEPROM frequentemente utilizada para armazenar valores criadas durante a operao, tm de ser armazenados de forma permanente.Por exemplo, se voc tiver criado uma chave eletrnica ou um alarme seria timo para permitir que o usurio crie e digite uma senha para sua conta.Claro, a nova senha deve ser salvo por desligar a fonte de alimentao.Nesse caso, uma soluo perfeita uma EEPROM do microcontrolador incorporado.

INTERRUPOA maioria dos programas usam interrupes regulares durante a execuo do programa.O microcontrolador finalidade geralmente reagem a mudanas no seu ambiente.Em outras palavras, quando algo acontece, o microcontrolador reage de alguma forma ... Por exemplo, pressionando o boto no controle remoto, registros de microcontroladores e responde a mudana de comando de canal, aumentando ou diminuindo o volume etc.Se o microcontrolador passar a maior parte do seu tempo verificando vrios botes de forma constante - horas, dias, isso seria impraticvel.Portanto, o microcontrolador "aprendeu um truque" durante a sua evoluo.Ao invs de continuar a verificar qualquer pino ou pouco, o microconrolador deixa o seu "trabalho em espera" para "especialista" que reagir apenas quando acontece alguma coisa digna de nota.O sinal que informa o processador central de cerca de um tal evento chamada interrupo.

UNIDADE DE PROCESSAMENTO CENTRAL (CENTRAL PROCESSADOR UNIT - CPU)Como o seu nome sugere, este um aparelho que controla todos os processos dentro do microcontrolador. constituda por vrias unidades menores, dos quais os mais importantes so: Decodificador de instruo a parte que decodifica as instrues do programa e ativa outros circuitos com base nesta.O "Conjunto de Instrues", que diferente para cada famlia de microcontroladores exprime as capacidades deste circuito; Unidade lgica aritmtica (unidade lgica aritmtica - ALU)realiza todas as operaes matemticas e lgicas sobre os dados;e Acumuladorou ficha de trabalho. um registo SFR intimamente relacionado com a operao da ULA.Ele usado para armazenar todos os dados no qual executar alguma operao (adicionar, mover).Ele tambm armazena os resultados prontos para processamento posterior.Um dos registos SFR, chamado Registro de Status (PSW), est intimamente relacionado com a bateria.Ela mostra o "estado" de um nmero armazenado no acumulador (o nmero maior ou menor do que zero, etc.) em qualquer dado momento.

BUSO nibus composto por 8, 16 ou mais cabos.Existem dois tipos de nibus: nibus barramento de endereos e dados.O barramento de endereos consiste em quantas linhas necessrias para memria endereo.Ele utilizado para transmitir o endereo de memria para a CPU.O barramento de dados to largo como os dados neste caso de 8 bits ou linhas de largura.Ele utilizado para ligar todos os circuitos dentro do microcontrolador.

COMUNICAO EM MASSAA ligao em paralelo entre o microcontrolador e perifricos, atravs da entrada / sada uma soluo perfeita para distncias curtas - at vrios metros.No entanto, em outros casos em que necessrio para estabelecer a comunicao entre dois dispositivos, em longas distncias, no possvel a utilizao de uma ligao em paralelo.Em vez disso, a conexo serial utilizada.Hoje, a maioria dos microcontroladores tm incorporado vrios sistemas diferentes para comunicao serial, como equipamento standard.Qual destes sistemas ir ser utilizados num caso especfico depende de muitos factores, os mais importantes so: Quantos dispositivos do microcontrolador tem a troca de dados? Qual a velocidade de partilha de dados obrigatria? O que a distncia entre os dispositivos? Voc precisa transmitir e receber dados simultaneamente?

Um dos mais importantes em termos de comunicao serial o Protocolo de que as coisas devem ser estritamente observados. um conjunto de regras obrigatrias que se aplicam aos dispositivos de interpretar corretamente os dados que eles trocam uns com os outros.Felizmente, microcontroladores cuidar disso automaticamente, de modo que o trabalho do programador / usurio reduzida a escrita e leitura de dados.

SERIAL VELOCIDADE DE TRANSMISSOVelocidade de transmisso serial (taxa de transmisso) o termo utilizado para designar o nmero de bits transmitidos por segundo [bps].Note-se que este termo se refere a bits, no bytes!O protocolo tipicamente requer que cada byte transferido em conjunto com vrios bits de controlo.Isso significa que um byte num fluxo de dados em srie pode consistir em 11 bits.Por exemplo, se a velocidade de transmisso de srie de 300 bps para um mximo de 37 e um mnimo de 27 bytes podem ser transmitidos por segundo.Os sistemas mais comumente usados de comunicao serial so:

I2C (circuito integrado Inter) - INTER-CIRCUITO INTEGRADOInter-circuito integrado um sistema para o intercmbio de dados seriais entre microcontroladores e especializada gerao de circuitos integrados. usado quando a distncia entre eles curto (o receptor eo transmissor so geralmente na mesma placa de circuito impresso).A ligao estabelecida por meio de duas linhas - um utilizado para transmitir dados, enquanto o outro usado para sincronizao (sinal de relgio).Como mostrado na figura, um dispositivo sempre o principal (master - mestre), o que torna a abordar um chip subordinado (escravo - escravo) antes do incio da comunicao.Assim microcontrolador 112 pode se comunicar com outros dispositivos.Velocidade de transmisso de srie est geralmente 100 Kb / s (modo padro) ou 10 Kb / s (modo de transmisso baixa velocidade).Recentemente, tem havido sistemas com velocidade de transmisso de srie 3.4 Mb / s.A distncia entre os dispositivos de comunicao atravs do barramento I2C limitado a poucos metros.

SPI (Serial Peripheral Interface BUS) - barramento serial interface de perifricosUm nibus de interface perifrica serial um sistema de comunicao serial que usa at quatro linhas (normalmente s so necessrios trs) - para receber os dados, para transmitir dados para sincronizar e (opcional) para selecionar o dispositivo que ele se comunica.Esta a ligao duplex total, o que significa que os dados so enviados e recebidos simultaneamente.O dbito mximo de transmisso mais elevada do que no sistema de ligao I2C.

UART (Universal Asynchronous Receiver / Transmitter) - Universal Asynchronous Receiver-TransmitterEste tipo de conexo assncrona, o que significa que uma linha especial para transmitir o sinal de relgio no usado.Em algumas aplicaes este recurso crucial (por exemplo, enviar dados remotamente por RF ou luz infravermelha).Uma vez que apenas uma linha usado para comunicao, tanto o receptor como o transmissor receber e enviar dados a mesma velocidade que foi pr-selecionado para manter a sincronizao necessria.Este um modo simples para transmitir dados, pois representa basicamente uma converso de dados de 8 bits a partir de paralelo para srie.A taxa de transmisso no alta, at 1 Mbit / s.

OSC

Uniformes impulsos gerados pelo oscilador para permitir o funcionamento normal e sincronizada de todos os circuitos do microcontrolador.O oscilador tipicamente configurada de modo que utilize um ressoador de cristal de quartzo ou de cermica para a estabilizao de frequncia.Alm disso, ele pode funcionar como um circuito autnomo (tal como RC do oscilador). importante dizer que as instrues do programa no so executadas taxa imposta pelo mesmo oscilador, mas vrias vezes mais lento.Isso porque cada instruo executada em vrios ciclos do oscilador.Em alguns microcontroladores o mesmo nmero de ciclos for preciso para executar todas as instrues, enquanto outros no o tempo de funcionamento o mesmo para todas as instrues.Portanto, se o sistema utiliza a cristal de quartzo com uma frequncia de 20 MHz, o tempo de execuo de uma instruo de programa de 50 ns, mas a 200, 400 ou 800 nS, dependendo do tipo de microcontrolador.

CIRCUITO DE ALIMENTAODevemos mencionar duas coisas merece ateno em relao ao microcontrolador fonte de alimentao do circuito: Brown para fora uma condio potencialmente perigosa que ocorre quando o microcontrolador ou desligar se a voltagem da fonte de alimentao para fora das margens devido ao rudo eltrico.Desde que o microcontrolador tem vrios circuitos que operam em diferentes nveis de tenso, esse estado pode causar um comportamento descontrolado.Para evitar isso, o microcontrolador normalmente tem um construdo para o circuito de reset marrom para fora.O circuito repe o microcontrolador imediatamente se a tenso de alimentao cair abaixo do limite. O pino de reset(reiniciar), muitas vezes rotulado MCLR (Master Clear Reset), serve para reiniciar o microcontrolador externo atravs da aplicao de um (1) Software zero (0) ou um, dependendo do tipo de microcontrolador.Se o circuito marrom para fora no incorporada, um circuito externo simples para redefinio de marrom para fora pode conectar o pino MCLR. Temporizadores / ContadoresO oscilador de cristal de quartzo microcontrolador usado para a operao.Embora no seja a soluo mais simples, h muitas razes para us-lo.A frequncia do oscilador definido com preciso e muito estvel, por isso sempre gera pulsos da mesma largura, o que os torna perfeitos para temporizao.Esses osciladores so usados em relgios de quartzo.Se voc precisa para medir o tempo decorrido entre dois eventos, basta contar os impulsos gerados pelo oscilador.Isso exatamente o que faz o timer.

A maioria dos programas usam estes temporizadores eletrnicos em miniatura.Registos SFR so geralmente 8 ou 16 bits, cujo contedo automaticamente aumentado com cada impulso.Uma vez que o registo est cheio, gerada uma interrupo!Se o temporizador interno utiliza o oscilador de quartzo para o seu funcionamento, possvel medir o tempo entre os dois eventos (o valor do registo, no momento de iniciar a medio T1, quando a medio terminado T2, o tempo decorrido Como resultado da subtraco T2 - T1).Se os registros so aumentadas com os impulsos que vem da fonte externa, tal temporizador torna-se um contador.Esta uma simples explicao do seu funcionamento. um pouco mais complicado na prtica.COMO FAZER os temporizadores?Na prtica, os impulsos gerados pelo circuito oscilador de quartzo so tomadas uma vez por ciclo da mquina directamente ou divisor, o aumento do nmero no registador de cronometro.Se uma instruo (um ciclo de mquina) de quatro perodos do oscilador de quartzo, este nmero ser alterada de um milho de vezes por segundo (cada microssegundos) para incorporar quartzo oscila a uma frequncia de 4 MHz.

fcil para medir intervalos de tempo curtos, tal como descrito acima (at 256 microssegundos, porque o maior nmero que pode conter um registo).Esta desvantagem bvia pode ser superada de vrias maneiras: usando o oscilador mais lenta, atravs de registos com mais bits, o divisor ou interrupo.As duas primeiras solues tm alguns pontos fracos, por isso recomendamos utilizar o divisor e / ou interrupo.

Prescaler IN Use um timer OPERAOUm divisor um dispositivo eletrnico usado para dividir a freqncia por um fator predeterminado.Isso significa que voc precisa para realizar uma, duas, quatro ou mais pulsos na sua entrada para gerar um pulso na sada.A maioria dos microcontroladores tm construdo um ou mais pr-scalers e sua taxa de diviso pode ser alterada no mbito do programa.O divisor utilizado quando necessrio medir a perodos mais longos de tempo.Se o temporizador de vigilncia e partes temporizador de um divisor, no pode ser utilizado por ambos simultaneamente.

INTERRUPO NO usar um timer OPERAOSe o registro temporizador 8 de bits, o maior nmero que pode ser escrito nele 255 (em registros de 16 bits o nmero 65535).Se esse nmero for excedido, o cronmetro reinicia automaticamente e contando comea novamente do zero.Isso chamado de estouro ou estouro(overflow).Permitido pelo programa, o excesso pode causar uma interrupo, o que abre possibilidades completamente novas.Por exemplo, o estado de fichas usado para contar segundos, minutos ou dias, pode ser implementada de uma rotina de interrupo.Todo o processo (excepto a rotina de interrupo) realizada internamente, permitindo que os circuitos principais do microcontrolador est a funcionar correctamente.

A figura acima descreve a utilizao de uma interrupo na operao do temporizador.Para atribuir um divisor para a durao do temporizador atrasos arbitrrios ocorrer com o mnimo de interferncia na execuo do programa principal.

CONTADORESSe um temporizador fornecido pela entrada de impulsos, sendo o pino de entrada no microcontrolador, um contador ocorre.Ele , obviamente, o mesmo circuito eletrnico.A nica diferena que os impulsos de contagem so introduzidas pelo pino de entrada e a sua durao (largura) no est definido.Por isso, eles no podem ser utilizados para a medio de tempo, mas utilizado para outros fins, por exemplo: contar os produtos na linha de produo, o nmero de rotaes de um veio do motor, os passageiros etc.(Dependendo do sensor utilizado.

Watchdog timer (watchdog)O co de guarda um timer ligado a um oscilador RC totalmente independente dentro do microcontrolador.Se o co de guarda est habilitado, cada vez que voc contar para o valor mximo no estouro de log ocorre um sinal de reset do microcontrolador e a execuo do programa comear na primeira instruo gerada.O objetivo impedir que isso acontea usando o comando apropriado.A ideia baseia-se no facto de cada programa executado em vrias voltas, mais longo ou mais curto.Se as instrues redefinir o watchdog timer so colocados em locais estratgicos do programa, outros comandos que so executados regularmente, funcionamento do co de guarda no afetar a execuo do programa.Se por qualquer motivo (rudo eltrico freqente na indstria) contador de programa "presos" dentro de um loop infinito, o valor do Registro continuaro a aumentar pelo watchdog timer atingir o valor mximo, o registro vai transbordar e,Aleluiaocorre repartio!

A/D

Os sinais do mundo real so muito diferentes daqueles que "entende" o microcontrolador (zeros e uns), ento eles devem ser convertidos para que o microcontrolador possa entender.Um conversor analgico-digital um circuito eletrnico destinado a converter os sinais contnuos em nmeros digitais discretos.Em outras palavras, este circuito converte um nmero real em um nmero binrio e envia para a CPU para processamento.Este mdulo utilizado para medir a voltagem no pino de entrada.O resultado desta medio um nmero (valor digital) utilizada e processada mais tarde no programa.

Arquitetura internaTodos os microcontroladores atuais usam um dos dois modelos bsicos de arquitetura chamadoHarvardevon-Neumann.Eles so duas formas diferentes de troca de dados entre a CPU ea memria.Arquitetura Von Neumann-

Microcontroladores que usam arquitetura Neumann von- ter um nico bloco de memria e um barramento de dados de 8 bits.Como todos os dados so trocados atravs destes oito linhas, este canal est sobrecarregado, e comunicao em si muito lento e ineficiente.A CPU pode ler um conjunto de dados de instruo ou de leitura / escrita de / para a memria.Os dois processos no podem ocorrer simultaneamente uma vez que as instrues e dados de usar o mesmo barramento.Por exemplo, se uma linha de programa diz que o registo de RAM chamado de "SUM" deve ser aumentado em um (instruo:INCFSUMA), o microcontrolador ir:1. Leia parte da instruo de programa que especifica o que deve fazer (neste caso a instruo para aumentar "INCF")2. Leia a mesma instruo que especifica em que os dados devem ser executadas (neste caso o contedo do registo "SUM")3. Depois de ser aumentado, o contedo deste registo deve ser escrito no registro que foi lido (registro de endereos "SUM")O mesmo bus de dados utilizado para todas estas operaes intermdias.Arquitetura Harvard

Microcontroladores usando esta arquitetura tem dois barramentos de dados diferentes.Uma de 8 bits de largura e se conecta a CPU com memria RAM.O outro consiste em vrias linhas (12, 14 ou 16) e ligado CPU e ROM.Portanto, a CPU pode ler as instrues e executar acesso memria de dados ao mesmo tempo.Uma vez que todos os registos da RAM so de 8 bits de largura, todos os dados dentro do microcontrolador so trocados a mesma largura.Durante o processo de programa de escrita, apenas os dados de 8 bits so tratados.Em outras palavras, tudo o que voc pode mudar no programa e que pode afetar de 8 bits.Todos os programas escritos para estes microcontroladores sero armazenados na ROM interna do microcontrolador depois de ser compilado para cdigo de mquina.No entanto, essas localizaes ROM no tm 8, mas 12, 14 ou 16 bits.Adicionais 4, 6 ou 8 bits representam uma declarao que especifica o CPU o que fazer com os dados de 8 bits.As vantagens deste projeto so: Todos os dados do programa so um byte (8 bits) de largura.Como um barramento de dados utilizado para a leitura de um programa tem mais linhas (12, 14 ou 16), ambos de instrues e os dados podem ser lidos simultaneamente usando estes bits adicionais.Portanto, todas as instrues so executadas num nico ciclo, excepto as instrues de salto so dois ciclos. O fato de um programa (ROM) e dados temporria (RAM) so separadas, permitindo que o processador para executar instrues dois simultaneamente.Simplificando, durante a leitura ou escrita RAM (que marca o fim de uma instruo), a prxima instruo lida por outro nibus realizada. Em microcontroladores que usam a arquitetura devon-Neumann, voc nunca sabe o quanto de memria um negcio programa.Geralmente, a maioria das instrues do programa de ocupar duas posies de memria (um diz o que deve ser feito, enquanto o outro contm infor maes sobre o qual os dados devem ser realizados).No entanto, esta no uma frmula rgida comum, mas o caso.Em microcontroladores que usam uma arquitetura de Harvard, palavra programa de nibus mais largo do que um byte, permitindo que cada palavra programa composto de uma instruo e dados.Em outras palavras, uma localizao de memria - um programa de instrues. INSTRUES DE JOGO

O nome coletivo para todas as instrues que podem entender o microcontrolador chamado conjunto de instrues.Quando um programa conjunto, na verdade instrues especificadas na ordem em que devem ser executados est escrito.A principal restrio o nmero de comandos disponveis.Fabricantes aceitar ou abordagens a seguir descritas:

RISC (Reduced Instruction Set Computer) - Computador com Set de instrues reduzidoNeste caso, a ideia que o microcontrolador executa apenas reconhece e operaes bsicas (somar, subtrair, cpia, etc ...) as operaes mais complicadas so realizadas combinando-as (por exemplo, a multiplicao realizada atravs da realizao da adio sucessiva). como tentar explicar a algum algumas palavras como chegar ao aeroporto em uma nova cidade.No entanto, nem tudo to escuro.Alm disso, o microcontrolador muito rpido por isso no possvel ver todos os aritmticos "stunts" que executa.O usurio pode ver apenas o resultado final de todas as transaces.Finalmente, no to difcil de explicar onde o aeroporto se as palavras certas so utilizadas, tais como: direita, esquerda, etc. quilmetros

CISC (Complex Instruction Set Computer) - Computadores com um conjunto de instrues complexasCISC se ope a RISC!Microcontroladores destinados a reconhecer mais de 200 instrues diferentes realmente pode fazer muitas coisas em alta velocidade.No entanto, deve-se saber como utilizar todas as possibilidades oferecidas por uma lngua to rica, que nem sempre to fcil ...

COMO ESCOLHER UM microcontrolador?Bem, se voc um novato, e foi decidido a trabalhar com microcontroladores.Parabns pela escolha!No entanto, primeira vista, no fcil escolher o microcontrolador mais adequado como parece primeira vista.O problema no a pequena gama de dispositivos para escolher, mas muito pelo contrrio!Antes de comear a projetar um dispositivo baseado em um microcontrolador, considere o seguinte: quantas entradas / linhas so necessrias para o funcionamento, o dispositivo iria realizar outras operaes de ligar / desligar um rel, voc precisa de algum especializada como o mdulo de comunicao srie A / D conversor etc.Quando voc tem uma imagem clara do que voc quer, o intervalo de seleco muito reduzida, e ele est pensando sobre o preo.Ser que voc tem vrios dispositivos?Vrias centenas?Um milho?Enfim, agora mais clara.Se voc est pensando em todas essas coisas em primeiro lugar, tudo vai parecer um pouco confuso.Por essa razo, ir passo a passo.Em primeiro lugar, escolher o fabricante, isto , a famlia de microcontroladores ofertas.Ento, aprender a trabalhar com um modelo especfico.Basta aprender o que voc precisa para aprender, no de muitos detalhes.Resolver o problema especfico e uma coisa surpreendente vai acontecer - ser capaz de lidar com qualquer modelo do mesmo fabricante ...Mais ou menos, tudo parece andar de bicicleta: depois de vrias quedas inevitveis no incio, ser capaz de equilibrar e montar qualquer bicicleta.Claro, ele nunca se esquece tanto ciclismo, e as habilidades de programao!

1,4 Microcontroladores PICO microcontrolador PIC desenvolvido pelaMicrochip Technology provavelmente a melhor opo se voc um novato.H vrias razes que isso verdade ...O verdadeiro nome desta microcontrolador PIC (Peripheral Controller Interface), conhecido como o PIC.Seu primeiro predecessor foi criada em 1975 pela empresaGeneral Instruments.Este chip chamado PIC1650 foi concebido para fins completamente diferentes.Dez anos mais tarde, a adio de uma EEPROM, este tornou-se um circuito microcontrolador PIC real.Alguns anos atrs, a empresaMicrochip Technologyfabricado a amostra 5000000000.Se voc estiver interessado em aprender mais sobre isso, continue a ler.Se voc estiver interessado em aprender mais sobre isso, basta manter a leitura.A idia principal deste livro fornecer as informaes necessrias para que o usurio seja capaz de usar microcontroladores em prtica depois de l-lo.Para evitar explicaes pesados e histrias interminveis sobre as caractersticas teis de diferentes microcontroladores, este livro descreve o funcionamento de um determinado modelo que pertence "classe mdia alta". PIC16F887 - poderoso o suficiente para ser digno de ateno e simples o suficiente para ser usado por qualquer pessoa.Assim, os captulos seguintes descrevem esse microcontrolador em detalhes e tambm se referem a toda a famlia PIC.

FamliaROM [Kb]RAM [bytes]PinesFreqncia de clock.[MHz]Entradas A / DResoluo do conversor A / DComparadores16/08 bit temporizadoresComunicao SerialSadas PWMOutros

Arquitetura do low-end 8-bit palavra de instruo 12-bit

PIC10FXXX0.375-,7516-246-84-80-280-11 x 8---

PIC12Fxxx0,75-1,525 - 3884-80-380-11 x 8--EEPROM

PIC16Fxxx0,75-325-13414-44200-380-21 x 8--EEPROM

PIC16HVXXX1,52518-2020---1 x 8--VDD = 15V

Arquitetura de mdio porte de 8 bits instruo palavra de 14 bits

PIC12Fxxx1,75-3,564-1288200-41011-2 x 16 8 1 x-0-1EEPROM

PIC12HVXXX1.75648200-41011-2 x 16 8 1 x-0-1-

PIC16Fxxx1,75-1464-36814-64200-138 ou 100-21-2 x 16 8 1 xI2C SPI USART0-3-

PIC16HVXXX1,75-3,564-12814-20200-121022 x 8 x 1 16I2C SPI USART--

Arquitetura de high-end 8-bit palavra de instruo de 16 bits

PIC18FXXX4-128256 - 393618-8032-484-1610 ou 120-30-2 x 2-03 agosto x 16USB2.0 CAN2.0 I2C SPI USART0-5-

PIC18FXXJXX8-1281024 - 393628-10040 - 4810-161020-2 x 2-03 agosto x 16USB2.0 Ethernet I2C SPI USART2-5-

PIC18FXXKXX8-64768 - 393628 - 446410-131021 x 8 3 x 16I2C SPI USART2-

Todos os microcontroladores PIC usam uma arquitetura de Harvard, o que significa que a sua memria de programa est ligado CPU por mais de 8 linhas.H microcontroladores de 12, 14 e 16 bits, dependendo da largura do barramento.A tabela acima mostra as principais caractersticas destas trs categorias.Como voc pode ver no grfico na pgina anterior, exceto "16 bits monstros" PIC e PIC 24FXXX 24HXXX - todos os microcontroladores so arquitetura Harvard de 8 bits e pertencer a um dos trs grupos.Portanto, dependendo do tamanho da palavra programa so primeira, segunda e terceira categoria de microcontroladores, ou seja, microcontroladores 12, 14 ou 16 bits.Desde que tm similares de ncleo 8 bits, todos usam o mesmo conjunto de instrues e "esqueleto" bsico de hardware ligado a unidades perifricas ou menos.Microcontroladores PIC com palavras de 14 bits programa parece ser a melhor escolha para iniciantes.Aqui est o porqu ...

INSTRUES DE JOGOO conjunto de instrues para o 16F8XX microcontrolador inclui 35 instrues no total.A razo para um nmero to pequeno de instrues reside no arquietectura RISC.Isto significa que as instrues so bem optimizada do ponto de vista da velocidade de funcionamento, da simplicidade da arquitectura e do cdigo de compacidade.A desvantagem da arquitetura RISC esperado programador que aborda estas instrues.Claro, isso s relevante se a linguagem de programao assembler usado.Este livro refere-se programao em alto nvel linguagem C, o que significa que a maioria do trabalho foi feito por outra pessoa.Assim, s voc tem que usar instrues relativamente simples.

TEMPO DE EXECUO DE INSTRUESTodas as instrues para executar em um ciclo.As nicas excees podem ser instrues de desvio condicional ou instrues que alteram o contedo do contador de programa.Em ambos os casos, dois ciclos de relgio so requeridos para a execuo da instruo, enquanto o segundo ciclo executado como um NOP (No Operation).Instrues de ciclo composto por quatro ciclos de clock.Se um oscilador de 4 MHz usado, o tempo nominal para a execuo da instruo 1S.Quanto a instrues de desvio, o tempo de execuo da instruo 2S.Conjunto de instrues de microcontroladores PIC 14 bits:INSTRUODESCRIOOPERAOBANDEIRACLK*

Instrues para a transmisso de dados

K MOVLWMova literal para Wk -> w1

MOVWF fMover o contedo de W afW -> f1

MOVF f, dMover o contedo de modaf -> dZ11, 2

CLRWExclua o contedo da W0 -> WZ1

CLRF fExclua o contedo da f0 -> fZ12

Swapf f, dMordidelas de swap em ff (7: 4), (3: 0) -> f (3: 0), (7: 4)11, 2

Logic - instrues aritmticas

K addlwAdicionar literal para WW + K -> WC, CC, Z1

ADDWF f, dAdicionar o contedo de W fW + f -> dC, CC, Z11, 2

K SUBLWSubtrair W a partir literalkW -> WC, CC, Z1

SUBWF f, dSubtrair W de ffW -> dC, CC, Z11, 2

K ANDLWE W com literalW e K -> WZ1

ANDWF f, dE W com fW e F -> dZ11, 2

K IORLWInclusive OR W com literalW ou k -> WZ1

IORWF f, dInclusive OR W com fW ou f -> dZ11, 2

XORWF f, dOU exclusivo W com literalXOR k W -> WZ11, 2

K XORLWOU exclusivo W com fW XOR f -> dZ1

INCF f, dAdicionar uma aff + 1 -> fZ11, 2

DECF f, dSubtrair 1 aff-1 -> fZ11, 2

RLF f, dF Rodar para a esquerda atravs de carryC11, 2

RRF f, dF Gire para a direita atravs carryC11, 2

COMF f, dComplemento ff -> dZ11, 2

Instrues orientadas por bit

BCF f, bDefina como 0 bit de registro b f0 -> f (b)11, 2

BSF f, bBit definido como 1 log b f1 -> f (b)11, 2

Instrues de controle de programa

BTFSC f, bSalta se pouco b f log 0Ir se f (b) = 01 (2)3

BTFSS f, bSalta se pouco b Reg.f 1Ir se f (b) = 11 (2)3

DECFSZ f, dF diminuio a 1. Salta se o resultado for 0f-1 -> D saltar se Z = 11 (2)1, 2, 3

INCFSZ f, dF aumento para 1. Salta se o resultado 1f + 1 -> D saltar se Z = 01 (2)1, 2, 3

GOTO kIr para um endereok -> PC2

CHAMADA kChamar um sub-rotinaPC -> TOS, k -> PC2

RETORNORetornando de uma sub-rotinaTOS -> PC2

K RETLWRetorno com literal em Wk -> W, TOS -> PC2

RETFIEA interupcin retornoTOS -> PC, 1 -> GIE2

Outras instrues

NOPNenhuma operaoTOS -> PC, 1 -> GIE1

CLRWDTReinicie o watchdog timer0 -> WDT, 1 -> TO, 1 -> PDTO, PD1

SLEEPColoque em repouso0 -> WDT, 1 -> TO, 0 -> PDTO, PD1

* 1 Se um registro de E / S for alterada, o valor utilizado ser o valor apresentado nos pinos do microcontrolador.* 2 Se a instruo executada em TMR registrar e se d = 1, o prescaler sero apagados.* 3 Se a instruo executada em TMR registo e se d = 1, o prescaler sero apagados.

Arquitetura dos microcontroladores PIC de 8 bits.Quais destes pertencem aos mdulos do microcontrolador vai depender do tipo de microcontrolador.

Captulo 2 - A programao de microcontroladoresVoc certamente sabe que no suficiente apenas para conectar o microcontrolador para ligar os outros componentes e uma fonte de energia para faz-lo funcionar, certo?Temos de fazer mais.Voc precisa programar o microcontrolador.Se voc acha que complicado, voc est errado.Todo o procedimento muito simples.Basta ler o texto para entender o que queremos dizer. 2.1 linguagens de programao CARACTERSTICAS PRINCIPAIS 2.2 MikroC 2.3 TIPOS DE DADOS MikroC 2.4 Variveis e constantes 2,5 OPERADORES 2.6 As estruturas de controle TIPOS DE DADOS AVANADA 2.7 2.8 FUNES 2.9 RECURSOS de pr-processamento 2.10 mikroC PRO para PIC 2.11 PROGRAMAO DE USAR O PIC mikroC PRO para PIC 2.1 linguagens de programao

O microcontrolador executa o programa carregado na memria flash.Este chamado o cdigo executvel compreende uma srie de uns e zeros, aparentemente sem sentido.Dependendo da arquitetura do microcontrolador, as palavras de cdigo binrio constitudo por 12, 14 ou 16 bits de largura.Cada palavra interpretado pelo processador como uma instruo para ser executada durante o funcionamento do microcontrolador.Todas as instrues que o microcontrolador pode reconhecer e executar so chamados coletivamente conjunto de instrues.Como mais fcil de trabalhar com o sistema de numerao hexadecimal, o cdigo executvel frequentemente representado como uma srie de nmeros hexadecimais chamado cdigo hexadecimal.Microcontroladores PIC, nas palavras do programa de 14 bits de largura, o conjunto de instrues tem 35 instrues diferentes.Assembly Language

Como o processo de escrever cdigo executvel foi consideravelmente rdua, por isso, foi criada a primeira linguagem de programao chamada Assembler (ASM).Aps a sintaxe bsica de assembler, que era mais fcil escrever e entender o cdigo.As instrues de montagem consistem de abreviaturas significativas e cada instruo corresponde a uma localizao da memria.Um programa chamado compila assembler (traduz) instrues em linguagem de montagem em cdigo de mquina (cdigo binrio).Programa Heste compila instruo por instruo sem otimizao.Como pode controlar em detalhe todos os processos postos em prtica dentro do chip, esta linguagem de programao ainda popular.

Vantagens de linguagens de programao de alto nvelApesar de todos os lados bons, linguagem assembly tem algumas desvantagens: Mesmo uma transao no programa escrito em conjunto consiste em vrias direes, tornando-se muito longas e pesadas. Cada tipo de microcontrolador tem seu prprio conjunto de instrues que um programador precisa saber para escrever um programa Um programador tem de saber o hardware do microcontrolador para escrever um programaPrograma escrito em C (O mesmo programa compilado para cdigo assembly):

Linguagens de programao de alto nvel (Basic, Pascal, C, etc.) foram criados com a finalidade de superar as desvantagens da montadora.Em linguagens de programao vrias instrues de montagem seniores so substitudas por uma sentena.O programador no tem que saber o conjunto de instrues ou recursos de hardware do microcontrolador utilizado. impossvel saber exatamente como cada sentena executada de qualquer maneira, no importa.Embora voc sempre pode inserir no programa escrito em seqncia de montagem.Se voc j escreveu um programa para uma linguagem de montagem microcontrolador PIC, voc provavelmente sabe que a arquitetura RISC carece de algumas instrues.Por exemplo, no existe nenhuma instruo apropriada para a multiplicao de dois nmeros.Claro que, para cada problema h uma soluo e este no exceo, graas aritmtica que permite decompor operaes complexas em muitas operaes simples.Neste caso, a multiplicao pode ser substitudo facilmente por adio sucessiva (axb = A + A + A + ... + a).Estamos no incio de uma longa histria ... No se preocupe, quando usando uma dessas linguagens de programao, tais como alto nvel C, porque o compilador automaticamente encontrar a soluo para este problema e similares.B para multiplicar nmeros, basta digitar a * b.

Linguagem CA linguagem C tem todas as vantagens de uma linguagem de programao de alto nvel (descrito acima) e permite-lhe executar algumas operaes em ambos os bytes e bits (em operaes lgicas, shift etc).Caractersticas C pode ser muito til ao programar microcontroladores.Alm disso, padronizado C (padro ANSI), muito porttil, de modo que o mesmo cdigo pode ser usado muitas vezes em diferentes projectos.Tornando-o acessvel a qualquer pessoa que conhece esta lngua, independentemente da utilizao prevista para o microcontrolador.C uma linguagem compilada, o que significa que os arquivos de origem que contm o cdigo C traduzido em linguagem de mquina pelo compilador.Todas estas caractersticas fizeram o C uma das linguagens de programao mais populares.

A figura acima um exemplo geral do que acontece quando compilar programa de uma linguagem de programao de alto nvel baixo.CARACTERSTICAS PRINCIPAIS 2.2 MikroCAqui apresentamos os principais elementos da linguagem mikroC desenvolvido pela mikroElektronika.Esta linguagem muito semelhante ao padro C, no entanto, em certos aspectos, que difere do padro ANSI em algumas caractersticas.Algumas destas diferenas esto relacionadas com melhorias destinadas a facilitar a programao de microcontroladores PIC, enquanto outros so o resultado da limitao da arquitectura de hardware do PIC.Aqui ns apresentamos caractersticas especficas de linguagem mikroC microcontroladores PIC programao.O termo C usada para referir-se as caractersticas comuns das linguagens C e MikroC.

Este livro descreve uma aplicao muito especfica da linguagem de programao C utilizada no mikroC PRO para PIC.Neste caso, o compilador for utilizado para microcontroladores PIC programao.

FASES DE COMPILAOO processo de compilao envolve vrias etapas e executado automaticamente pelo compilador.Por uma compreenso bsica de como ele pode ser til para entender o conceito de linguagem mikroC.O arquivo de origem contm o cdigo que voc escreve em mikroC para programar o microcontrolador.O pr-processador pelo compilador utilizada automaticamente quando o processo de compilao.O compilador procura directivas de pr-processador (que sempre comeam com '#') no cdigo e modificar o cdigo-fonte em conformidade com as directivas.Nesta fase, eles so conduzidos incluso arquivo, macro definio e constantes, etc., o que facilita o processo.Mais tarde, vamos descrever estas polticas em detalhe.O analisador(parser) remove todo o cdigo informaes inteis (comentrios, espaos).Em seguida, ocompiladortraduz o cdigo em um arquivo binrio chamado arquivo .mcl.Oligante(linker) recupera todas as informaes necessrias para executar os arquivos externos e os agrupa em um nico arquivo (.DBG).Alm disso, um projeto pode conter mais de um arquivo de origem e o programador pode usar funes pr-definidas e agrupadas em arquivos chamados bibliotecas.Finalmente, ogerador hexproduz um arquivo hex.Este o ficheiro a ser carregado para o microcontrolador.

Todo o processo de compilao que inclui todos os passos acima chamado de"construo".

PROGRAMA DE ESTRUTURAA principal idia de escrever um programa em C para "quebrar" um problema maior em vrios pedaos menores.Suponha que voc precise escrever um programa para o microcontrolador para medir a temperatura e exibir os resultados em um LCD.O processo de medio realizado por um sensor de temperatura que converte a tenso.O microcontrolador utiliza o conversor A / D para converter a tenso (valor analgico) de um nmero (valor digital), que ento enviado para o LCD por vrios condutores.Consequentemente, o programa dividido em quatro partes, cada uma das quais corresponde a uma ao especfica:1. Habilitar e configurar o A / D construdos;2. Medir o valor analgico;3. Calcular temperatura;e4. Enviar os dados no formato apropriado para o LCD;

Linguagens de programao como de alto nvel C permitir-lhe para resolver este problema com facilidade para escrever quatro funes a serem executadas ciclicamente nonstop.A ideia geral a de dividir o problema em vrios pedaos, cada um dos quais pode ser escrito como uma nica funo.Todos os programas escritos em mikroC conter pelo menos uma chamada na funo main () entre chaves {} instrues a serem executadas.Esta a primeira funo a ser executada no incio da execuo do programa.As outras funes pode ser chamado na funo principal.Em outras palavras, podemos dizer que a funo main () obrigatria, enquanto outros so opcionais.Se voc no tiver escrito um programa em C, voc provavelmente vai encontrar tudo isso confuso.No se preocupe, aceit-lo como para agora e mais tarde entender a sintaxe.

E agora, o seu primeiro programa 'real'!A figura mostra a estrutura do programa, apontando as partes onde .

Como escrever cdigo em C muito importante.Por exemplo, C difere maisculas de minsculas, assim que a funo main () no pode escrever main () ou Main ().Alm disso, observe que duas linhas de cdigo dentro da funo termina com um ponto e vrgula.Em C todas as sentenas devem terminar com um ponto e vrgula ';', para que o compilador pode isolar e traduzi-los em cdigo de mquina.

REVISESOs comentrios so partes do programa usado para esclarecer as instrues do programa ou fornecer mais informaes.O compilador ignora os comentrios e no compilado para cdigo executvel.Simplificando, o compilador capaz de reconhecer caracteres especiais utilizados para designar onde os comentrios de incio e fim e no faz nada se o texto entre eles durante a compilao.Dois tipos de tais personagens.Alguns designar as longas observaes que abrangem vrias linhas marcadas pela sequncia de programa especial /*...*/, enquanto outros designar as breves comentrios que se encaixam em uma nica linha //.Embora os comentrios no podem afectar a execuo do programa, eles so to importantes quanto qualquer outra parte do programa.Aqui est o porqu ... Muitas vezes necessrio para melhorar, modificar, atualizar, simplificar um programa ... possvel interpretar at mesmo programas simples sem usar o comentrio.

2.3 TIPOS DE DADOS MikroCNa linguagem C, os dados tem um tipo, ou seja, cada um dos dados utilizados no programa deve ter um tipo especificado.Isso permite que o compilador possa saber o tamanho dos dados (nmero de bytes necessrios na memria) e sua representao.Existem vrios tipos de dados que podem ser utilizados na linguagem de programao mikroC dependendo do tamanho dos dados e a gama de valores.A tabela mostra a gama de valores que os dados podem ter, quando utilizada na sua forma bsica.TIPO DE DADOSDESCRIOTAMANHO (NMERO DE BITS)FAIXA DE VALORES

charTexto (caracteres)8de 0-255

intValores inteiros16-32.768-32.767

floatValores de ponto flutuante32de 1,17549435082 10-38a 6,80564774407 1038

doubleValores em dupla preciso de ponto flutuante32de 1,17549435082 10-38a 6,80564774407 1038

* Devido s limitaes impostas pelo hardware do microcontrolador, impossvel alcanar uma maior preciso dos dados como o tipo float.Portanto, o tipo double equivale a float no mikroC.Pela adio de um prefixo (qualificador) para qualquer tipo de dados inteiro ou natureza, a gama de valores possveis alterado e o nmero de bytes de memria necessria.Por padro, o tipo de dados int so assinados, enquanto o caractere no estejam assinados.O qualificador assinado (a assinatura) que indica que os dados podem ser positivo ou negativo.Unsigned prefixo indica que os dados podem ser apenas positivo.Note-se que o prefixo opcional.TIPO DE DADOSTIPO DE DADOS PREFIXOTAMANHO (NMERO DE BITS)FAIXA DE VALORES

charsigned char8de -128 a 128

intunsigned int160 a 65535

short int8de 0-255

signed short int8de -128 a 127

long int32de 0-4294967295

signed longo int32de-2.147.483.648 a 2.147.483.647

Integer (int)Um inteiro um nmero sem parte fracionada que pode ser expressa nos seguintes formatos: Hexadecimal (base 16) nmeros que comeam com 0x (ou 0X).Inteiros hexadecimais constitudos por algarismos (0-9) e / ou as letras (A, B, C, D, E, F).Por exemplo: '0x1A'. Decimal (base de 10): o nmero de dgitos o (0-9).O primeiro dgito no pode ser 0. Neste formato, voc pode digitar o sinal de nmero ('+' ou '-').Por exemplo: 569, -25, 1500. Octal (base 8): os nmeros correspondem base de 8 usando apenas 8 dgitos (0-7).Inteiros Octal comeando com 0. Por exemplo: '056'. Binrio: quando um inteiro comea com 0b (ou 0B) so representadas como uma srie de bits ('0' e '1').Por exemplo: 0B100111110x11 // equivalente hexadecimal para decimal 1711 // formato decimal-152 decimal formato //011 // equivalente octal do decimal 90b11 // binrio para decimal equivalente 3Tipo de ponto flutuante (float)O ponto float usado para nmeros reais com ponto decimal.Tipo de dados do float pode ser representado de diversas maneiras.Uma coisa sempre flutuador consign (assinado).0. // = 0.0-1,23 -1,23 // =23.45e6 // = 23,45 * 10 ^ 62e-5 // = 2.0 * 10 ^ -53E + 10 // = 3.0 * 10 ^ 10.09E34 // = 0,09 * 10 ^ 34Tipo personagem (char)O tipo char considerado como um todo pelo compilador.No entanto, normalmente usado para dados de caracteres.Um tipo de dados de caracteres colocada entre aspas e um caractere ASCII codificado.59 // todo'p' // ASCII carter 'p'Uma seqncia de caracteres chamado string (string).Strings so colocados entre aspas duplas, por exemplo:"Pressione o boto RA0"2.4 Variveis e constantesDefiniesUma varivel um objeto nomeado pode conter dados que podem ser modificados durante a execuo do programa.Em C, as variveis tm o tipo, o que significa que necessrio especificar o tipo de dados que atribudo a uma varivel (int, float etc.).As variveis so armazenados na memria RAM e o espao de memria que ocupa (em bytes) que depende do seu tipo./ * Duas linhas de programa consecutivo. Na primeira linha do programaa varivel definido * /

int a = 1000; // varivel int equivalente a 1000a = 15; // igual a 15 Uma constante tem as mesmas caractersticas que uma varivel, exceto que seu valor atribudo no pode ser alterado durante a execuo do programa.Ao contrrio de variveis, as constantes so armazenados na memria flash do microcontrolador para salvar o mximo de espao RAM.O compilador reconhece o nome eo prefixo const.Em mikroC, o compilador reconhece automaticamente o tipo de uma constante de dados, por isso no necessrio especificar melhor o tipo./ * Duas linhas de programa consecutivo * /

const A = 1000 // o valor da constante A definido comoA = 15; // Error! Voc no pode alterar o valor da constanteCada varivel ou constante deve ter um identificador que a distingue de outras variveis e constantes.Referem-se aos exemplos de cima, e A so identificadores.Regras de nomeaoEm mikroC, identificadores pode ser to longo como voc quer.No entanto, existem vrias restries: Os identificadores podem incluir qualquer um dos caracteres alfabticos AZ (AZ), os dgitos 0-9 eo caractere sublinhado '_'.O compilador sensvel diferena entre maisculas e minsculas.Os nomes de funes e variveis, muitas vezes so escritos em letras minsculas, enquanto nomes de constantes so capitalizados. Identificadores no pode comear com um dgito. Os identificadores podem no corresponder s palavras-chave em lngua mikroC, porque so palavras reservadas para o compilador.O compilador mikroC reconhece 33 palavras-chave:MIKROC - PALAVRAS-CHAVE

absolutdadosseretornotypedef

asmomissoem linharxtypeid

emexcluirintsfrtypename

carrofazeriocurtoUnio

bocadonicolongoassinadono assinado

boolmaismutveltamanho deuso

pausaenumnamespaceestticovirtual

casoexplcitooperadorstructvazio

capturaexternorginterruptorvoltil

carbonizarfalsopascalmodeloenquanto

classeflutuadorprivadoESTA

cdigoparaprotegidojogar

constamigopblicoverdadeiro

continuarv pararegistrartentar

Exemplos de identificadores vlidos e invlidos:temperatura_V1 // OKPresso // OKno_corresponder // OKdat2string // OKSUM3 // OK_vtexto // OK7temp // NO - voc no pode comear com um nmero% ms_alto // NO - no pode conter caracteres especiais se / / NO - no pode coincidir com uma palavra-chavej23.07.04 // NO - no podem conter caracteres especiais (ponto)nome da varivel // NO - no pode conter em brancoDeclarao da varivelCada varivel deve ser declarada antes de ser usado no programa.Uma vez que as variveis so armazenados na memria RAM, necessrio reservar espao para a passagem (um, dois ou mais bytes).Ao escrever um programa, voc sabe o tipo de dados que voc deseja usar e que tipo de dados esperados como resultado de uma operao, enquanto o compilador no sabe.No se esquea que o programa lida com as variveis com os nomes dados.O compilador reconhece-los como nmeros na memria RAM sem saber o seu tamanho e formato.Para melhorar a capacidade de leitura de cdigo, as variveis so declarados, muitas vezes, no incio das funes: varivel;Voc pode declarar mais de uma varivel de uma s vez, se eles tm o mesmo tipo. variable1, variable2, variavel3;Para alm do nome e tipo, as variveis so atribudos valores iniciais muitas vezes apenas ao lado de sua declarao.Este no um passo obrigatrio, mas "uma questo de moralidade".Ele parece com o seguinte:unsigned int peso; // declara uma varivel chamada pesopeso = 20; // Atribua o valor 20 para a varivel pesoUm mtodo mais rpido chamado de instruo de inicializao (atribuio de valores iniciais):unsigned int peso = 20; // peso declarado e seu valor de 20Se vrias variveis com o mesmo valor inicial atribudo, o processo pode ser simplificado:unsigned int weight.1 = weight2 = weigh3 = 20;int valor_inicial = un_mnimo_de_petrleo = 0; Tenha cuidado para no declarar a mesma varivel novamente dentro da mesma funo. Voc pode editar o contedo de uma varivel, atribuindo um novo valor como muitas vezes quiser Quando voc declarar uma varivel, sempre pensar sobre os valores que a varivel deve conter durante a execuo do programa.No exemplo acima, no weight1 ser representado por um nmero decimal com ponto ou um nmero com um valor negativo.Declarando ConstantesSemelhante s variveis, as constantes devem ser declaradas antes de serem utilizados no programa.Em mikroC, no obrigatrio para especificar a constante de declarar tipo.Alm disso, a constante deve ser inicializado no momento em que forem declarados.O compilador reconhece constantes por seu prefixo const usado na instruo.Duas instrues a seguir so equivalentes:const int MNIMO = -100; // Declare constante MNIMO const MNIMO = -100; // Declare MNIMO constanteConstantes podem ser de qualquer tipo, incluindo cadeias:const T_MAX = 3.260E1; // ponto flutuante constante T_MAX const I_CLASS = 'A'; // carter constante I_CLASS const Message = "Pressione o boto esquerdo"; // seqncia de mensagem constanteConstantes de enumerao so um tipo especial de constantes inteiras que torna mais compreensvel quando a atribuio de nmeros ordinais ao programa constante.Por defeito, o valor de 0 para a primeira constante nas cintas atribudo automaticamente o valor 1 para o segundo, o valor de 2 para o terceiro, etc.enum {fornecedores gua, leo, CLORO}; // GUA = 0; OIL = 1; CLORO = 2Voc pode inserir diretamente o valor de uma constante na lista de enumeraes.O aumento parado por atribuir um valor a um elemento de matriz, em seguida, ele reinicia a partir do valor atribudo.Veja o seguinte exemplo:enum {fornecedores gua, leo = 0, cloro}; // GUA = 0; Diesel = 0; CLORO = 1Constantes de enumerao so usados como segue:int Velocidad_de_ascensorenum {motor_de_ascensor parar, iniciar NORMAL, MXIMA};Velocidad_de_ascensor = NORMAL; // Velocidad_de_ascensor = 2Definir novos tipos de dadosA palavra-chavetypedefpermite criar facilmente novos tipos de dados.typedef unsigned int positivo; // positivo um sinnimo para o tipo int sem sinalpositivo a, b; // Variveis tipo positivo b soa = 10; // Varivel igual a 10b = 5; // varivel B equals 5Escopo de variveis e constantesUma varivel ou constante reconhecida pelo compilador com base no seu identificador.Um identificador sem sentido se o compilador pode reconhecer.O escopo de uma varivel ou constante a gama de programa em que o identificador no tem sentido.O mbito determinado pelo lugar em que uma varivel ou constante declarada.Tentando acessar uma varivel ou constante fora seus resultados de escopo em um erro.Uma varivel ou constante invisvel fora do seu mbito.Todas as variveis e constantes que usamos em um programa deve ser declarado no incio do cdigo.As variveis e constantes pode ser global ou local.Uma varivel global declarado no cdigo-fonte, fora todas as funes, enquanto uma varivel local declarada dentro do corpo da funo ou dentro de um aninhada em um bloco de funo.

A variveis globais que voc pode acess-los a partir de qualquer parte do cdigo, mesmo funes no interior desde que seja declarado.O mbito de uma varivel global limitada pelo final do ficheiro de origem que tem sido declarada.O escopo de variveis locais limitado pelo bloco entre chaves {} em que so declarados.Por exemplo, se eles so declarados no incio do corpo da funo (como na funoprincipal) o seu mbito , do ponto de declarao e final dessa funo.Referem-se ao exemplo anterior.A variveis locais declaradas nomain ()no pode acess-los a partir doFuncin_1e vice-versa.Um bloco composto um grupo de declaraes e afirmaes (que podem ser tambm blocos) entre chaves.Um bloco pode ser uma funo, uma estrutura de controlo, etc.Uma varivel declarada dentro de um bloco so considerados local, isto , "existe" apenas dentro do bloco.No entanto, as variveis declaradas fora do mbito ainda so visveis.Embora a constante no pode ser alterado no programa, siga as mesmas regras como variveis.Isso significa que eles so visveis dentro do bloco com exceo de constantes globais (declarada fora de qualquer funo).As constantes so declarados normalmente no Cdigo fora de qualquer funo (como variveis globais).Classe de armazenamentoClasses de armazenamento so usados para definir o escopo e durao variveis, constantes e funes dentro de um programa.MikroC pode ser usado em diferentes tipos de armazenamento: auto uma classe de armazenamento padro para as variveis locais, por isso raramente utilizado.Ele utilizado para definir uma varivel local tem a hora local.A classe de armazenamento automtico no pode ser usado com variveis globais.

esttica uma classe de armazenamento padro para variveis globais.Ele especifica que a varivel visvel dentro do arquivo.Uma varivel local declarada com o prefixoestticopode acess-los no arquivo de origem (ou seja, comportam-se como variveis globais). extern: A palavra-chaveexterno utilizado quando o programa composto por diferentes ficheiros de origem.Isso permite que voc use uma varivel, uma constante ou uma funo declarada em outro arquivo.Claro que, para compilar e vincular esse arquivo corretamente, ele deve ser includo em seu projeto.Nos exemplos seguintes, o programa consiste em dois ficheiros:File_1 e File_2.OFile_1usa uma varivel e uma funo declarada emFile_2.Arquivo 1:extern int cnt; // cnt varivel visvel no File_1 extern void Ol (); // Funo Ol () pode ser usado em File_1

void main () { PORTA = cnt ++; // Qualquer alterao na File_1 cnt ser visvel em File_2 Ola (); // Funo Ol () pode ser chamado a partir daqui}Arquivo 2:int cnt = 0;void Ola ();

void Ola () { // Alteraes que afetam. // cnt em File_1 so visveis aqui..}2,5 OPERADORESUm operador um smbolo que denota uma aritmtica, lgica ou que determinada operao.Simplificando, vrias operaes aritmticas e lgicas so realizadas por operadores.H mais de 40 operaes disponveis na linguagem C, mas, no mximo, 10-15 deles na prtica usada.Cada operao realizada em um ou mais operandos que pode ser varivel ou constante.Alm disso, cada operao caracterizada pela prioridade de execuo e associamento.Operadores aritmticosOperadores aritmticos so usados em operaes aritmticas e sempre retornam resultados numricos.Existem dois tipos de operadores, unrio e binrio.Ao contrrio de operaes unrias que so executadas em um operando, operaes binrias so realizadas em dois operandos.Por outras palavras, dois nmeros so necessrios para executar uma operao de binrio.Por exemplo: a + b ou a / b.OPERADOROPERAO

+Adio

-Subtrao

*Multiplicao

/Diviso

%Resto da diviso

int a, b, c; // declara trs inteiros a, b, ca = 5; // Inicializar parab = 4; // Inicializar bc = a + b; // C = 9% 2 C = C; // c = 1. Esta operao muitas vezes usado para buscar // paridade. Neste caso, o resultado 1 // o que significa que a varivel // um nmero imparOperadores de atribuioExistem dois tipos de alocao na linguagem C: Operadores simples atribuir valores s variveis utilizando o carter comum '='.Por exemplo: a = 8 Atribuies compostos so especficas para a linguagem C consistem em dois caracteres, como mostrado na tabela direita.Eles so usados para simplificar a sintaxe e permitir uma execuo mais rpida.OPERADOREXEMPLO

ExpressoEquivalente

+ =a + 8 =a = a + 8

- =um - 8 =a = a - 8

* =a * = 8a = a * 8

/ =um / 8 =A = A / 8

% =a = 8%a = a 8%

int a = 5; // declarar e inicializar a varivel paraa + = 10; // a = a + 10 = 15Operadores de incremento e decrementoAs operaes de incremento e decremento 1 so indicados por "++" e "-".Esses personagens podem preceder ou seguir uma varivel.No primeiro caso (x ++), a varivel x ser incrementado em uma unidade, antes de ser utilizada na expresso.Caso contrrio, a varivel vai ser utilizada na expresso antes de ser aumentado em 1. O mesmo se aplica para a operao decremento.OPERADOREXEMPLODESCRIO

++Para ++Varivel "a" aumentado em 1

a ++

---bVarivel "a" diminudo por um

B--

int a, b, c;a = b = 5;c = 1 + a ++; // c = 6b = c + a ++ // b = 7 + 6 = 13Operadores relacionaisOs operadores relacionais so usados em comparaes, a fim de comparar dois valores.Em mikroC, se uma expresso for avaliada como falsa (false), o operador retorna 0, enquanto que se a orao for avaliada como verdadeira (true) retorna 1. Isto usado em expresses como "se a expresso avaliada como verdadeira ento ... 'OPERADORDESCRIOEXEMPLOCONDIO DA VERDADE

>maior do queb>seb maior do queum

> =maior ou iguala> = 5Seumafor maior do que ou igual a5

> 2; // Envie os 2 bits mais significativos RC7, RC6 } enquanto (1); // Permanecer no circuito}Registo ADCON1

ADFM - A / D resultado Formato Select bit(formato pouco resultado de seleo do A / D) 1 - resultado da converso justificado direita.Os seis bits mais significativos do registo ADRESH no so utilizados. 0 - resultado da converso justificado esquerda.Os seis bits menos significativos do registo ADRESL no so utilizados.VCFG1 - Tenso de bit de referncia(ajuste de tenso de referncia bits) selecciona a fonte de tenso de referncia mais baixo do que necessrio para a operao do conversor A / D. 1 - baixa tenso de referncia aplicada ao pino Vref- 0 - tenso de alimentao de energia Vss usado como uma fonte de baixa tenso de referncia.VCFG0 - Tenso pouco Referncia(ajuste de tenso de referncia bit) seleciona pode ser necessria a fonte de alta tenso corridas de referncia para a A / D. 1 - alta tenso de referncia aplicada ao pino Vref +. 0 - tenso de alimentao de energia Vdd usado como uma fonte de alta voltagem de referncia.Para medir a tenso em um pino de entrada pelo A / D, voc deve fazer o seguinte:Passo 1- configurao da porta: Escrever um lgico um (1) a um bit do registo de TRIS, resultando na configurao do pino apropriado para uma entrada. Escrevendo uma lgica 1 (um) a um bit do registo ANSEL, resultando na configurao do pino apropriado para uma entrada analgica.Passo 2- Configurao do conversor A / D: Tenso de referncia definido no registo ADCON1. Selecione um sinal de relgio do A / D no registo ADCON0. Escolha um dos canais de entrada do Registro CH0-CH13 ADCON0. Selecione o formato de dados atravs da ADFM ADCON1 registro. Ativar o A / D para colocar um pouco ADON do registo ADCON0.Passo 3- Definir a interrupo (opcional): Redefinir o bit ADIF. Coloque um a ADIE, PEIE e bits GIE.Passo 4- decorrido o tempo de aquisio Timeout (aproximadamente 20US).Passo 5- Comece colocando uma converso a GO / DONE pouco da admi- ADCON0 Reg.Passo 6- Aguarde at que a converso A / D est completa. Voc precisa verificar o ciclo do programa se o GO / DONE bit zero ou esperar uma interrupo (deve ser previamente habilitado).Passo 7- Ler os resultados de A / D: ADRESH e ADRESL ler os registros.Comparador AnalgicoAlm do A / D, um outro mdulo, que at recentemente tem sido incorpodo apenas em circuitos integrados pertencentes ao chamado "componente analgico".Devido ao facto de que no h quase nenhum dispositivo automtico complexo que em algumas formas destes circuitos no usar dois comparadores de alta qualidade, juntamente com os componentes adicionais so integrados no microcontrolador e ligado aos seus pinos.Como uma obra de comparao?Basicamente, o comparador analgico um amplificador que compara a magnitude das tenses nas duas entradas.Ele tem duas entradas e uma sada.Dependendo da tenso de entrada for mais elevada (valor analgico), um lgico zero (0) ou um lgico um (1) (valores digitais) ser emitido.

Quando a tenso analgica Vin - maior do que a tenso analgica + Vin, a sada do comparador um baixo nvel digital. Quando a tenso analgica + Vin maior do que a tenso Vin analgico, a sada do comparador um elevado nvel digital.O microcontrolador PIC16F887 tem dois desses comparadores de tenso cujas entradas esto ligadas aos pinos I / S RA0-RA3, enquanto as sadas esto ligados ao pino RA4 e RA5.H tambm uma fonte de tenso de referncia interna no prprio chip, que discutiremos mais tarde.Estes dois circuitos so controlados pelos bits armazenados nos seguintes registos: CM1CON0 est no controle do comparador C1; CM2CON0 est no controle do comparador C2; CM2CON1 est no controle do comparador C2;Tenso interna REFERNCIA SOURCEUma das duas voltagens analgicas existentes nas entradas de comparao geralmente estvel e imutvel.Ele chamado de 'tenso de referncia' (Vref).Para gerar isso, voc pode usar tanto uma tenso externa como uma fonte de tenso interna especial.A voltagem de referncia Vref derivado depois de seleccionar uma fonte, atravs de uma rede de resistncias que consiste escada 16, formando um divisor de tenso.A fonte de tenso selecionvel VRCON VRSS registo pouco.Alm disso, a fraco da tenso fornecida pela rede de resistncias seleccionvel pelo VR0-VR3 e usado como bits de tenso de referncia.Veja a figura a seguir:

A voltagem de referncia do comparador tem dois intervalos com 16 diferentes nveis de tenso cada.A seleco da gama controlada pela VRR registo pouco VRCON.A tenso de referncia selecionado CVref pode ser a sada para o pino RA2 / AN2 VROE se o bit definido para um.Embora a ideia principal era obter a tenso de referncia varivel para a operao dos mdulos analgicos, assim, um conversor simples A / D obtida.Este conversor muito til em algumas situaes.A operao controlada registo VRCON.Comparadores e INTERRUPOSempre que houver uma mudana de estado lgico na sada de um comparador, o bit sinalizador CMIF PIR registo definido como um.Esta mudana tambm ir provocar uma interrupo, se os bits seguintes so definidos para um: O registro CMIE PIE bit = 1; O bit PEIE do registo INTCON = 1;e O bit GIE do registo INTCON = 1.Se uma interrupo activada, uma mudana na sada de um comparador quando o microcontrolador est no modo de suspenso, pode fazer com que o microcontrolador para sair inactivo e, em seguida, executar no modo normal.MODO DE FUNCIONAMENTO SLEEP (modo de suspenso)Se ativado antes de entrar modo de suspenso, o comparador permanece ativa durante o modo de sono.Se o comparador no utilizado para "acordar" o dispositivo, o consumo de energia pode ser reduzido no modo de repouso, desligando o comparador.Isso feito para redefinir o bit de registro CxON CMxCON0.Para o comparador de "acordar" o microcontrolador do modo de suspenso, mordeu Secretaria CxIE IE2 eo bit PEIE do registo INTCON deve ser um.A instruo aps a instruo do sono sempre corre para fora do modo de espera.Se o bit GIE do registo INTCON definido para um, o dispositivo ir executar a rotina de interrupo do servio.Registro CM1CON0

Os bits desta registo est no controle do comparador C1.Ele afecta principalmente a configurao das entradas.Para explicar de forma mais clara, veja a figura a seguir, em que os componentes directamente afectados pelos bits deste registo so mostradas apenas.

C1ON - Comparador C1 Ativar bit(bit permitindo o comparador C1) permite que o C1 comparador. 1 - Comparador C1 est habilitado. 0 - Comparador C1 est desativado.C1OUT - C1 comparador de bits de sada(sada do comparador bit C1) a sada do comparador C1.Se C1POL = 1 (sada do comparador invertido) 1 - C1Vin + tenso de entrada menor do que a tenso de entrada C1Vin-. 0 - + C1Vin tenso de entrada for mais elevada do que a tenso de entrada C1Vin-.Se C1POL = 0 (sada do comparador invertido) 1 - C1Vin + tenso de entrada for mais elevada do que a tenso de entrada C1Vin-. 0 - + C1Vin tenso de entrada menor do que a tenso de entrada C1Vin-.C1OE Comparador C1 habilitao de sada bit(bit de habilitao de sada do comparador C1) 1 - Comparador de sada est conectada ao pino C1OUT C1OUT *. 0 - sada do comparador usado internamente.* Para ativar o bit C1OUT aparece no pino, duas condies devem ser atendidas: C1ON = 1 (comparador deve estar ligado) e os correspondentes TRIS bit = 0 (pino deve ser configurado como uma sada).C1POL - Comparador de sada C1 Polaridade Select bit(seleo de bits de sada de polaridade do comparador C1) o investimento do Estado permite a sada do comparador C1. 1 - C1 sada do comparador invertido. 0 - Comparador de sada C1 no invertido.C1R - Comparador C1 Referncia Select bit(bit fonte de tenso de referncia seleo do C1 comparador) 1 - C1Vin entrada no inversora + est ligada fonte de tenso de referncia C1Vref. 0 - + C1Vin no-inversora est conectada ao pino C1IN +.C1CH1, C1CH0 - Comparador C1 Channel Select bit(seleo de canais pouco do C1 comparador)C1CH1C1CH0C1VIN- ENTRADA DO COMPARADOR

00C1Vin- entrada est conectada ao pino C12IN0-

01C1Vin- entrada est conectada ao pino C12IN1-

10C1Vin- entrada est conectada ao pino C12IN2-

11C1Vin