Escolar Documentos
Profissional Documentos
Cultura Documentos
com exemplos
Captulo 1: O mundo dos microcontroladores
A 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 PIC
1.1 INTRODUO
Eletronicamente 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.
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).
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.
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 CODE
O cdigo BCD ( B inary- C Oded D ecimal - 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.
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:
2 4 - 1 = 16-1 = 15
Portanto, ao utilizar quatro dgitos binrios podem representar os nmeros decimais de 0 a 15, valores diferentes so 16 no total.
NMEROS DE MARCAO
O 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 negativos
Como 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.
BIT
A 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, ..."?
BYTE
Um 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?
Circuitos Lgicos
Algumas 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.
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.
RECORDS
Um registo ou uma clula de memria um circuito eletrnico que pode salvar o estado de um byte.
SFR REGISTRADORES
Ao 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 UNIT
A 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 Memory
A 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.
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 Flash
Este 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 tecnologia flash de hoje. Se voc estiver comprando um microcontrolador, esta definitivamente a escolha perfeita!
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.
INTERRUPO
A 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.
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
Acumulador ou 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.
BUS
O 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 MASSA
A 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:
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.
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 ALIMENTAO
Devemos 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 / Contadores
O 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.
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.
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.
CONTADORES
Se 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.
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 interna
Todos os microcontroladores atuais usam um dos dois modelos bsicos de arquitetura chamado Harvard e von-Neumann .
Eles so duas formas diferentes de troca de dados entre a CPU ea memria.
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
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 de von-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 reduzido
Neste 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 complexas
CISC 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 ...
Famlia
ROM
[Kb]
RAM
[byte
s]
Pine
s
Freqnc
ia
de
clock.
[MHz]
Entrad
as
A/D
Resolu
o
do
convers
or A / D
Comparad
ores
16/08
bit
temporizad
ores
Comunica
o Serial
Sad
as
PWM
Outro
s
0.37
5-,75
16-24
6-8
4-8
0-2
0-1
1x8
PIC12Fxxx
0,751,5
25
38
4-8
0-3
0-1
1x8
EEPRO
M
PIC16Fxxx
0,753
25134
1444
20
0-3
0-2
1x8
EEPRO
M
PIC16HVX
XX
1,5
25
1820
20
1x8
VDD =
15V
1,753,5
64128
20
0-4
10
1-2 x 16 8 1
x
0-1
EEPRO
M
PIC12HVX
XX
1.75
64
20
0-4
10
1-2 x 16 8 1
x
0-1
PIC16Fxxx
1,7514
64368
1464
20
0-13
8 ou 10
0-2
1-2 x 16 8 1
x
I2C
SPI
USART
0-3
PIC16HVX
XX
1,753,5
64128
1420
20
0-12
10
2 x 8 x 1 16
I2C
SPI
USART
0-3
0-2 x 2-03
agosto x 16
USB2.0
CAN2.0
I2C
SPI
USART
0-5
USB2.0
Ethernet
I2C
SPI
USART
2-5
I2C
SPI
USART
PIC18FXXX
4128
256 3936
1880
PIC18FXXJ
XX
8128
1024 3936
28100
40 - 48
10-16
10
0-2 x 2-03
agosto x 16
PIC18FXXK
XX
8-64
768 3936
28 44
64
10-13
10
1 x 8 3 x 16
32-48
4-16
10 ou 12
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 JOGO
O 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.
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:
INSTRUO
DESCRIO
OPERAO
B ANDEIRA
CLK
k -> w
MOVWF f
Mover o contedo de W af
W -> f
MOVF f, d
f -> d
CLRW
Exclua o contedo da W
0 -> W
CLRF f
Exclua o contedo da f
0 -> f
Swapf f, d
Mordidelas de swap em f
1, 2
1, 2
W + K -> W
C, CC, Z
ADDWF f, d
Adicionar o contedo de W f
W + f -> d
C, CC, Z
K SUBLW
kW -> W
C, CC, Z
SUBWF f, d
Subtrair W de f
fW -> d
C, CC, Z
K ANDLW
E W com literal
W e K -> W
ANDWF f, d
E W com f
W e F -> d
K IORLW
W ou k -> W
IORWF f, d
Inclusive OR W com f
W ou f -> d
1, 2
XORWF f, d
XOR k W -> W
1, 2
K XORLW
OU exclusivo W com f
W XOR f -> d
INCF f, d
Adicionar uma af
f + 1 -> f
1, 2
DECF f, d
Subtrair 1 af
f-1 -> f
1, 2
RLF f, d
1, 2
RRF f, d
1, 2
COMF f, d
Complemento f
1, 2
f -> d
1, 2
1, 2
1, 2
0 -> f (b)
1, 2
BSF f, b
1 -> f (b)
1, 2
Ir se f (b) = 0
1 (2)
BTFSS f, b
Ir se f (b) = 1
1 (2)
DECFSZ f, d
1 (2)
1, 2, 3
INCFSZ f, d
f + 1 -> D saltar se Z = 0
1 (2)
1, 2, 3
GOTO k
Ir para um endereo
k -> PC
CHAMADA k
Chamar um sub-rotina
RETORNO
TOS -> PC
K RETLW
RETFIE
A interupcin retorno
Outras instrues
NOP
Nenhuma operao
CLRWDT
TO, PD
SLEEP
Coloque em repouso
TO, PD
* 1 Se um registro de E / S for alterada, o valor utilizado ser o valor apresentado nos pinos do microcontrolador.
*
Se
instruo
executada
em
TMR
registrar
se
1,
prescaler
sero
apagados.
Arquitetura dos microcontroladores PIC de 8 bits. Quais destes pertencem aos mdulos do microcontrolador vai depender do tipo de
microcontrolador.
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.
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 programa
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 C
A 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.
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 COMPILAO
O 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, o compilador traduz o cdigo em um arquivo binrio chamado
arquivo .mcl. O ligante (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, o gerador hex produz 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 ESTRUTURA
A 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; e
4. 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.
REVISES
Os 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.
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
DADOS
DE
TAM AN H O
DE BITS)
DESCRI O
(NMERO
F AI X A D E V AL O R E S
char
Texto (caracteres)
de 0-255
int
Valores inteiros
16
-32.768-32.767
float
32
de 1,17549435082
6,80564774407 10 38
10
-38
double
Valores em dupla
ponto flutuante
32
de 1,17549435082
6,80564774407 10 38
10
-38
preciso
de
* 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 D ADOS
char
int
TIPO
DE
PREFIXO
D ADOS
T AM A N H O
BITS)
(NMERO
DE
F AI X A D E VAL O R E S
signed char
de -128 a 128
unsigned int
16
0 a 65535
short int
de 0-255
de -128 a 127
long int
32
de 0-4294967295
32
de-2.147.483.648
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 (09) 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:
0B10011111
0.
// = 0.0
-1,23
-1,23 // =
23.45e6 // = 23,45 * 10 ^ 6
2e-5
// = 2.0 * 10 ^ -5
3E + 10
// = 3.0 * 10 ^ 10
.09E34
// = 0,09 * 10 ^ 34
59
// todo
'p' // ASCII carter 'p'
Uma seqncia de caracteres chamado string (string). Strings so colocados entre aspas duplas, por exemplo:
Regras de nomeao
Em 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.
dados
se
retorno
typedef
asm
omisso
em linha
rx
typeid
em
excluir
int
sfr
typename
carro
fazer
io
curto
Unio
bocado
nico
longo
assinado
no assinado
bool
mais
mutvel
tamanho de
uso
pausa
enum
namespace
esttico
virtual
caso
explcito
operador
struct
vazio
captura
extern
org
interruptor
voltil
carbonizar
falso
pascal
modelo
enquanto
classe
flutuador
privado
ESTA
cdigo
para
protegido
jogar
const
amigo
pblico
verdadeiro
continuar
v para
registrar
tentar
temperatura_V1
// OK
Presso
// OK
no_corresponder
// OK
dat2string
// OK
SUM3
// OK
_vtexto
// OK
7temp
// NO - voc no pode comear com um nmero
% ms_alto
// NO - no pode conter caracteres especiais
se / / NO - no pode coincidir com uma palavra-chave
j23.07.04
// NO - no podem conter caracteres especiais (ponto)
nome da varivel // NO - no pode conter em branco
Declarao da varivel
Cada 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:
<Type> varivel;
Voc pode declarar mais de uma varivel de uma s vez, se eles tm o mesmo tipo.
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 Constantes
Semelhante 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:
Constantes 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.
int Velocidad_de_ascensor
enum {motor_de_ascensor parar, iniciar NORMAL, MXIMA};
Velocidad_de_ascensor = NORMAL; // Velocidad_de_ascensor = 2
typedef unsigned int positivo; // positivo um sinnimo para o tipo int sem sinal
positivo a, b;
// Variveis tipo positivo b so
a = 10;
// Varivel igual a 10
b = 5;
// varivel B equals 5
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 funo principal ) o seu mbito , do ponto de declarao e final dessa funo. Referem-se ao exemplo anterior. A
variveis locais declaradas no main () no pode acess-los a partir do Funcin_1 e 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 armazenamento
Classes 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 prefixo esttico pode acess-los no arquivo de origem (ou seja,
comportam-se como variveis globais).
extern : A palavra-chave externo 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 . O File_1 usa uma varivel e uma funo declarada em File_2 .
Arquivo 1:
Arquivo 2:
int cnt = 0;
void Ola ();
void Ola () { // Alteraes que afetam
.
// cnt em File_1 so visveis aqui
.
.
}
2,5 OPERADORES
Um 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 aritmticos
Operadores 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.
OPERADOR
OPERAO
Adio
Subtrao
Multiplicao
Diviso
Resto da diviso
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.
EXEMPLO
OPERADOR
Expresso
Equivalente
+=
a+8=
a=a+8
-=
um - 8 =
a=a-8
*=
a*=8
a=a*8
/=
um / 8 =
A=A/8
%=
a = 8%
a = a 8%
EXEMPLO
Para ++
++
a ++
--b
int
a =
c =
b =
DESCRI O
B--
a, b, c;
b = 5;
1 + a ++; // c = 6
c + a ++
// b = 7 + 6 = 13
Operadores relacionais
Os 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 ... '
OPERADOR
DESCRIO
EXEMPLO
CONDIO DA VERDADE
>
maior do que
b>
se b maior do que um
>=
maior ou igual
a> = 5
<
menos que
<B
<=
inferior ou igual
a <= b
==
como
a == 6
Se um igual a 6
!=
desigual do que
um! = b
se uma desigual a b
int prop;
int var = 5;
prop = var <10; // expresso for avaliada como verdadeira, prop = 1
Operadores lgicos
H trs tipos de operaes lgicas em C: Y (E) lgico ou (OR) lgicas e negao - NO (NOT) lgico. Os operadores lgicos retornar true
(lgica 1) se a expresso avaliada diferente de zero. Caso contrrio, retornar false (lgica 0) se a expresso avaliada zero. Isto muito
importante porque as operaes lgicas so geralmente realizada em expresses, e no sobre as variveis (nmeros) indivduos no
programa. Portanto, as operaes lgicas referem-se a veracidade de toda a expresso.
Por exemplo: 1 && 0 igual a (expresso verdadeiro) && (expresso false)
O resultado 0, ou seja - False em ambos os casos.
OPERADOR
FUNO
&&
||
NO
DESCRIO
EXEMPLO
R E S U LTAD O
Um complemento
a=b~
b=5
a = -5
<<
Desvio esquerda
a = b << 2
b = 11110011
a = 11001100
>>
a = b 2 >>
b = 11110011
a = 00011110
&
c=a&b
um
11100011
b = 11001100
c=a|b
um
11100011
b = 11001100
c=a^b
um
11100011
b = 11001100
c = 11000000
c = 11101111
c = 00101111
Note-se que o resultado da operao de deslocamento para a direita, dependendo do sinal da varivel. Se o operando aplicado a uma
varivel no assinado ou positivo, zeros so inseridos no espao vazio criado pelo deslocamento. Se aplicada a um nmero inteiro com sinal
negativo, que ir introduzir a 1 para manter o sinal correto da varivel.
Alm dos operadores de atribuio, dois operadores no deve ser escrito ao lado do outro.
x *% 12; // essa expresso ir gerar um erro
PRIORIDADE
Alto
OPERADORES
A S S O C I ATI V I D A D E
() [] ->.
* /%
+ -
<>
<< = >> =
==! =
&
&&
Solta
int
a =
b =
res
res
||
?:
= + = - = * = / = / = & = ^ = | = = <=>
a, b, res;
10;
100;
= a * (a + b); // 1100 Resultado =
= a * a + b;
// resultado = 200
AutoConversion tambm realizada em operaes de cesso. O resultado da expresso do lado direito do operador de atribuio se torna
sempre o tipo da varivel no lado esquerdo do operador. Se o resultado uma espcie de prioridade mais elevada, ela descartada ou
arredondado para coincidir com o tipo de varivel. Ao converter dados reais em um nmero inteiro, sempre os nmeros depois do ponto
decimal so descartados.
int x;
// A varivel x atribudo o tipo inteiro (um nmero inteiro)
x = 3;
// A varivel x recebe o valor 3
x + = 3,14; // O valor 3,14 adicionado varivel x para
executar a operao // atribuio
/ * O resultado da adio de 6 em vez de 6,14, como esperado.
Para obter o resultado desejado sem excluir os nmeros que se seguem
ponto decimal, voc deve declarar x como um ponto flutuante. * /
Para fazer uma converso explcita antes de escrever uma expresso ou uma varivel que voc deve especificar o tipo de faixas de renda
operacional.
se (expresso) operao;
Se o resultado da expresso entre parnteses for verdadeira (diferente de 0), a operao executada eo programa continua a execuo.Se
o resultado da expresso falsa (0), a operao no realizada imediatamente e continua a execuo do programa.
Como mencionamos, a outra forma combina tanto o operador e se outra pessoa:
se (expresso)
operation1
mais
operation2
Se operation1 ou operation2 feita, escrever uma lista de instrues entre chaves. Por exemplo:
se (expresso) {
... //
... operation1 //
...} //
mais
operation2
O operador if-else pode ser substitudo para o operador condicional "?":
sero executados at que a palavra-chave pausa etc. Se o seletor de no corresponder a nenhuma constantes, operaes aps o operador
padro, eles sero executados.
Tambm possvel comparar uma expresso com um grupo constante. Se ele corresponde a qualquer deles, as operaes apropriadas
sejam executadas:
LOOP
Muitas vezes necessrio repetir alguma operao algumas vezes no programa. Um conjunto de comandos que se repetem chamado de
um loop de programa. Execute muitas vezes, que o tempo que o programa vai ficar no loop depende das condies de sair do loop.
While Loop
O loop enquanto ele se parece com o seguinte:
while (expresso) {
comandos
...
}
Os comandos so executados repetidamente (o programa continua no loop) at que a expresso torna-se falsa. Se a expresso for falsa, na
entrada do lao, em seguida, o circuito no vai ser executado e o programa ir continuar a partir do final do ciclo, enquanto.
Um tipo especial de loop de programa um loop infinito. Ele formado se a condio permanece inalterada dentro do loop. A execuo
simples neste caso, porque o resultado sempre verdadeiras chaves (1 = true), o que significa que o programa continua no mesmo loop:
while (1) { // Em vez de "while (1)", voc pode escrever "while (true)"
...
// Expresses entre chaves ser executada
...
// repetidamente (loop infinito)
}
Para loop
O circuito for semelhante que se segue:
Do-while
Loop do-while semelhante ao seguinte:
Do
operao
while (cambiar_condicin);
Expresso Cambiar_condicin executado no final do ciclo, o que significa que a operao executada pelo menos uma vez,
independentemente se a condio verdadeira ou falsa. Se o resultado no 0 (verdadeiro), o procedimento repetido.
Os exemplos seguintes so equivalentes. Esta parte do cdigo exibe "Ol" em um LCD 10 vezes com um atraso de um segundo. Observe
que, neste exemplo predefinidos funes, que so encontrados em livrarias compilador usado mikroC PRO para PIC . No entanto
aconselhamos a no tentar entend-los em detalhe. Seu comportamento geral dentro do loop explicado atravs de comentrios.
i = 0; // Inicializar o contador
while (i <10) {
// Condio
Lcd_Out (1,3, "Ol"); // Display "Ol" no LCD
delay_ms (1000);
// Delay 1000 ms
Lcd_Cmd (_LCD_CLEAR);
// Limpar LCD
delay_ms (500);
// Delay 500ms
i ++;
// contador incrementado
}
for (i = 0; i <10; i ++) {
// inicializao, condio, aumentar
Lcd_Out (1,3, "Ol");
// Display "Ol" no LCD
delay_ms (1000);
// Delay 1000 ms
Lcd_Cmd (_LCD_CLEAR);
// Limpar o visor LCD
delay_ms (500);
// Atraso 500ms
}
i = 0;
// Inicializar o contador
for {
Lcd_Out (1,3, "Ol");
// exibe "Ol" no LCD
delay_ms (1000);
// Delay 1000 ms
Lcd_Cmd (_LCD_CLEAR);
// Clear LCD
delay_ms (500);
// 500ms de atraso
i ++;
// contador incrementado
}
while (i <10);
// Condio
Declaraes de salto
ACRDO RUPTURA
s vezes voc precisa parar e sair de um loop dentro do seu corpo. A instruo break pode ser usado dentro de qualquer loop (enquanto,
para, fazer enquanto) eo interruptor tambm declaraes. Nestes declarao do intervalo usado para sair das demonstraes interruptor
caso, se a condio for verdadeira. Neste exemplo, "Waiting" pisca na tela LCD at que o programa detecta uma lgica no pino PORTA 0.
...
se (CO2_sensor) Goto ar condicionado; //
...
// faz saltar para a linha de programa
// Ar Condicionado
...
Ar condicionado:
//
// se a concentrao de CO2 muito alto
...
Mtodo 1 //
int exibio [3]; // display de matriz Declarao capaz de conter trs inteiros
Mtodo 2 //
const dgito = 5;
carvo Matriz_nueva [dgitos]; // matriz Declarao Matriz_nueva
// capaz de conter cinco inteiros
Uma matriz pode ser inicializado ao declarar, ou mais tarde no programa. Em ambos os casos, este passo realizado atravs da utilizao
chaves:
O programa a seguir altera a ordem dos elementos em uma matriz. Note-se que o ndice pode ser expresso por variveis e operaes
bsicas.
vazio main () {
const MUESTRAS_DE_AGUA = 4; // valor da constante MUESTRAS_DE_AGUA 4
int i, temperatura; temperatura i // variveis so do tipo int
int profunidad_de_sonda [MUESTRAS_DE_AGUA] = {} 24,25,1,1987; // Tudo
// Membro da profundidade matriz
sonda // eles so do tipo int
for (i = 0; i <(MUESTRAS_DE_AGUA / 2); i ++) { // loop executado duas vezes
profundiad_de_sonda temp = [i];
// temporrio usado para armazenar um valor
temporariamente //
profundiad_de_sonda [i] = profundiad_de_sonda [MUESTRAS_DE_AGUA-1-i];
profundiad_de_sonda [MUESTRAS_DE_AGUA-1-i] = temperatura;
}
// Aqui: profundidad_de_sonda [MUESTRAS_DE_AGUA] = {} 1987,1,25,24
}
Bidimensional matrizes
Alm das matrizes unidimensionais que podem ser interpretados como uma lista de valores, a linguagem C permite declarar arrays
multidimensionais. Nesta parte iremos descrever matrizes apenas duas dimenses, tambm chamados de tabelas ou matrizes. A matriz
bidimensional declarada, especificando o tipo de dados de matriz, o nome da matriz eo tamanho de cada dimenso.
int Tabela [3] [4]; // Quadro definido para ter trs filas e quatro colunas
Esta matriz pode ser representada sob a forma de uma tabela.
table [0] [0]
Semelhante a unidimesionales matrizes, possvel atribuir valores para os elementos de uma linha de declarao mesa. A atribuio deve
ser feito linha por linha, como no exemplo a seguir. Como observado anteriormente, esta matriz tem duas linhas e trs colunas:
42
19
PONTEIROS
Um ponteiro uma varivel para receber um endereo. Um ponteiro "aponta" para um local de memria, referenciada por um endereo.Em
C, o endereo de um objecto pode ser obtido atravs de um operador & unitria. Para ter acesso ao contedo da memria numa direco
especfica (tambm chamado objecto pontiagudo), um operador indirecta (*) utilizado.
tipo_de_variable * ponteiro;
Nesta fase, os pontos de ponteiro mi_puntero para o valor armazenado na posio de memria, ou seja, para um valor desconhecido.Ento,
a inicializao altamente recomendado:
Os ponteiros so muito teis para o gerenciamento de matrizes. Neste caso, um ponteiro utilizado para apontar para o primeiro elemento
de uma matriz. Devido ao facto de que possvel executar operaes bsicas de pointer (ponteiro aritmticas), fcil gerir os elementos de
uma matriz.
Note-se a diferena entre '* v + 1' e '* (v + 1)' no exemplo a seguir:
Os ponteiros tambm podem ser declaradas com o prefixo 'const'. Neste caso, o seu valor no pode ser modificado
aps a inicializao, semelhante a uma constante.
Ao contrrio de C, o mikroC no suporta alojamento dinmico.
ESTRUTURAS
Ns j vimos como agrupar os elementos em arrays. No entanto, quando se utiliza este mtodo de todos os elementos devem ser do mesmo
tipo. Usando estruturas, possvel agrupar diferentes tipos de variveis sob o mesmo nome. As variveis dentro de uma estrutura
chamado os membros da estrutura. As estruturas de dados so declaradas usando a seguinte sintaxe:
struct {nombre_de_estructura
tipo1_de_miembro1 member1;
tipo2_de_miembro2 member2;
tipo3_de_miembro3 Member3;
..
};
No possvel inicializar variveis na declarao da estrutura de dados:
struct gerador {
int tenso;
carvo animal crrego;
};
Voc pode ento definir objetos chamados "turbina" no cdigo. Cada um desses trs objetos (turbinas) atribudo 'atual' e 'voltagem' as
variveis.
turbina_3.voltaje = 150;
turbina_3.corriente = 12;
Claro, gosto de usar ponteiros, ele ainda permite que voc execute operaes atravs de operadores, e as declaraes definidas nas partes
anteriores.
Se voc est familiarizado com a linguagem C, lembre-se que mikroC no suporta a inicializao dos membros da estrutura atravs das
teclas. Por exemplo, 'conjunto_1 = {15,' m '};' retorna um erro em mikroC.
2.8 FUNES
Uma funo uma sub-rotina que contm uma lista de decises a tomar. A idia principal dividir um programa em vrias partes usando
essas funes para resolver o problema inicial com mais facilidade. Alm disso, as funes nos permitem usar as habilidades eo
conhecimento de outros programadores. A funo executada cada vez que chamado dentro de outra funo. Em C, um programa
contm, pelo menos, uma funo, a funo principal (), embora o nmero de funes geralmente maior. Ao usar o cdigo de funo tornase mais curto em funo pode ser chamado tantas vezes quanto necessrio. Em C, o cdigo consiste geralmente em muitas funes.No
entanto, se o seu programa muito curto e simples, voc pode escrever todas as frases dentro da funo principal.
Funo principal
O main () funo principal como uma funo especfica est sendo executado na inicializao. O programa termina quando a execuo
desta funo concluda. O compilador reconhece automaticamente esta funo e voc no pode cham-lo por outra funo. A sintaxe desta
funo a seguinte:
VALOR DE RETORNO
A funo pode retornar um valor (no obrigatrio), utilizando a palavra-chave de retorno. Chegando em troca, a funo avalia um valor
(pode ser uma expresso) e retorna para a linha de programa a partir do qual ele foi chamado.
retornar r;
// Retorna o valor de r no
retorno (2 * x - y); // Retorna o valor da expresso 2 * x
A funo no pode retornar mais de um valor, mas pode retornar um ponteiro ou uma estrutura. Tenha cuidado ao usar matrizes e
ponteiros. O exemplo que se segue um erro tpica:
int * reversa ( int * guia) // Esta funo deve retornar uma matriz r
{
// cujo contedo em ordem inversa com
respeito matriz // guia
int r [DIM]; // Declarando uma nova matriz chamada r
int i;
para (i = 0; i <DIM; i ++)
// loop que copia o contedo do guia em r
r [i] = separador [DIM-1-i]; // para inverter a ordem
retornar r; // Retorna o valor r
}
Na verdade, o compilador atribui memria para armazenar variveis funo inverter apenas durante a execuo. Uma vez concluda a
execuo inversa , a localizao de memria para a varivel io matriz e r no reservada. Isto significa que o endereo contm os valores
ior [] livre para entrar em novos dados. Especificamente, a funo retorna apenas o valor de r & [0], de modo que apenas o primeiro
elemento da aba de matriz armazenada na memria. Os outros locais de memria, tais como & separador [1], e guia [2], etc.Eles sero
considerados pelo compilador como espaos em branco, ou seja, eles esto prontos para receber os novos valores.
Para aceder a esta funo, passar a matriz r [] como um parmetro (ver parmetros de passagem subseo).
A funo pode conter mais de uma instruo de retorno. Neste caso, a execuo do primeiro instruo de retorno, a funo retorna o valor
correspondente ea execuo da funo pra.
Para utilizar uma funo, o compilador deve estar ciente de sua presena no programa. Ao programar em C, os programadores normalmente
primeiro escrever a funo main () e, em seguida, funes adicionais. Para dizer ao compilador da presena de funes adicionais, est
obrigado a declarar os prottipos de funes no incio do programa antes da funo main () . Um prottipo de funo compreende:
tipo de resultado
nome da funo
tipos de parmetro
um ponto e vrgula (;)
Chamar funes de
Enquanto um prottipo funo definida e declarada, ele pode ser usado na parte culquier programa. No entanto, como a funo principal
"raiz" do programa, que pode no ser posta em qualquer parte do programa. Para executar uma funo, voc precisa escrever o seu nome e
os parmetros associados. Veja os exemplos a seguir:
Passando parmetros
Ao chamar uma funo, voc vai passar os parmetros. Em C, h duas maneiras de passar parmetros para uma funo.
O primeiro mtodo, chamado de "passagem por valor ' o mais fcil. Neste caso, os parmetros podem ser considerados como variveis
locais da funo. Quando voc chamar uma funo, o valor de cada parmetro copiado para um novo espao de memria alocada para a
execuo da funo. Uma vez que os parmetros so considerados variveis locais pelo compilador, seus valores podem ser modificados
dentro da funo, mas suas modificaes no permanecer na memria aps a execuo da funo concluda.
Observe que a funo retorna um valor, no uma varivel. Alm disso, cpias dos valores dos parmetros so criadas, de modo que os seus
nomes na funo F podem ser diferentes dos parmetros utilizados no principal () . A principal desvantagem da "etapa por o valor ' a nica
interaco que tem uma funo com o resto do programa o valor de retorno de um resultado (ou modificao de variveis globais).
O outro mtodo, chamado de "passo por endereo" permite-lhe ultrapassar este problema. Em vez de enviar o valor de uma chamada de
funo varivel, voc deve enviar o endereo de memria do valor. Em seguida, a chamada de funo ser capaz de modificar o contedo
de este local de memria.
O pr-processador um programa que processa o cdigo antes de passar pelo compilador. Ele opera sob o controle das linhas de comando
chamadas directivas de pr-processador. Directivas de pr-processamento so colocados em cdigo fonte, normalmente no incio do
processo. Antes de atravessar o compilador, o cdigo fonte examinada pelo pr-processador que detecta e executa todas as directivas de
pr-processador. Pr-processamento diretivas seguir uma regra sintaxe especial, comeando com um smbolo "#" e no necessitam de ponto
e vrgula no final (;).
Directivas de pr-processador
A tabela a seguir contm um conjunto de pr-processamento diretivas freqentemente usados:
Directivas de pr-processador pode ser dividida em trs categorias:
D I R E C T I VAS
C AR ACTERSTICAS
#include
#undef
#define
#ifdef
#endif
#ifndef
#if
#else
#elif
Definies de macro
Incluses de arquivo
Controle Compilation
Agora, apresentamos apenas as directivas de pr-processador usado com mais freqncia. No entanto, no necessrio conhecer todos
eles para microcontroladores programa. Basta ter em mente que o pr-processador uma poderosa ferramenta para programadores
avanados em C, especialmente para controlar a compilao.
H duas maneiras de escrever estas directivas. No primeiro exemplo, somente o nome de arquivo for especificado, ento o pr-processador
ir procurar no arquivo de incluso. No segundo exemplo, o caminho completo est especificado, de modo que o ficheiro ser includo
directamente (este mtodo mais rpido).
INTCON.B0 = 0;
// Definir a 0 o bit 0 do registro INTCON
ADCON0.F5 = 1;
// Definir a 1 bit 5 de Registo ADCON0
INTCON.GIE = 0; // Definir a 0 o bit de interrupo (GIE)
Para aceder a um nico bit, que pode ser usado "FX" e ".BX '(o smbolo X representa um nmero inteiro de 0 a 7 que representa a posio
de bit).
TIPO SBIT
Se voc declarar uma varivel que corresponde a um pouco de SFR, use o tipo sbit . Uma varivel do tipo sbit se comporta como um
ponteiro e deve ser declarado como uma varivel global:
TAXA DE BITS
O mikroC PRO para PIC fornece um tipo de dados bit que pode ser usado para declarar variveis. Ele no pode ser usado na lista de
argumentos, ponteiros e valores de retorno de funes. Tambm no possvel declarar e inicializar uma taxa de bits varivel na mesma
linha. O compilador determina o bit em um dos registros disponveis para armazenar variveis.
bit bf;
// taxa de bits varivel vlido
pouco * ptr;
. // bit tipo invlido varibale
// No h ponteiros para uma varivel do tipo bit
bit bg = 0; // ERROR; instruo de inicializao no permitido
bit bg;
bg = 0;
// instruo de inicializao e vlido
os impulsos muito curtos (de alguns microssegundos) aparecem periodicamente num pino microcontrolador. Em tais casos, a soluo mais
simples seria usar o cdigo Assembler no programa parte que controla a durao do impulso.
asm
{
instrues de montagem
...
}
Escrito em cdigo assembly pode usar constantes e variveis previamente definidas em C. Claro que, como todo o programa escrito em C,
as suas regras se aplicam a declarar essas constantes e variveis.
Funo de interrupo
Uma interrupo pra a execuo normal de um programa para executar operaes especficas. Uma lista de instrues a serem executadas
deve ser escrito dentro de uma determinada funo chamada de interrupo () . A sintaxe de uma interrupo no mikroC se parece com o
seguinte:
vazio interrupo () {
cnt ++;
// Quando uma interrupo ocorre
// cnt incrementado por 1
PIR1.TMR1IF = 0; // Defina como 0 bit TMR1IF
}
Ao contrrio de funes padro que no necessrio declarar o prottipo da funo de interrupo () . Alm disso, a execuo desta funo
no faz parte da execuo do programa regular, no deve ser chamado a partir de qualquer parte do programa (ele ser executado
automaticamente, dependendo das condies que voc definiu no programa). No prximo captulo, vamos dar uma explicao clara da
execuo e definio de sub-rotinas de interrupo.
BIBLIOTECAS
Voc provavelmente j reparou que nos exemplos anteriores usamos algumas funes como 'delay_ms' 'LCD_out' 'LCD_cmd' etc. Estas
funes so definidas nas bibliotecas contidas em compilador mikroC .
Uma biblioteca um cdigo compilado escrita em mikroC acima, que contm um conjunto de variveis e funes. Cada biblioteca tem um
propsito especfico. Por exemplo, a biblioteca contm visor LCD funes na tela LCD enquanto C_math fornece algumas funes
matemticas.
Antes de utilizar qualquer um deles no programa, necessrio informar o compilador para marc-los na lista de bibliotecas do compilador
existentes. Se o compilador encontra uma funo desconhecida durante a execuo do programa, ele ir primeiro procurar a sua declarao
marcado livrarias.
Para alm das bibliotecas existentes, voc pode criar bibliotecas e, em seguida, us-los no programa. O processo de criao de bibliotecas
esto descritas em detalhe na ajuda ( Ajuda compilador).
O compilador mikroC inclui trs tipos de bibliotecas:
- ANSI bibliotecas padro C:
LIBRARIA
DESCRIO
- Bibliotecas Diversos:
LIBRARIA
DESCRIO
Biblioteca boto
Biblioteca de Converso
Sprint Biblioteca
PrintOut Biblioteca
Biblioteca Tempo
Trigonometria Biblioteca
Setjmp Biblioteca
DESCRI O
ADC Biblioteca
CAN Biblioteca
CANSPI Biblioteca
EEPROM Biblioteca
EthernetPIC18FxxJ60 Biblioteca
Usado para operaes com grfico mdulo LCD com resoluo de 128x64
I2C Biblioteca
Teclado Biblioteca
Lcd Biblioteca
PS / 2 Biblioteca
PWM Biblioteca
RS-485 Biblioteca
Biblioteca de som
SPI Biblioteca
UART Biblioteca
1.
2.
3.
4.
5.
Basta seguir as instrues e clique em seguida, OK, Next, Next ... Em geral, o mesmo procedimento, mas a ltima opo: 'Voc quer
instalar PICflash v7.11 programador'. O que este software? Que discutiremos mais tarde. Por agora, s sei que um software autnomo
usado para carregar o programa para o microcontrolador.
Mais uma vez: Em seguida, OK, Next, Next ...
Quando a instalao PICflash estiver concluda, o sistema operacional ir pedir para instalar software similar, software para agendar um
grupo especial de microcontroladores PIC que operam em modo de baixa energia (3,3 V). Pule esta etapa ...
O ltimo passo - a instalao do driver (driver)!
Clique em Sim.
Um driver um programa que permite que o sistema operacional para se comunicar com um perifrico. Neste caso, este o sistema de
desenvolvimento de dispositivo programador (hardware).
O controlador a instalar depende do sistema operacional utilizado. Selecione o sistema operacional apropriado (sistema operacional) usado
(abrindo a pasta) e iniciar o controlador de instalao. Mais uma vez, seguida, OK, Next, Next ... bem, tudo est instalado para iniciar a
programao!
Infelizmente, uma descrio detalhada de todas as opes disponveis nesta IDE nos levaria muito tempo. Ento, vamos descrever apenas o
mais importante da mikroC PRO para PIC. De qualquer forma, para mais informaes clique no boto Ajuda (Help) [F1].
GERENCIAMENTO DE PROJETOS
Antes de comear a escrever cdigo, voc deve criar um projeto. Um programa no compilador mikroC PRO para PIC no um arquivo fonte
autnoma, mas parte de um projeto que inclui um cdigo hexadecimal, cdigo de montagem, cabealho e outros arquivos. Alguns deles so
obrigados a compilar o programa, enquanto outros so criados durante a compilao. Um arquivo com .mcppi permite abrir qualquer um
desses projetos.
Para criar um projeto, basta selecionar a opo Projeto / New Project , e assistente aparecer automaticamente. O que ento? Siga as
instrues ...
Dispositivo (Dispositivo):
Ao selecionar o tipo de microcontrolador permite que o compilador para usar arquivo de definio de extrato (ficheiro.def) associado. O
arquivo de definio contm um microcontrolador informaes especficas dos seus registos SFR, seus endereos de memria e algumas
variveis especficas para esse tipo de programao de microcontroladores. obrigatrio para criar um arquivo .hex compatvel.
Oscilador (oscilador):
Voc deve especificar a velocidade de funcionamento do microcontrolador. Claro que, este valor depende do oscilador utilizado. O
compilador precisa compilar as rotinas, que exigem informaes de tempo (por exemplo delay_ms funo). Mais tarde, o programador
precisa desta informao tambm. A velocidade de funcionamento seja configurado de modo a permitir que o oscilador interno do
microcontrolador operado a uma frequncia seleccionada.
Por exemplo, se seu programa usa um LCD no h necessidade de escrever novas funes como selecionar a biblioteca Lcd, voc pode
usar pronta a usar LCD (Lcd_Cmd, LCD_Init ...) funes de biblioteca no seu programa. Se esta biblioteca no est selecionada na janela
Biblioteca Manager, sempre que voc tentar usar uma funo da biblioteca de LCD, o compilador ir relatar um erro. Uma descrio de cada
biblioteca est disponvel quando voc clica com o boto direito sobre seu nome e selecionar a opo Ajuda.
Ao escrever um programa, no espere para terminar de escrever o programa para compilar. Compilar o cdigo em uma base regular com a
finalidade de corrigir erros de sintaxe muito mais. Alm disso, voc pode compilar o seu programa cada vez que a elaborao de uma nova
funo, bem como testar o seu comportamento ao usar o modo de depurao (ver seco seguinte) est concluda. Assim, mais fcil para
solucionar erros de programa para no "tomar um caminho errado" para escrever o seu programa. Caso contrrio, voc ter que editar todo o
programa.
processo de compilao muitas mensagens que so exibidas na janela de mensagens gerado. Estas mensagens consistir em informao,
e o aviso de erro. Cada erro encontrado est associada sua linha de programa e descrio.
Como um erro em seu cdigo pode gerar muito mais erros, simplesmente tentar corrigir o primeiro erro na lista e, em seguida, recompilar seu
programa. Em outras palavras, aconselhvel para corrigir erros, um por um.
No exemplo anterior, h dois erros e um aviso: falta um ponto e vrgula e um aviso de declarao de varivel informa que o tipo de retorno da
funo ausente principal .
A compilao permite que voc corrigir o seu programa, resolvendo todos os erros em mikroC. Quando todos os erros so resolvidos, o
programa est pronto para ser carregado para o microcontrolador. No entanto, sua tarefa ainda no est terminado, porque no sabe se seu
programa funciona como esperado ou no.
Depurar o programa
A depurao um passo muito importante, pois permite que voc teste o programa aps uma compilao com sucesso, ou corrigir bugs
descobertos enquanto o programa est em execuo. Como vimos, existem duas maneiras de depurao: um depurador software que
simula o funcionamento do microcontrolador (modo padro) e hardware depurador (mikroICD), que l diretamente o contedo da memria do
microcontrolador. O processo de purificao o mesmo, independentemente do modo escolhido. No caso de escolher a opo CID de
depurao , o programa deve ser carregado para o microcontrolador que antes depurar.
Para iniciar a depurao, clique na opo Iniciar depurador de menu Run . O editor de cdigo ser ligeiramente modificada automaticamente
e aparece uma janela chamada Assista Valores . O princpio da purificao baseado em executar o passo a passo e controlar o teor de
registos e os valores das variveis do programa. Assim, voc pode verificar o resultado de um clculo e ver se algo inesperado
aconteceu. Quando voc executar o programa passo a passo, voc pode facilmente localizar problemas.
Durante um programa de depurao que vai ser mudado, assim que voc deve sempre recompilar o programa aps cada correo, e
reiniciar o depurador para ver o que foi alterado.
Comandos do depurador
Existem vrios comandos disponveis para a depurao do cdigo:
Step Into - Executa uma instruo. Quando a instruo uma chamada para uma rotina, o depurador ir saltar para a
rotina e parar depois de executar a primeira instruo dentro da rotina.
Step Over - uma instruo executada. Quando a instruo uma chamada para uma rotina, o depurador no vai
fazer um salto para a rotina, mas toda a rotina executado. O depurador pra na primeira instruo aps a chamada
para a rotina.
Run To Cursor - O programa executado para a linha onde est o cursor.
Saia - outras instrues dentro da rotina executado. O depurador pra imediatamente ao sair da rotina.
chamada pontos de interrupo mostra onde os pontos de interrupo so. Note que as linhas designados como pontos de interrupo esto
marcados em vermelho.
A linha est atualmente em execuo est marcada em azul. Voc pode ler o contedo de registros e variveis selecionadas na janela
Valores de Vigia a qualquer momento. Para executar o programa a partir da seo de linha onde o cursor at o ponto de ruptura, utilize o
comando Run / Pause Debugger.
Para visualizar esta janela voc precisa selecionar a opo Exibir / Debug Windows / Assista Valores . Depois, voc pode fazer uma lista de
registros / variveis que voc deseja monitorar e como exibi-los.
CRONMETRO (TIMER)
Se voc quiser saber quanto tempo leva um microcontrolador para executar uma parte do programa, selecione a opo Run / Ver
Cronmetro. como mostrado na figura direita uma janela aparece. Como um trabalho timer? Isso uma brisa ... O tempo que leva um
comando (passo para, passar por cima, executar / pausar etc.) para executar o depurador medido e exibido na janela Cronmetro
automaticamente. Por exemplo, programado para executar um programa, o tempo para executar a ltima etapa etc.
Programar o microcontrolador
Se voc tiver resolvido todos os erros em seu cdigo e acha que seu programa est pronto para uso, o prximo passo carregado para o
microcontrolador. O programador PICflash utilizado para esta finalidade. Ele uma ferramenta desenhada para a programao de todos os
tipos de microcontroladores PIC. composto de duas partes:
A parte de hardware utilizada para introduzir um cdigo hexadecimal (o programa a ser carregado para o
microcontrolador) e para programar o microcontrolador usando nveis especficos de tenso. Durante a programao,
um novo programa gravado na memria flash do microcontrolador, enquanto o programa anterior automaticamente
eliminado.
O software se encarrega de enviar o programa (arquivo hex) para o hardware do controlador atravs de um cabo
USB.A interface do usurio deste software acessvel a partir de IDE quando voc clica na opo de menu
Ferramentas mE_Programmer ou pressione [F11]. Portanto, possvel modificar algumas configuraes do
programador e controlar o funcionamento da parte de hardware (Load, Escrever, verificar ...).
USART TERMINAL
O USART terminal de um substituto para o padro do Windows HyperTerminal. Ele pode ser usado para controlar o funcionamento do
microcontrolador, que utiliza a comunicao USART. Tais microcontroladores so construdas em um dispositivo de destino e ligado ao
conector RS232 no PC atravs de um cabo serial.
A janela do terminal USART tem opes para configurar os dados de comunicaes e ecr de srie enviadas / recebidas.
EDITOR EEPROM
Ao selecionar a opo Editor de EEPROM a partir do menu Ferramentas, aparece uma janela como mostrado na figura a seguir. Isto como
a memria EEPROM do microcontrolador funciona. Se voc quiser alterar o seu contedo depois de carregar o programa para o
microcontrolador, este o caminho certo para faz-lo. O novo contedo de dados de um tipo especfico (char, int ou double), primeiro voc
deve selecion-lo, digite o valor no campo Editar valor e clique em Editar. Em seguida, clique no boto Salvar para salv-lo como um
documento com extenso .hex. Se a opo Use EEPROM no Projeto est ativo, os dados so automaticamente carregados para o
microcontrolador durante a programao.
Um cdigo gerado usando ferramentas para controlo do LCD e GLCD exibe contm as funes da biblioteca de LCD. Se usado no
programa, no se esquea de verificar a caixa de seleo prxima a esta biblioteca na janela Biblioteca Manager. Assim, o compilador ir
reconhecer essas funes corretamente.
3.5 Timer1
3.6 Timer2
3.7 CCP MDULOS
3.8 mdulos de comunicao serial
3.9 Mdulos analgicos
3,10 relgio oscilador
3.11 EEPROM
3.12 REINICIAR! Blackout, escurecimento parcial ou rudos?
Arquitetura RISC
o
Calibrao de fbrica
Um conversor A / D:
o
14 canais
Resoluo de 10 bits
Watchdog timer
A funcionalidade do pino mostrado acima muito til porque permite uma melhor utilizao dos recursos do microcontrolador, sem afectar o
seu funcionamento. Estas funes dos pinos no podem ser utilizados simultaneamente, mas pode ser alterado a qualquer momento durante
a operao.
As tabelas a seguir referem-se a 40 pinos DIP microcontrolador.
O CPU tem apenas 35 instrues simples. Podemos dizer que, a fim de programar outros microcontroladores em
linguagem assembly necessrio conhecer mais de 200 instrues
O tempo de execuo o mesmo para quase todas as instrues e demora cerca de 4 ciclos de relgio. A frequncia
do oscilador estabilizada por um cristal de quartzo. Ir instrues e ramificao levar oito ciclos de clock para
executar. Isto significa que se a velocidade de funcionamento do microcontrolador de 20 MHz, o tempo de execuo
de cada instruo ser 200ns, isto , o programa ser executado 5million instrues por segundo!
MEMRIA
O PIC16F887 possui trs tipos de memria: ROM, RAM e EEPROM. Como cada um tem as funes, caractersticas e organizao
especfica, vamos apresent-los separadamente.
ROM MEMRIA
A ROM usado para armazenar programa permanente que est sendo executado. por isso que muitas vezes chamado de "memria de
programa". O PIC16F887 tem 8 KB ROM (total de 8192 lugares). Como a ROM feita com a tecnologia Flash, o seu contedo pode ser
alterado para fornecer tenso de programao especial (13V).
No entanto, no necessrio explicar em detalhes, uma vez que por um programa especial no computador e um dispositivo eletrnico
simples chamado programador automaticamente.
EEPROM
Similar memria de programao, o contedo da EEPROM memorizado permanentemente, desligando a fonte de alimentao. No
entanto, ao contrrio da ROM, o contedo da memria EEPROM pode ser alterada durante o funcionamento do microcontrolador. a razo
pela qual essa memria (256 locais) perfeito para guardar permanentemente alguns resultados criados e utilizados durante a execuo do
programa.
RAM
a terceira e mais complexa parte da memria do microcontrolador. Neste caso, ele composto por duas partes: registos de uso geral e os
registradores de funes especiais (SFR). Todos esses registros so divididos em quatro bancos de memria que ns discutiremos mais
tarde neste captulo.
E mbora os dois conjuntos de registros so repostos desligando a fonte de alimentao, tambm so fabricados da mesma maneira e se
comportar de forma semelhante, as suas funes tm muitas coisas em comum.
/ * Nesta sequncia, a varivel no valor recorde aumentada cada vez que voc
tomar uma (1) entrada lgica pino RB0. * /
...
se (PORTB.0 = 1) // Verifique se o pino RB0 uma
soma ++;
// Se o valor da varivel aumentada de um
...
// Se no, o programa sai do comando if
...
Trabalhando com os bancos pode ser difcil se voc escrever um programa em linguagem assembly. Usando a linguagem de programao
de alto nvel como compilador C, como mikroC PRO para PIC , basta digitar o nome do registro. A partir desta informao, o compilador
seleciona banco necessrio. Adequado para instrues de seleco bancrias sero incorporadas no cdigo durante a compilao. At
agora voc s ter usado linguagem assembly e esta a primeira vez usando o compilador C, certo? uma notcia maravilhosa, no acha?
BATERIA
Uma parte da memria RAM utilizada como uma pilha de oito registos de 13 bits. Antes de o microcontrolador est definida para executar
um sub-rotina (instruo CALL) ou quando uma interrupo ocorre, o endereo da primeira instruo seguinte a ser executada colocado na
pilha (empilhados), ou de um dos registos. Graas a isso, aps a execuo de uma sub-rotina ou uma interrupo, o microcontrolador "sabe"
quando a continuar a execuo do programa. Este endereo suprimido (que aparece) depois de voltar para o programa, uma vez que no
necessrio guardar, proporcionando automaticamente esses locais da pilha para utilizao futura.
Deve-se ter em mente que os dados so empilhadas circular. Isto significa que depois de se empilhar oito vezes, o valor de tempo
armazenados nona pelo empilhamento de dados substitudo primeiro. A dcima vez que voc empilhar, o valor armazenado pelo
empilhamento segundo dados de tempo substitudo etc. Assim, os dados sobrescritos no podem ser recuperados. Alm disso, o
programador no pode acessar esses registros para leitura / gravao. Sem bit de status para indicar o estado de estouro de pilha ou
underflow. Por esta razo, devemos ser particularmente cuidadosos ao escrever um programa.
Vamos faz-lo em mikroC ...
Interrupes do sistema
Aparecendo uma solicitao primeira coisa interrupo do microcontrolador est executando a instruo atual aps o processo de execuo
do programa pra. Como resultado, o endereo de memria do programa em curso automaticamente empilhar e o endereo padro (prdefinidos pelo fabricante) escrito para o contador de programa. A localidade em que o programa continua a execuo chamado de vetor
de interrupo. Para o microcontrolador PIC16F887 0x0004h nesta direco. Como se mostra na figura abaixo local que contm o vector
de interrupo ignorada durante a execuo do programa regular.
Uma parte do programa a ser executado quando um pedido de interrupo chamado rotina de interrupo. Sua primeira instruo no vetor
de interrupo. O tempo que demora a executar esta sub-rotina e como ser depende da habilidade do programador, bem como a fonte de
interrupo. Alguns microcontroladores ter mais de um vetor de interrupo (cada solicitao de interrupo tem seu vetor), mas neste caso
s existe um. Por conseguinte, a primeira parte apresenta a rotina de interrupo para detectar a fonte de interrupo.
Finalmente, reconhecendo a origem da interrupo e terminar de executar a rotina de interrupo atinge a instruo
microcontroladorRETFIE , tomar a direco da pilha e continua a execuo do programa a partir de onde parou.
mikroC reconhece uma rotina de interrupo a ser executada como a funo de interrupo vazio () . O corpo da funo, ou seja, a
rotina de interrupo deve ser escrito pelo utilizador.
Suponha que voc j comprou um microcontrolador e tem uma boa idia de como usar ... A lista de registos SFR e seus pedaos
longa.Cada controla o processo. No geral, parece que uma tabela de controle grande com um grande nmero de instrumentos e
switches. Agora que voc est preocupado sobre como aprender sobre todos eles? improvvel, mas no se preocupe, voc no
precisa! Os microcontroladores so to poderosas que parecem supermercados: eles oferecem tanto para baixar os preos e voc apenas
toc-lo escolher o que voc precisa. Portanto, selecione o campo no qual voc est interessado e analisar apenas o que voc
precisa. Quando entender completamente a operao do hardware, examine os gerentes de registros para controlar SFR (geralmente eles
so poucos).
Como todos os dispositivos possuem um tipo de sistema de controle de microcontrolador tem suas "alavancas" com os quais voc deve estar
familiarizado com o de ser capaz de us-los corretamente. Naturalmente, ns estamos falando sobre os registos SFR a partir do qual o
processo de programao comea e onde termina.
Registo STATUS
O registo STATUS contm: o status aritmtica dos dados no registo W, o estado de RESET, bits para selecionar o banco de memria de
dados.
RP1
RP0
B A N C O D E AT I V O S
Banco 0
Banco 1
Banco 2
Banco 3
1 - Depois de ligar o microcontrolador, depois de executar a instruo CLRWDT para reiniciar o WDT.
0 - Depois de executada a instruo SLEEP colocar o microcontrolador em modo de baixa energia.
1 - Depois de ligar o microcontrolador, aps a instruo executada CLRWDT para reiniciar o WDT (watchdog timer) ou aps a
instruo SLEEP que define o microcontrolador em modo de baixo consumo de execuo.
0 - Depois de terminar o tempo WDT.
DC - Digit carry / borrow bit (emprstimo carry / dgitos) alteraes adicionando ou subtraindo se ocorrer um
"estouro" ou um "emprstimo" no resultado.
o
o
1 - Houve transportando a quarta baixo fim bit (baixo mordidela) sobre o resultado.
0 - Havia transportando a quarta baixo fim bit (baixo mordidela) sobre o resultado.
C - Leve / Borrow bit (carry bit / emprstimo) alterado pela adio ou subtrao se um "estouro" ou um "emprstimo"
no resultado, ou se o resultado for maior que 255 ou inferior a 0 ocorre.
o
o
OPTION_REG
O registo OPTION_REG contm vrios bits de controle para definir a pr - scaler Temporizador 0 / WDT, o temporizador Timer0, a interrupo
externa e pull-up resistores em PORTB.
1 - desativado.
0 - On.
INTEDG - Interrupo de Borda Select bit (selector pouco bordo activo da interrupo externa)
o
T0CS - TMR0 Clock Source Select (seletor de velocidade do clock de bits para Timer0) bit
o
T0SE - TMR0 Fonte Borda Select bit (bit selector taxa flanco toki) seleciona a borda (ascendente ou
descendente) contados pelo temporizador Timer0 pelo pino RA4 / T0CKI.
o
PSA - bit Prescaler atribuio atribui o prescaler (apenas um) ou WDT timer.
o
o
0 - Pr - scaler atribudo a Timer0 timer.
PS2, PS1, Taxa PS0 Prescaler Escolha pedaos (valor selector pouco do divisor de frequncia)
O valor do divisor de frequncia seleccionada pela combinao desses trs bits. Como mostrado na tabela abaixo, o valor do divisor de
frequncia atribudo ao temporizador (Timer0) ou o temporizador de vigilncia (WDT).
PS2
PS1
PS0
TMR0
WDT
1: 2
1: 1
1: 4
1: 2
1: 8
1: 4
01:16
1: 8
1:64
01:32
1: 128
1:64
1: 256
1: 128
Para obter o valor do divisor de frequncia de 1: 1 quando o cronmetro Timer0 conta pulsos, o divisor deve ser atribudo ao WDT. Em
consequncia, o temporizador no usa Timer0 prescaler, mas conta directamente os impulsos gerados pelo oscilador, que foi o alvo.
Vamos faz-lo em mikroC ...
...
asm CLRWDT; montagem // Comando para redefinir o WDT
}
Como vimos, a idia muito simples e eficiente. Chegando pedido de interrupo, primeiro bit sinalizador est definido para um.
Se o bit IE apropriado zero (0), esta condio ser completamente ignorados. De outro modo, ocorre uma interrupo. Se vrias fontes de
interrupo so habilitados, necessrio para detectar ativa antes da rotina de interrupo est definido para ser executado. A fonte de
deteco realizada atravs da verificao dos bits dos sinalizadores.
Observe que os bits de cada bandeira no apagada automaticamente, mas por software durante a execuo de rotina de interrupo
continua a ser executado. Se ignorarmos esse detalhe, outra interrupo ocorrer imediatamente aps o retorno ao programa principal, mas
no h mais pedidos de execuo. Simplesmente, a bandeira eo bit IE, permanecem em um.
Todas as fontes de interrupo tpicos para PIC16F887 microcontrolador so mostrados na pgina seguinte. Observe o seguinte:
O bit GIE ativa / desativa interrupes desmascarado simultaneamente.
O bit PEIE ativa / desativa interrupes desmascarado perifrica. Isto no se refere ao temporizador Timer0 e interromper fontes PORTB
porto.
Para habilitar uma interrupo causada pela mudana de estado lgico no PORTB, voc precisa ativ-lo para cada bit separadamente.Neste
caso, cadastre-se pedaos IOCB IE se comportam como bits de controle.
INTCON
O registo INTCON contm vrios bits e permitir bandeira estouro do registo TMR0, e interrupes pela mudana de estado no PORTB porto
e interrupes externas pino INT.
GIE - A Global Habilitar Interrupo bit - (bit de habilitao de interrupo global) controla simultaneamente todas as
fontes de potenciais interrupes.
o
o
PEIE - Peripheral Habilitar Interrupo bit (bit habilitar interrupes perifricos) semelhante ao GIE pouco, mas os
controles Interrupes habilitadas pelos perifricos. Isso significa que nenhuma influncia sobre as perturbaes
causadas pelo temporizador Timer0 ou alterar o estado em PORTB ou alterar o pino RB0 / INT.
o
o
T0IE - TMR0 Overflow Habilitar Interrupo bit (bit de habilitao de interromper o estouro de cronmetro Timer0)
controla rupturas causadas pelo transbordamento de Timer0.
o
o
INTE - RB0 / INT interrupo externa Habilitar bit (bit de habilitao no RB0 interrupo externa) controla as
interrupes causadas pela mudana do estado lgico da entrada pino RB0 / INT (interrupo externa).
o
o
RBIE - RB Porto Mudana Habilitar Interrupo bit (bit de habilitao de interrupo mudanas no PORTB).Quando
configuradas como entradas, os pinos do PORTB pode causar uma interrupo para mudar o estado lgico (seja para
baixo ou poder do impulso ocorre, o que importa que ocorre uma alterao). Este bit determina se uma interrupo
vai ocorrer.
o
o
T0IF - TMR0 Overflow Flag de interrupo bit (bit flag de interrupo pelo mandamento desbor Timer0) detecta
estouro no cronmetro registrar Timer0, ou o contador reposto.
o
o
1 - Para gravar o transbordamento Timer0 ocorreu (este alerta deve voltar-se para 0 por software).
0 - No check ocorreu Timer0 estouro.
INTF - RB0 / INT Bandeira interrupo externa bit (bit flag em INT interrupo externa) detecta a alterao no estado
lgico no pino INT.
o
o
1 - interrupo externa INT ocorreu (deve ativar esse sinalizador para 0 por software)
0 - interrupo externa INT no ocorreu.
RBIF - RB Porto Mudana Bandeira interrupo bit (bit flag de interrupo na mudana porta RB) detecta qualquer
alterao no estado lgico de qualquer um dos pinos de entrada no PORTB.
o
o
1 - Pelo menos um dos pinos de E / S de uso geral em PORTB tem valor cambido. Depois de ler PORTB, mordeu RBIF deve se
voltar para 0 por software).
0 - Nenhum dos / S propsito valor geral PORTB porto pino I mudou.
// O pino PORTB.4 configurado como uma entrada sensvel mudana de estado lgico.
vazio initMain () {
ANSEL = ANSELH = 0;
//
PORTB = 0;
//
TRISB = 0b00010000;
//
configurados como sadas
RBIE = 1;
// interrupes esto activados pela mudana no PORTB
IOCB4 = 1;
// interrupo activada pela mudana no pino 4 na
porta PORTB //
GIE = 1;
// interrupo activada No geral
...
// A partir deste ponto, uma interrupo ocorre com qualquer alterao
... // O estado lgico no pino PORTB.4
...
Registrar PIE1
O registo PIE1 contm a habilitar interrupes perifricas bocados.
RCIE - EUSART Receber Habilitar Interrupo bit (bit de habilitao de interrupo recepo EUSART).
o
o
TXIE - EUSART Transmit Habilitar Interrupo bit (bit de habilitao de interrupo de transmisso EUSART).
o
o
SSPIE - Master Synchronous Serial Port (MSSP) Interromper Habilitar bit - (bit permite a interrupo do mestre
sncrona serial (MSSP) permitiu gerar um pedido de interrupo aps cada mdulo de transmisso de dados
comunicao serial sncrona (modo SPI ou I2C).
o
o
CCP1IE - CCP1 Habilitar Interrupo bit (bit de habilitao de interrupo mdulo 1 Comparar / Capture / PWM CCP1) pode gerar um pedido de interrupo para o mdulo CCP1 utilizado para processamento de sinal PWM.
o
o
TMR2IE - TMR2 para PR2 Jogo Habilitar Interrupo bit (bit de habilitao de interrupo igualdade TMR2 e
PR2)
1 - Permite a interrupo igualdade TMR2 e PR2.
0 - desativa a interrupo da igualdade TMR2 e PR2.
o
o
TMR1IE - TMR1 Overflow Habilitar Interrupo bit (bit de habilitao de interrupo de estouro Timer1) permitiu
gerar um pedido de interrupo aps cada estouro no Timer1 registo, ou seja, o contador zerado.
1 - Permite a interrupo de estouro Timer1.
0 - desativa estouro interrupo Timer1.
o
o
//
//
//
//
Registro PIE2
O registro tambm contm vrios PIE2 interromper permitir pedaos.
OSFIE - oscilador falha Habilitar Interrupo bit (bit de habilitao de interrupo falha no oscilador)
o
o
C2IE - Comparador C2 Habilitar Interrupo bit (bit permite a interrupo do comparador C2)
o
o
EEIE - EEPROM Write Habilitar Interrupo bit (bit interromper habilitar a gravao no EEPROM)
o
o
BCLIE - Bus Collision Habilitar Interrupo bit (bit permite a interrupo do nibus coliso)
o
o
C1IE - Comparador C1 Habilitar Interrupo bit (bit interupcin habilitar o comparador C1)
o
o
ULPWUIE - Ultra Low-Power Wake-up Habilitar Interrupo bit (bit permite a interrupo para sair do baixo
consumo de energia de ultra - reativao)
o
o
CCP2IE - CCP2 Habilitar Interrupo bit (bit de habilitao de interrupo mdulo 2 Comparar / Capture / PWM
(CCP2)
o
o
/ * O comparador C2 est configurado para usar o pino RA0 e RA2 como entradas. Ocorrer
uma alterao na sada do comparador, o pino de sada muda o estado lgico na PORTB.1
rotina de interrupo. * /
vazio interrupo () {
PORTB.F1 = ~ PORTB.F1;
pino // PORTB.1
PIR2.C2IF = 0;
}
vazio main () {
TRISB = 0;
// Tudo PortB pinos da porta esto configuradas
como sadas //
PORTB.F1 = 1;
// O PORTB.1 pino definido como um
ANSEL = 0b00000101 ;;
// O RA0 / C12IN0- e RA2 pin / C2IN + so as
entradas analgicas //
ANSELH = 0;
// Todos os pinos de E / S so configurados como digitais
CM2CON0.C2CH0 = CM2CON0.C2CH1 = 0; // O RA0 pino selecionado para ser uma
entrada invertida // C2
PIE2.C2IE = 1;
// Ativar o comparador de interrupo C2INT
CON.GIE = 1;
// interrupo global est habilitado
CM2CON0.C2ON = 1;
// Comparador C2 est habilitado
...
...
PIR1 registo
O registo PIR1 contm os bits bandeira de interrupo.
RCIF - EUSART Receber Bandeira interrupo bit (bandeira bit da EUSART receber interrupo)
o
o
1 - O EUSART receber buffer est cheio. O bit limpa atravs da leitura do registo RCREG.
0 - O EUSART buffer de recepo no est cheio.
TXIF - EUSART Transmit Bandeira interrupo bit (interrupo de transmisso pouco EUSART)
o
o
1 - O buffer de transmisso EUSART est vazio. O bit redefinido para um esribir dados para o registo TXREG.
0 - O buffer de transmisso EUSART est cheio de.
SSPIF - Master Synchronous Serial Port (MSSP) Flag de interrupo bit (bandeira da porta serial interrupo
mestre sncrono bit)
o
1 - converso A / D tenha sido concluda (bit deve se voltar para 0 por software)
0 - Ainda no completou uma converso A / D ou no comeou
1 - que ela se cumpra a condio de um MSSP interrupo ocorrer durante a transmisso / recepo de dados. Eles diferem de
acordo com o modo de operao MSSP (SPI ou I 2 C). O bit deve ser afastada pelo software antes de retornar da rotina de servio de
interrupo)
0 - Ainda no encontrou qualquer condio de um MSSP interromper ocorrer.
CCP1IF - CCP1 Bandeira interrupo bit (mdulo bit flag de interrupo 1 Comparar / Capture / PWM (CCP1).
o
o
1 - que ela se cumpra a condio de interrupo CCP1 (CCP1 uma unidade para a captura, comparando e gerando sinal
PWM).Dependendo do modo de operao (modo de captura ou modo de comparao), uma captura ou igual comparao ocorre. Em
ambos os casos, o bit tem de ser reposto por um software. O bit no utilizado no modo de PWM.
0 - Nenhum atendeu condio de interrupo CCP1.
TMR2IF - Timer2 para PR2 Bandeira interrupo bit (bit de interrupo bandeira dade igual entre Timer2 e PR2
registo)
o
o
1 - No foi igual ao valor de TMR2 (registar temporizador de 8 bits) e o valor de PR2. O bit deve ser afastada pelo software antes
de retornar da rotina de servio de interrupo).
0 - No, no tiver sido igual ao valor de TMR2 e PR2 valor.
TMR1IF - Timer1 Overflow Flag de interrupo bit (bit flag estouro interrupo Timer1)
o
Registro PIR2
O registo contm PIR2 bandeira bits d a interrupo.
OSFIF - oscilador falha Bandeira interrupo bit (bit flag de interrupo falha no oscilador)
o
C2IF - Comparador C2 Bandeira interrupo bit (bit flag descontinuao do comparador C2)
o
o
1 - A sada do comparador analgico C2 foi alterado (pouco C2OUT). O bit deve ser reajustado pelo software.
0 - A sada do comparador analgico C2 no foi alterada.
C1IF - Comparador C1 Bandeira interrupo bit (bit flag descontinuao do comparador C1)
o
o
1 - A sada do comparador analgico C1 tiver sido alterado (pouco C1OUT). O bit deve ser reajustado pelo software.
0 - A sada do comparador analgico C1 no foi alterada.
EEIF - EE Faa Bandeira Interrupo de Operao (bandeira bit interrompendo a operao de gravao em
EEPROM) bit
o
o
1 - Houve uma falha no sistema de oscilador. A entrada do relgio foi mudado para INTOSC oscilador interno. O bit deve ser
reajustado pelo software.
0 - O sistema de oscilador est funcionando corretamente.
1 - A operao de escrita na EEPROM est completa. O bit deve ser reajustado pelo software.
0 - A operao de escrita na EEPROM no est concludo ou ainda no comeou.
BCLIF - Bus Collision Bandeira interrupo bit (bandeira da coliso de nibus interrupo MSSP bit)
o
o
1 - Houve uma coliso de nibus no MSSP quando configurado para o modo I2C Mestre. O bit deve ser reajustado pelo software.
0 - No h coliso de nibus ocorreu no MSSP.
ULPWUIF - Low-Power Ultra Bandeira interrupo bit de despertar (bandeira da interrupo pouco para sair do
baixo consumo de energia de ultra - reativao)
o
o
1 - a condio for cumprida, deixando o modo ultra baixa potncia. O bit deve ser reajustado pelo software.
0 - Nenhuma condio foi cumprida fora do modo ultra baixa potncia.
CCP2IF - CCP2 Bandeira interrupo bit (mdulo de interrupo bit 2 Comparar / Capture / PWM - CCP2)
o
o
1 - a condio for cumprida a suspenso do CCP2 (CCP2 uma unidade de captura, comparando e gerao de sinal
PWM).Dependendo do modo de operao (modo de captura ou modo de comparao), uma captura ou igual comparao ocorre. Em
ambos os casos, o bit tem de ser reposto por um software. O bit no utilizado no modo de PWM.
0 - Nenhum atendeu condio de a interrupo de CCP2.
Registre PCON
O registo PCON contm apenas dois bits de flag usados para diferenciar entre um Power-on reset (POR) a Brown-out reset (BOR), uma
redefinio pelo watchdog timer (WDT) e um pino de reset MCLR externo.
ULPWUE - Ultra Low-Power Wake-up Habilitar bit (bit de habilitao para sair ultra baixa - reativao)
o
o
BOR - Brown-out Redefinir bit Status (bit de estado Brown - out reset)
o
o
Se o contador de programa alterado por software, voc deve considerar o seguinte para evitar problemas:
Os oito bits mais baixos (o byte baixo) registo PCL so leitura / gravao, enquanto os superiores cinco bits do registo
PCLATH so somente gravao.
O registo PCLATH limpo com cada reinicializao.
Em linguagem assembly, o valor do contador do programa marcado com PCL e refere-se apenas aos oito bits. Voc
deve ter cuidado ao usar a instruo "ADDWF PCL" . Esta uma instruo de salto que especifica a cidade de destino,
adicionando um nmero para o endereo atual. freqentemente usado para saltar para a tabela de consulta ou
tabela filial programa e ler. Um problema surge se a localizao actual de tal dimenso que a adio de uma
mudana
ocorre
em
um
pouco
pertencente
ao
byte
superior
do
registo
PCLATH.
A execuo de uma instruo sobre o registo PCL porque substituir os bits do contador de programa simultaneamente
o contedo do registo PCLATH. De qualquer forma, o registo PCL s pode acessar 8 bits inferiores do resultado da
instruo, ento o prximo salto ser completamente incorreto. A soluo para este problema colocar essas
instrues em endereos que terminam em xx00h. Desta forma, o programa salta para 255 locais esto habilitados.Se
j no salta atravs desta instruo executada, o registo PCLATH deve ser incrementado por 1 cada estouro de
tempo ocorre no registo PCL.
Ao chamar um sub-rotina ou para executar um salto (instruo de CHAMADA e GOTO ), o microcontrolador capaz de
fornecer apenas 11 bits de endereamento. Semelhante RAM dividida em "bancos", a ROM dividido em quatro
"pginas" 2K cada. As instrues nestas pginas funcionam regularmente. Basta colocar, como o processador
fornecido com um endereo de 11 bits do programa capaz de enfrentar qualquer local dentro de 2 KB. A figura a
seguir mostra o salto para o endereo sub-rotina PP1.
No entanto, se uma sub-rotina ou o endereo de salto no na mesma pgina como o local de salto, voc deve fornecer dois bits superiores
ausentes escrito ao registo PCLATH. A figura a seguir mostra o salto para o endereo sub-rotina PP2.
Em ambos os casos, quando a sub-rotina atinge instrues RETURN , RETLW ou RETFIE (de volta ao programa principal), o microcontrolador
vai continuar a execuo do programa a partir do ponto em que parou, porque o endereo do remetente empurrado e salvos na pilha
registros que consiste em 13 bits, tal como mencionado.
Indireo RECORDS
Alm do endereamento direto, o que lgico e claro (apenas especificar o endereo de um registo para ler seu contedo), este
microcontrolador capaz de realizar endereamento indireto por INDF e FSR registos. s vezes, isso faz com que o processo de escrever
um programa. Todo o procedimento habilitado porque o registo INDF no real (no fisicamente), mas apenas especifica o registo cujo
endereo est localizado no registo FSR. Por esta razo, escrever ou ler dados de registo INDF realmente significa escrever ou ler a partir do
registo cujo endereo est localizado no registo FSR. Em outras palavras, cadastre endereos especificados no registo FSR, e seu contedo
armazenado no registo INDF. A diferena entre diretos e indiretos endereamento mostrado na figura a seguir:
Como vimos, o problema com "faltando pedaos de endereamento ' resolvido com um" emprstimo "de outro registro. Desta vez o
stimo bit, chamado de bit IRP do registro STATUS.
Uma das caractersticas mais importantes do microcontrolador o nmero de pinos de entrada / sada, o que permite que voc se conectar
com perifricos. O PIC16F887 tem 35 pinos em E / S de propsito geral total, o que suficiente para a maioria das aplicaes.
Por razes de ordem prtica, muitos pino de I / S so multifuncionais. Se um pino re aliza uma destas funes pode ser
utilizado como pino de I / S uso geral.
Cada porta tem o seu prprio registo de controlo de fluxo, ou seja, o correspondente registo TRIS: TRISA, TRISB,
TRISC etc. o que determina o comportamento dos bits da porta, mas no determina o seu contedo.
Para repor um pouco do registo TRIS (pino = 0), o pino da porta correspondente configurado como uma sada. De igual modo, ao colocar
um pouco de um registo de TRIS (bit = 1), o pino de porta correspondente configurado como uma entrada. Esta regra fcil de lembrar: 0 =
Entrada 1 = Sada.
RA0 = AN0 (determinado pelo ANS0 bit do registo ANSEL) RA1 = AN1 (determinado pelo ANS1 bit do registo ANSEL) RA2 = AN2
(determinado pelo ANS2 bit do registo ANSEL) RA3 = AN3 (determinado pelo registo ANS3 bit ANSEL) RA5 = AN4 (determinado pelo bit
ANS4
registo
ANSEL)
Semelhante a TRISA cadastre-se pedaos determinar quais os pinos sero configuradas como entradas e que ser configurado como
sadas, os bits apropriados do ANSEL cadastre-se determinar se os pinos sero configuradas como entradas analgicas ou entradas / sadas
digitais.
Cada bit desta porta tem uma funo adicional relacionada com alguns perifricos integrados, a ser descrito nos captulos seguintes. Este
captulo abrange apenas funo adicional do pino RA0 uma vez que est relacionada com a unidade de PORTA e ULPWU.
Vamos faz-lo em mikroC ...
// O pino PORTA.2 est configurado como uma entrada digital. Todos os outros pinos de porta
// PORTA so sadas digitais
...
ANSEL = ANSELH = 0; // Todos os pinos de E / S so configurados como digitais
PORTA = 0;
// pinos Todos PORTA so repostas
TRISA = 0b00000100; // Todos os pinos exceto PORTA
/ / PORTA.2 so configurados como sadas
...
ULPWU UNIT
O microcontrolador geralmente utilizada em dispositivos que operam de forma completamente independente periodicamente e usando uma
fonte de energia da bateria. Neste caso, o baixo consumo de energia uma prioridade. Exemplos tpicos de tais aplicaes so:
termmetros, sensores de deteco de incndio e assim por diante. Sabe-se que a reduo da frequncia de relgio reduz o consumo de
energia, como uma das solues mais convenientes para este problema o de diminuir a frequncia de relgio, ou usar 32KHz cristal de
quartzo em vez de a 20MHz.
Ao colocar o microcontrolador em modo de suspenso mais um passo na mesma direo. Tem sido ainda o problema de esta
modalidade e colocar o microcontrolador em operao normal. , obviamente, necessrio dispor de um sinal externo de um
dos pinos. Este sinal deve ser gerado pelos componentes electrnicos adicionais, resultando num maior consumo de energia
de todo o dispositivo ...
A soluo perfeita seria o microcontrolador do modo de hibernao, periodicamente, por si s, que no impossvel. O circuito
que permite mostrado na figura, para a esquerda.
O princpio simples:
Um pino configurado como sada e que leva uma lgica um (1). Isto faz com que um condensador de carga. Imediatamente a seguir, o
mesmo pino configurado como entrada. A mudana de estado lgico permite uma interrupo e o microcontrolador entra no modo sleep.Ele
s tem estado espera para a fuga de corrente que flui atravs do capacitor pino de entrada descarregada. Aps a alta, ocorre uma
interrupo eo microcontrolador continua com a execuo do programa no modo normal. Todo o procedimento repetido.
Em teoria, esta uma soluo perfeita. O problema que todos os pinos capazes de causar perturbaes so digitais e ter
uma corrente de vazamento relativamente elevado quando a tenso sobre eles no est perto do limite de valores Vdd (1) ou
VSS (0). Neste caso, o condensador descarregado num curto perodo de tempo, porque a corrente vrias centenas de
micro-amperes. Por esta razo ULPWU capaz de indicar uma queda na tenso com circuito de baixo consumo de energia
concebida.
A sada gera uma interrupo, enquanto que a entrada conectada a um dos pinos do microcontrolador. o pino
RA0. Fazendo referncia Figura (R = 200 ohms, C = 1nF), o tempo de descarga de cerca de 30mS, enquanto um consumo
de energia total do microcontrolador 1000 vezes mais baixa (de vrias centenas nanoamp).
Semelhante a PORTA, uma lgica 1 (um) no registo TRISB configura o pino apropriado no PORTB e vice-versa. Os seis pinos deste porto
pode se comportar como entradas analgicas (AN). ANSELH bits do registador de determinar se esses pinos sero configuradas como
entradas analgicas ou entradas / sadas digitais:
RB0 = AN12 (determinado pelo registo pouco ANS12 ANSELH) RB1 = AN10 (determinado pelo registo pouco ANS10 ANSELH) RB2 = AN8
(determinado pelo registo pouco ANS8 ANSELH) RB3 = AN9 (determinado pelo registo pouco ANS9 ANSELH) RB4 = AN11 (determinado
pelo
bit
registrar
ANS11del
ANSELH) RB4
AN11
(determinado
pelo
bit
registrar
ANS11del
ANSELH)
Cada bit desta porta tem uma funo adicional relacionada com alguns perifricos integrados, a ser descrito nos captulos seguintes.
Este porto tem vrias caractersticas que o distinguem de outros portos e pelos pinos so usados com freqncia:
Todos os pinos da porta PORTB tm resistncia pull-up integrado, que tornam perfeito para estar conectado com os
botes (teclado), interruptores e optoacopladores. A fim de conectar as portas resisitencias microcontrolador, o bit
apropriado em registo WPUB deve ser um. *
Por ter um alto nvel de resistncia (vrias dezenas de kilohms), essas resistncias "virtuais" no afetam os pinos configurados como sadas,
mas servem como um complemento til aos insumos. Estes resistores so conectados s entradas de circuitos lgicos CMOS.Caso
contrrio, eles se comportam como se estivessem flutuando com sua alta resistncia entrada.
Alm WPUB registo pouco, outro pouco afetando a instalao dos resistores pull-up. Registro pouco RBPU OPTION_REG.
Sendo habilitado, cada bit de porta PORTB configurado como uma entrada pode causar uma interrupo, alterando
seu estado lgica. A fim de permitir que o termi Nal provocar uma interrupo, o bit do registador apropriado deve ser
um IOCB.
Graas a estas caractersticas, os pinos da porta PORTB so muitas vezes utilizados para verificar os botes no teclado como infalivelmente
detectar cada aperto de boto. Portanto, no necessrio examinar todas as entradas e outra vez.
Quando o pino X, Y e Z so configurados como entradas definidas para um (1), s que precisa de esperar por um pedido de interrupo
listada com o premir de um boto. Verificaes posteriores qual boto foi ativado pela combinao de zeros e uns nas entradas.
Vamos faz-lo em mikroC ...
/ * O pino PORTB.1 configurada como entrada digital. uma interrupo ocorre com qualquer
mudar o seu estado lgico. Ele tambm tem um resistor de pull-up. Todos os outros pinos
Porto PORTB so entradas digitais. * /
...
ANSEL = ANSELH = 0; // Todos os pinos de E / S so configurados como digitais
PORTB = 0;
// Todos os pinos do porto so repostas PORTB
TRISB = 0b00000010; // Todos os pinos, exceto porta PORTB PORTB. 1
// sadas so configuradas como
RBPU = 0;
// resistores pull-up so habilitados
WPUB1 = 1;
// O resistor de pull-up est conectada ao pino PORTB.1
IOCB1 = 1;
// O pino pode PORTB.1 eles causam perturbao por
mudar o estado lgico //
RBIE = GIE = 1;
// Uma interrupo ativada
...
componentes do dispositivo conectado aos pinos do microcontrolador, todos os dispositivos adicionais devem ser desligados durante a
programao (usando resistncias ou jumpers).
Como vimos, as tenses aplicadas ao programador soquete pino so os mesmos que os utilizados durante a programao ICSP.
pelo
ANSEL
registo
ANS7
/ * O pino PORTE.0 configurado como uma entrada analgica, enquanto os outros trs
mesmos pinos de porta so configurados como digitais * /
...
ANSEL = 0b00100000; // O pino configurado como PORTE.0 analgico
ANSELH = 0;
// Todos os pinos de E / S so configurados como digitais
TRISE = 0b00000001; // Todos os pinos da porta, exceto PORTE
PORTE //. 0 so configurados como sadas
PORTE = 0;
// Todos os bits da porta PORTE esto definidas para zero
...
A regra :
bit).
Para configurar um pino como uma entrada analgica, o bit apropriado dos registos ANSEL ou ANSELH deve ser feita uma (1). Para
configurar um pino como entrada / sada digital, o bit apropriado deve ser definido como zero (0).
O estado lgico dos bits de registo ANSEL no tm efeito sobre as funes de sada digitais. Ao tentar ler um pino de porta configurado como
uma entrada analgica, o resultado sempre 0.
As chances so que voc nunca vai escrever um programa que no usam portas, de modo que o esforo para aprender tudo sobre eles
definitivamente vale a pena. No entanto, as portas so provavelmente os mdulos mais simples dentro do microcontrolador. Eles so
utilizados como se segue:
Ao projetar um dispositivo, selecione uma porta atravs da qual o microcontrolador ir se comunicar com o ambiente
perifrico. Se voc usar apenas entradas / sadas digitais, selecione qualquer porta. Se voc usar qualquer uma das
entradas analgicas, selecione as portas apropriadas de apoio, tais configurao pinos (AN0-AN13).
Cada pino de porta pode ser configurado como uma entrada ou sada. Bits do TRISA, TRISB, TRISC, TRISD e
registros trise determinar como vai levar com os pinos apropriados de portas PORTA, PortB, PORTC, PORTD e
Porte. Simplesmente ...
Se voc usar qualquer uma das entradas analgicas, primeiro voc precisa colocar um os bits apropriados dos
registros ANSEL e ANSELH no incio do programa.
Se voc usar resistores ou botes como uma fonte de sinal de entrada, conecte os pinos da porta PORTB, porque eles
tm resistores pull-up. O uso desses registros ativado por registro bit RBPU OPTION_REG, enquanto a instalao de
resistncias individuais ativado por pedaos de registro WPUB.
Muitas vezes precisa responder o mais rapidamente pinos de entrada mudar seu estado lgico. No entanto, no
necessrio escrever um programa para testar o estado lgico do pino. muito mais simples para ligar estes pinos de
porta e entradas PortB permitir uma interrupo ocorre com cada mudana de voltagem. Os bits dos IOCB e INTCON
registradores so responsveis por isso.
O microcontrolador PIC16F887 tem trs temporizadores / contadores independentes, chamados Timer0, Timer1 e Timer2. Este captulo
fornece uma descrio pormenorizada das mesmas apresentado.
A figura a seguir mostra o esboo do temporizador Timer0 com todos os bits que determinam o seu funcionamento. Estes bits so
armazenados em cadastro OPTION_REG.
OPTION_REG
RBPU - PORTB Pull-up permitir bit (porta PORTB resistncia Pull Up)
o
o
INTEDG - Interrupo de Borda Select bit (selector pouco bordo activo da interrupo externa)
o
o
PS2, PS1, PS0 - Taxa Prescaler Select bit (bit selector valor Crossover)
o
0 - Os pulsos esto sendo temporizador de entrada / balco Timer0 pelo RA4 pinos.
1 - O temporizador utiliza os pulsos de clock internos (FOSC / 4).
T0SE - TMR0 Fonte Borda Select (seletor de borda taxa de bits) bit
PS2
T0CS - TMR0 Clock Select (seletor de velocidade do clock de bits para Timer0) bit
o
o
o
o
O valor de crossover ajustado atravs da combinao desses bits. Conforme mostrado no grfico direita, a mesma
combinao de bits d diferentes valores de divisor de frequncia para temporizador / contador eo temporizador de vigilncia,
respectivamente.
PS1
0
PS0
0
TMR0
1: 2
WDT
1: 1
1: 4
1: 2
1: 8
1: 4
01:16
1: 8
01:32
01:16
1:64
01:32
1: 128
1:64
1: 256
1: 128
Quando o bit de PSA definido como 0, o divisor atribudo ao temporizador / contador Timer0, como mostrado na figura a seguir.
vazio interrupo () {
// rotina de interrupo
cnt ++;
// interrupo provoca cnt aumentou 1
TMR0 = 155;
// temporizador (ou balco) Timer0 retorna seu valor inicial
INTCON = 0x20;
// Bit T0IE 1, T0IF bit for 0
}
vazio main () {
OPTION_REG = 0x04;
// prescaler (1:32) atribudo ao temporizador Timer0
TMR0 = 155;
// Temporizador T0 conta 155-255
INTCON = 0xA0;
// gerao de interrupo habilitado para
// Timer0 temporizador
...
...
// No exemplo a seguir, Timer0 est configurado como um temporizador
// e atribudo um divisor.
OPTION_REG = 0x20;
// divisor (1: 2) atribudo ao contador Timer0
TMR0 = 155;
// contador T0 conta 155-255
INTCON = 0xA0;
// gerao de interrupo ativado pelo
temporizador // Timer0
...
...
Quando o bit de PSA 1, o divisor atribudo ao temporizador de vigilncia, como mostrado na figura a seguir.
Para atribuir o divisor para o temporizador / contador, o prescaler est definido para 0 com qualquer escrito para o
registo TMR0.
Quando voc atribui o divisor para o watchdog timer, o WDT tanto como prescaler est definido para 0 com a instruo
CLRWDT.
Ao escrever para o registo TMR0, usado como um timer, contar os impulsos no comea imediatamente, mas atrasou
dois ciclos de instruo. , portanto, necessrio para ajustar o valor escrito no registo TMR0.
Ao colocar o microcontrolador em modo de relgio oscilador est desligado. O estouro no pode ocorrer, pois no h
contagem de pulso. a razo que a interrupo pelo transbordamento de TMR0 no pode "acordar" o processador do
modo de suspenso.
Se for usado como um contador de relgio externo sem divisor, o comprimento mnimo de pulso ou o tempo morto
entre dois impulsos ser de dois Tosc + 20 ns (Tosc o perodo do sinal de relgio do oscilador).
Se usado como um contador de relgio externo com prescaler, o comprimento mnimo de pulso ou tempo morto entre
dois pulsos de apenas 10 ns.
Registro divisor de 8 bits no est disponvel para o usurio, o que significa que voc no pode ler ou escrever
diretamente para ele.
Quando a alterao da atribuio divisor de Timer0 ao watchdog timer, voc deve executar a seguinte sequncia de
instrues escritas em assembler para evitar redefinir o microcontrolador:
BANKSEL TMR0
CLRWDT
CLRF TMR0
BANKSEL OPTION_REG
BSF OPTION_REG, PSA
CLRWDT
MOVLW b'11111000 '
ANDWF OPTION_REG, W
IORLW b "00000101"
MOVWF OPTION_REG
; WDT ZERO
; ZERO TMR0 e prescaler
, para atribuir o prescaler A WDT
; WDT ZERO
, selecione o BITS PS2, PS1, PS0 e colocar
, A ZERO PARA INSTRUO 'e lgico'
; BITS PS2, PS1, e PS0 PUT VALUE
; Crossover 01:32
Da mesma forma, a alterao da atribuio prescaler da WDT para Timer0, voc deve executar a seguinte sequncia
de instrues, tambm escritos em assembler:
BANKSEL TMR0
CLRWDT
; ZERO WDT e prescaler
BANKSEL OPTION_REG
MOVLW b'11110000 '
; selecionar apenas BITS PSA, PS2, PS1, PS0
ANDWF OPTION_REG, W ; Zeroing e pela instruo 'e lgico'
IORLW b'00000011 '
; VALOR DO CROSSOVER 01:16
MOVWF OPTION_REG
O modo de temporizador selecionado pelo registo pouco TOSCANA OPTION_REG (TOSCANA: 0 = timer, 1 =
contador).
Quando o prescaler atribudo ao temporizador / contador deve redefinir o OPTION_REG pouco PSA. O valor de
crossover definida usando os bits PS2-PS0 do mesmo registro.
Ao usar uma interrupo e o bit GIE TMR0IE INTCON deve ser um.
A polaridade dos impulsos contados no pino RA4 seleccionado pelo bit de TOSE OPTION_REG (T0SE: impulsos
positivos = 0, 1 = impulsos negativos).
Vrios pulsos pode ser lido a partir do registo TMR0. O divisor e a interrupo usado da mesma maneira como no
modo de temporizador.
3.5 Timer1
O mdulo Timer1 um temporizador / contador de 16 bits, o que significa que consiste em dois registos (TMR1L e TMR1H). Voc pode
contar at 65.535 pulsos em um nico ciclo, ou seja, antes da contagem comea do zero.
Similar Timer0 timer, esses registros podem ser lidos ou voc pode escrever para eles a qualquer momento. Se ocorrer um estouro, gerada
uma interrupo, se habilitado.
Timer1 mdulo pode funcionar em um ou dois modos bsicos, que como um temporizador ou como um contador. Ao contrrio temporizador
Timer0, cada um destes dois modos tem funes adicionais.
Timer1 tem as seguintes caractersticas:
TMR1CS
Fosc / 4
Pin T1CKI
Quando voc selecionar a fonte de relgio interno, a par de registros TMR1H-TMR1L ser aumentada com vrios pulsos Fosc conforme
determinado pelo divisor.
Ao selecionar fonte de relgio externo, este timer pode funcionar como um temporizador ou um contador. Os pulsos no modo de timer pode
ser sincronizado com o relgio interno do microcontrolador ou executar de forma assncrona. Se o relgio oscilador e microcontrolador
PIC16F887 externo necessrio INTOSC oscilador interno usado com pin RA6 / OSC2 / CLIKOUT, Timer1 pode usar o oscilador LP como uma
fonte de relgio.
Prescaler Timer1
Timer1 tem um alpinista completamente separado para dividir a freqncia de clock de entrada por 1,2,4 ou 8. No possvel ler o divisor ou
escrever diretamente para ele. No entanto, o contador divisor reposto a 0 automaticamente depois de escrever aos registos TMR1H ou
TMR1L.
Timer1 OSC
A RC0 / RC1 T1OSO e / T1OSI pinos so utilizados para registrar impulsos vindos de dispositivos perifricos, mas tambm tm uma funo
adicional. Como voc pode ver na figura abaixo, eles so configurados simultaneamente como entrada (pino RC1) e sada (pino RC0)
oscilador de quartzo LP (Low Power - Low Power) adicional. Este circuito destina-se principalmente para funcionar a baixas frequncias (at
200 KHz), exactamente para a utilizao do cristal de quartzo 32,768 KHz. Este vidro usado em relgios de vidro, uma vez que fcil de
obter uma durao de impulso de um segundo, dividindo esta frequncia.
Uma vez que o oscilador no depende do relgio interno, pode funcionar mesmo em modo de espera. Ele ativado definindo um pouco do
controle T1CON registar T1OSCEN. O usurio deve fornecer o tempo de inatividade por meio de software (alguns milissegundos) para
permitir que o oscilador para iniciar corretamente.
A tabela a seguir mostra os capacitores adequados recomendadas com os valores de oscilador de quartzo. No necessrio
que estes valores so precisos. No entanto, a regra geral : quanto maior for a capacidade, maior ser a estabilidade, o que
prolonga o tempo necessrio para estabilizar o oscilador.
OSCILADOR
LP
FREQNCIA
C1
C2
32 kHz
33 pF
33 pF
100 kHz
15 pF
15 pF
200 kHz
15 pF
15 pF
O consumo atual do microcontrolador reduzida para o nvel mais baixo em modo ocioso como o mainstream do consumidor - o oscilador no est funcionando. fcil de colocar o microcontrolador desta forma - para executar a instruo SLEEP. O problema como acordar o
microcontrolador, porque s uma interrupo pode produzir. Como o microcontrolador "sleep", use uma interrupo causada por dispositivos
perifricos para "acord-la". Fica realmente complicado se necessrio, para acordar os intervalos regulares de microcontroladores ...
Para resolver o problema, um oscilador de quartzo de LP (baixo consumo de energia) completamente independente, capaz de operar em
modo de espera, integrado no microcontrolador PIC16F887. Simplificando, um circuito previamente separado agora integrado no
microcontrolador e atribudo a Timer1. O oscilador ativado definindo bit 1 T1OSCEN registo T1CON. TMR1CS pouco do mesmo registo
usado para ativar o Timer1 usando seqncias de pulsos que oscilador.
Um sinal gerado pelo oscilador de quartzo sincronizado com o relgio do microcontrolador com o bit 0
T1SYNC.Neste caso, o timer pode no funcionar em modo de suspenso porque o circuito para a sincronizao usa o
relgio do microcontrolador.
A interrupo no registo estouro Timer1 pode ser ativado. Se o bit ajustado para 1 T1SYNC tais interrupes ocorrer
em modo de espera bem.
O oscilador de relgio microcontrolador no funciona durante o modo de sono de modo que o estouro no registo temporizador no pode
causar o rompimento.
Vamos faz-lo em mikroC ...
Este contador detecta uma lgica um (1) com os pinos de entrada. Ele observa que, pelo menos, uma borda de subida deve ser detectado
antes de comear a contar os pulsos. Consulte a figura esquerda. As setas na figura indicam o contador incrementado.
Registo T1CON
T1GINV - Timer1 Porto Inverter bit (Bit inversor porto de TIMER1) comporta-se como um inversor no estado lgica do porto formado pela
T1G ou pino de sada (C2OUT) do comparador C2. Esse bit permite que o temporizador para pulsos de alcatro quando o porto est em
alta ou baixa.
1 - um temporizador conta os impulsos quando o pino T1G ou pouco C2OUT so a alta (1).
0 - 1 temporizador conta os impulsos quando o pino T1G ou pouco C2OUT so baixo (0).
TMR1GE - Timer1 Porto Ativar (Bit de permitir que o porto de TIMER1) determina se o porto formado pelo pino de sada T1G ou C2
comparador (C2OUT) est ativo ou no. Este bit funcional somente se Timer1 no (pouco TMR1ON = 1). Caso contrrio, este bit
ignorado.
T1CKPS1, T1CKPS0 - timer1 entrada de relgio pr-escala Seleccione pedaos (bits selecionando o divisor relgio sinal TIMER1) determina
o valor divisor de posturas fre atribudos a Timer1.
T1CKPS1
T1CKPS0
V AL O R D O P R E S C A L E R
1: 1
1: 2
1: 4
1: 8
T1OSCEN - LP oscilador Habilitar bit Controle (bit de habilitao Timer1 oscilador LP)
1 - LP oscilador est habilitado para Timer1 relgio (frequncia do oscilador de baixa potncia de 32,768 kHz)
0 - LP oscilador est desligado.
T1SYNC - Controle de sincronizao de entrada Timer1 relgio externo (Bit de entrada de sinal de controle de sincronizao) permite a
sincronizao da entrada do LP oscilador ou pino de entrada T1CKI com o relgio interno do microcontrolador. Este bit ignorado quando a
contagem dos pulsos do oscilador mestre (mordeu TMR1CS = 0).
TMR1CS - Temporizador TMR1 Clock Source Select bit (seleco da fonte de clock do Timer1 bit)
Porque voc no pode desligar o divisor, o seu valor deve ser definido para o bit T1CKPS1 log T1CKPS0 T1CON
(Consulte a tabela).
Selecione o modo pelo TMR1CS T1CON registo pouco. (TMR1CS: 0 = a fonte de clock oscilador de quartzo interno,
1 = a fonte de clock oscilador de quartzo externo).
Ao definir o bit T1OSCEN o mesmo registro, o oscilador est habilitado e os registros TMR1H e TMR1L so
incrementados com cada pulso de clock. Definir este bit a 0, a contagem pra.
Reiniciando do contador ou escrever para eles, o prescaler reposto.
Atravs do preenchimento de ambos os registos de timer, a bandeira TMR1IF est definido e contando comea do
zero.
3.6 Timer2
Mdulo Timer2 um temporizador de 8 bits.
Os impulsos provenientes do oscilador de quartzo de primeira passagem atravs do divisor cujo valor pode ser modificado atravs da
combinao de bits de T2CKPS1 e T2CKPS0. A sada do divisor utilizado para aumentar a iniciar TMR2 registo 00h. Os valores de TMR2 e
PR2 so constantemente comparados e registo TMR2 vai aumentar at o valor de registo PR2. Quando valores de registo so iguais, que
ser gravado pelo comparador, o TMR2 reposto a 00h automaticamente. O postescalador de Timer2 incrementado e a sua sada
utilizada para gerar uma interrupo, se habilitado.
Os dois registros TMR e PR2 so ler e escrever. A contagem pode ser interrompido colocando um bit 0 TMR2ON, resultando em economia
de energia.
O tempo de reset TMR2 pode ser usada para determinar a taxa de transmisso da comunicao serial sncrona.
Vrios bits do registro T2CON est no controle de Timer2.
Registo T2CON
TOUTPS3 - TOUTPS0 - Postcaler Timer2 sada Seleccione pedaos (bits variam seleo Splitter ps-montanhista para Timer2) so usados
para determinar o valor da ps-escalador de acordo com a seguinte tabela:
TOUTPS3
TOUTPS2
TOUTPS1
TOUTPS0
VAL O R D O P S - C L I M B E R
1: 1
1: 2
1: 3
1: 4
1: 5
1: 6
1: 7
1: 8
1: 9
01:10
01:11
01:12
01:13
01:14
01:15
01:16
T2CKPS1, T2CKPS0 - pedaos Timer2 Relgio prescaler (seleo gama de Timer2 divisor divisor) determina o valor do Crossover:
T2CKPS1
T2CKPS0
V AL O R D O P R E S C A L E R
1: 1
1: 4
01:16
No momento de se transformar uma fonte de energia, o PR2 registo contm o valor FFh.
Tanto o divisor como o ps-montanhista est desmarcada por escrito para o registo TMR2.
Tanto o divisor como o ps-montanhista est desmarcada por escrito para o registo T2CON.
Em qualquer reincio ocorrer, como pode ser antecipada, tanto como divisor so apagadas ps-scaler.
Os mdulos de CCP podem operar em muitas maneiras diferentes, de modo que considerado o mais complicado. Se voc tentar analisar
tabelas com base seu desempenho descrevendo as funes bit, voc vai entender melhor o que estamos falando. Se voc usar qualquer um
dos mdulos do PCC, primeiro selecione o modo que voc precisa, analisar o valor adequado e, em seguida, comear a mudar os bits de
registradores. Se no ...
O PCC (mdulo Capture / Compare / PWM ) um perifrico que permite medir e controlar os acontecimentos diferentes.
O modo de captura fornece acesso ao estado atual de um registro que muda constantemente o seu valor. Neste caso, o registro de
Timer1.
A modo de comparao constantemente compara valores de dois registros. Um deles o registro temporizador TMR1. Este circuito
tambm permite ao usurio acionar um evento externo aps o termo de um perodo de tempo predeterminado.
PWM ( Modulao por Largura de Pulso - modulao por largura de pulso) pode gerar sinais de frequncia e ciclo de trabalho variada por um
ou mais pinos de sada.
O microcontrolador PIC16F887 tem dois mdulos CCP - CCP1 e CCP2.
Ambos so idnticos em operao normal, enquanto caractersticas PWM melhoradas esto disponveis somente no modo de CCP1. Esta
a razo pela qual neste captulo o funcionamento do mdulo de CCP1 descrito em pormenor. Com relao CCP2, eles sero
apresentados apenas os recursos que o distinguem de CCP1.
CCP1 MDULO
A parte central deste circuito um registo CCPR1 de 16 bits que consiste CCOR1H CCPR1L e registros. Ele usado para capturar e
comparar seus valores com os nmeros armazenados na temporizador registar TMR1 (TMR1H e TMR1L).
Se ativado pelo software, reiniciando o Timer1 pode acontecer para igualar o modo de comparao de valores. Alm disso, o mdulo pode
gerar sinais de frequncia de PWM e ciclo de trabalho CCP1 variada.
Bits do registro CCP1CON est no controle do mdulo CCP1.
Uma combinao de quatro bits (CCP1M3 - CCP1M0) do registo de controlo determina qual destas eventos far com que a transmisso de
dados de 16 bits. Alm disso, voc deve atender aos seguintes requisitos ::
CCP1IF o bit de sinalizador definido como um depois de terminar a captura. Se definido como 1, o CCP1IE PIE1 pouco registro, uma
interrupo ocorrer.
Se o mdulo CCP1 est no modo de captura, uma interrupo indesejada pode ocorrer. Para evitar isso, antes de uma mudana no registro
de controle ocorrem deve ser definido como 0 para o bit que permite CCP1IE interrupo como o CCP1IF bit bandeira.
Interrupes no desejadas no pode ser produzido mudando o valor do divisor. Para evitar isso, o mdulo CCP1 deve ser temporariamente
desligado antes de alterar o valor do divisor.
A seguinte seqncia programa escrito em conjunto recomendado:
BANKESEL CCP1CON
CLRF CCP1CON
; APAGAR controle de registro
; CCP1 mdulo off
MOVLW XX
; MODO DE NOVO PR-SELECIONADOS O montanhista
MOVWF CCP1CON
; REGISTO DE CONTROLE introduzido um novo valor
; CCP1 MDULO rodam simultaneamente
Vamos faz-lo em mikroC ...
...
ASM {
BANKESEL CCP1CON
CLRF CCP1CON
// CCP1 mdulo off
MOVLW XX
MOVWF CCP1CON
}
...
Para definir o mdulo CCP1 neste modo, duas condies devem ser atendidas:
O outro exemplo, prtica comum o uso de sinais PWM de um circuito para gerar sinais de forma de onda arbitrria, tal como uma onda
sinusoidal. Veja a figura a seguir:
Dispositivos que operam neste princpio so muitas vezes utilizados na prtica como unidades de frequncia varivel que controlam os
motores elctricos (velocidade, acelerao, desacelerao, etc.)
A figura acima mostra o mdulo CCP1 diagrama de blocos definido no modo PWM. Para gerar um pulso de forma arbitrria no pino de sada
necessrio para definir o perodo de pulsos (freqncia) e durao do pulso.
PWM PERODO
O perodo de impulso de sada (T) determinado pelo registo PR2 de Timer2. O perodo de PWM pode ser calculada pela seguinte equao:
Perodo PWM = (PR2 + 1) * * 4Tosc valor de pr-escala de Timer2
Se o perodo de PWM (t) conhecido, fcil de determinar o sinal de frequncia F porque estes dois valores esto relacionados pela
equao F = 1 / T.
PWM CICLO
O ciclo de trabalho PWM especificado usando 10 bits no total: as mais significativas oito bits do registo CCPR1L e os dois bits menos
significativos do registrador CCP1CON adicionais (DC1B1 e DC1B0). O resultado um nmero de 10 bits dada pela seguinte frmula:
Largura de pulso = (CCPR1L, DC1B1, DC1B0) * * Tosc valor de pr-escala de Timer2
A tabela seguinte mostra como gerar sinais PWM de diferentes frequncias quando o microcontrolador utiliza um cristal de quartzo de 20
MHz (Tosc = 50 ns).
FREQNCIA [KHZ]
1.22
4,88
19,53
78,12
156,3
208.3
O prescaler TMR2
16
PR2 registo
FFh
FFh
FFh
3Fh
1Fh
17h
Notas adicionais:
O pino de sada est indo para obter um 1 constantemente, se voc largura de pulso gerado por engano mais longo
do que o perodo PWM.
Neste aplicativo, voc no pode usar o ps-montanhista Timer2 para gerar PWM longos perodos.
Resoluo PWM
Um sinal PWM nada mais do que uma seqncia de pulsos, que variam em ciclo de trabalho. Para uma determinada frequncia (nmero
de impulsos por segundo), h um nmero limitado de combinaes de ciclos. Este nmero representa uma resoluo, medida em bits. Por
exemplo, se uma resoluo de 10 bits de 1024 ciclos de trabalho discretas disponveis; se a resoluo de 8 bits disponveis disretos 256
ciclos de trabalho, etc. Neste microcontrolador, a resoluo determinada pelo registo PR2. O valor mximo obtido usando o nmero FFh.
Freqncias PWM e resolues (Fosc = 20MHz)
FREQNCIA PWM
1.22KHZ
4.88KHZ
19.53KHZ
78.12KHZ
156.3KHZ
208.3KHZ
Pr-escala Temporizador
16
Valor PR2
FFh
FFh
FFh
3Fh
1Fh
17h
A resoluo mxima
10
10
10
4.90KHZ
19.61KHZ
76.92KHZ
153.85KHZ
1.22KHZ
200.0KHZ
Pr-escala Temporizador
16
Valor PR2
65h
65h
65h
19h
0Ch
09h
A resoluo mxima
/ * Neste exemplo, o mdulo de PWM inicializado e ajustado para produzir uma sequncia
pulso ciclo de trabalho de 50%. Para este efeito, as funes so utilizadas
PWM1_Init () PWM1_Start () e PWM1_Set_Duty (). Todas as funes esto contidos Vendedor
PWM mikroC PRO para PIC. Voc s precisa copiar o programa * /
unsigned short duty_c;
vazio initMain () {
ANSEL = ANSELH = 0;
TRISC PORTC = = 0;
PWM1_Init (5000);
}
vazio main () {
initMain ();
duty_c = 127;
// valor inicial do ciclo de trabalho
PWM1_Start ();
// Iniciar o mdulo PWM1
PWM1_Set_Duty (duty_c); // Definir o ciclo PWM de 50%
...
...
Registo CCP1CON
P1M1, P1M0 - bits de configurao de sada PWM (bits definio do modo PWM) - O pino P1A o mdulo de captura de entrada / Compare
em todos os modos, exceto no modo PWM. O pino P1B, P1C e P1D pinos agir como I / S de porta D.
No modo de PWM estes bits afectar o funcionamento do mdulo de CCP1 como mostrado na tabela seguinte:
P1M1
0
P1M0
0
MODO
Com uma nica sada PWM
Pino
P1A
passa
um
Pines P1B, P1C e P1D so porta de entrada / sada D.
Configurao
completa
(ponte completa com acesso directo)
0
P1D
pino
Para
o
pino
Pinos P1B e P1C esto inativos.
sinal
Bridge
por
um
P1D
modulado.
Avanado
sinal
sinal
um
modulado.
modulado.
Por
pinos
P1A
e
P1B
Pines P1C e P1D so porta de entrada / sada D.
Configurao
(reverso sada em ponte)
Ponte
um
sinal
completa
P1B
pino
por
Pin
P1C
pinos P1A e P1D esto inativos.
modulado.
um
Reverse
sinal
modulado.
ativo.
est
DC1B1, DC1B0 - Ciclo de trabalho PWM bits menos significativos (bits menos significativos do ciclo PWM) - usado apenas no modo PWM e
representam dois bits menos significativos de um nmero de 10 bits. Este nmero determina o ciclo de trabalho do sinal de PWM. Os outros
8 bits so armazenados no registo CCPR1L.
CCP1M3 - CCP1M0 - (bits mdulo CCP1 seleo de modo) determina o modo do mdulo CCP1.
CCP1M3
CCP1M2
CCP1M1
CCP1M0
MODO
No utilizado.
Pinos
P1A
e
P1C
Pines P1B e P1D so baixos ativa.
Modo de PWM
Pinos
P1A
e
P1C
Pines P1B e P1D so ativos de alta.
so
ativos
de
alta.
so
ativos
de
alta.
Modo de PWM
Pinos
P1A
P1C
so
baixos
ativa.
Pinos
P1A
e
P1C
Pinos P1B e P1D so baixos ativa.
so
baixos
ativa.
CCP2 MDULO
Excluindo diferentes nomes de registradores e bits, este mdulo uma boa cpia do mdulo CCP1 definido no modo normal. A nica
diferena significativa a comparao o funcionamento em modo de mdulo CCP2. A diferena refere-se ao sinal de reset T1
timer.Especificamente, se o A / D activada, para equalizar os valores dos registos TMR1 e CCPR2, o sinal de reposio do temporizador T1
comea automaticamente a converso A / D. Semelhante ao mdulo anterior, este circuito tambm est sob o controlo dos bits do registador
de controlo. Desta vez o registro CCP2CON.
Registro CCP2CON
DC2B1, DC2B0 - Ciclo de trabalho PWM bits menos significativos (bits menos significativos do ciclo PWM) - usado apenas no modo PWM e
representam dois bits menos significativos de um nmero de 10 bits. Este nmero determina o ciclo de trabalho do sinal de PWM. Os outros
8 bits so armazenados no registo CCPR2L.
CCP2M3 - CCP2M0 - Modo CCP2 Escolha pedaos (bits mdulo CCP2 seleo de modo) determina como o mdulo CCP2.
CCP2M3
CCP2M2
CCP2M1
CCP2M0
MODO
No utilizado.
No utilizado.
No utilizado.
Modo de captura
Cada borda de descida no pino CCP2.
Modo de captura
Cada borda de subida no pino CCP2.
Modo de captura
Toda quarta borda de subida no pino CCP2.
Modo de captura
Cada borda de subida XVI no pino CCP2.
Para efeitos de comparao
A partida ocorre pouco e CCP2IF definido como 1 em um jogo.
Para efeitos de comparao
A sada definido como 0 e pouco CCP2IF definido como 1 em um jogo
de ocorrer
Para efeitos de comparao
Uma interrupo ocorre, o bit CCP2IF definido como 1 e nenhum pino
mudana CCP2 de prender um jogo ocorrer.
Para efeitos de comparao
Modo de PWM
Desativar a sada pino CCP1. Ele deve ser configurado como entrada.
Selecione o perodo de sinal PWM para inserir o valor no registo PR2.
Configure o mdulo CCP1 para operar no modo PWM atravs da combinao de bits do registo CCP1CON.
Ajustar o ciclo de trabalho da entrada de sinal PWM o valor no registro CCPR1L e usar pedaos e DC1B0 DC1B1
registo CCP1CON.
Configurar e iniciar Timer2:
o
o
o
o
Ativar pino de sada PWM depois de ter sido terminado ciclo PWM:
o
o
Espere Timer2 estouro (bit TMR2IF registo PIR1 est definido para um)
Configurando o pino apropriado como uma sada para redefinir o bit no registo TRIS.
MODO DE HALF-BRIDGE
Quanto ao modo de meia-ponte, o sinal de PWM sada no pino P1A, enquanto que tanto o sinal de PWM uma sada no pino
complementar P1B. Esses pulsos ativar os drivers MOSFET no modo Half-ponte que ativar / desativar o fluxo de corrente atravs do
dispositivo.
Desta forma muito perigosa transformando os controladores MOSFET simultaneamente (a curto produzido nessa altura seria fatal). Para
evitar isso, necessrio prever um tempo morto entre condutores e fora do tempo. Este tempo morto marcado com 'td' ( tempo de atraso )
na figura a seguir. O problema resolvido usando pedaos PDC0-PDC6 registro PWM1CON.
Como se mostra na figura abaixo, o modo de meia-ponte podem ser utilizados para activar condutores MOSFET na configurao em ponte
completa:
MODO DE FULL-BRIDGE
Todos os quatro pinos so utilizados como sadas no modo de ponte completa. Na prtica, este modo muitas vezes usado para ativar o
motor, o que proporciona uma velocidade simples, completo e direo do controle de rotao. H duas configuraes neste modo: Full
Bridge-Avanado (ponte completa com acesso directo) e Full Bridge-Versos (reverso sada em ponte).
A lgica de um (1) aparece no pino P1A (pino est ativo em nvel alto);
Seqncia de pulso aparece no pino P1D; e
A lgica zero (0) nas P1b e P1C pinos (pinos so ativos baixo).
A figura a seguir mostra o estado dos pinos P1A-P1D durante um ciclo PWM completo:
A lgica de um (1) aparece no pino P1C (pino est ativo em nvel alto);
Seqncia de pulso aparece no pino P1B; e
A lgica zero (0) aparece no P1A e P1D pinos (pinos so ativos baixo).
Registro PWM1CON
STRC PWM Restart Habilitar bit (Bit permitir PWM reset automtico)
1 - Depois de um desligamento automtico, o mdulo PWM reiniciar automaticamente, e log ECCPASE ECCPAS bit
redefinido.
0 - Para Iciar o mdulo PWM aps um desligamento automtico, ECCPASE bit deve ser afastada pelo software.
PDC6 - Contagem PDC0 PWM Delay pedaos (bits de definio do modo PWM tempo morto) - O nmero binrio de 7 dgitos determina
o nmero de ciclos em trues (4Tosc) adicionado como morto pela ativao de pinos de entrada tempo PWM.
Registro PSTRCON
STRSYNC - sinc de bit de direco (direco de sincronizao de bit) determina quando o sentido dos impulsos PWM:
1 - A direo ocorre aps o registro foi alterado PSTRCION somente se forma de onda PWM completa.
0 - A localizao ocorre aps o registo PSTRCION foi alterado. O pino de sada do sinal de PWM ser mudado
imediatamente independentemente do facto de o ciclo anterior tenha sido concluda. Este procedimento til quando
voc precisa parar a transmisso de um sinal PWM do pino.
STRD - Direco Habilitar bit D (D Ativar endereo bit) determina a funo do pino P1D.
1 - O pino tem a forma de onda P1D PWM determinada pela polaridade e bits CCP1M1 CCP1M0.
0 - Pin est configurado como entrada de propsito geral / sada porta PORTD.
STRC Steering Habilitar bit C (C Ativar endereo bit) determina a funo do pino P1C.
1 - O pino tem a forma de onda P1C PWM determinada pela polaridade e bits CCP1M1 CCP1M0.
0 - Pin est configurado como entrada de propsito geral / sada porta PORTD.
STRB - Direco Habilitar bit B (B Ativar endereo bit) determina a funo do pino P1B.
1 - O pino tem a forma de onda P1B PWM determinada pela polaridade e bits CCP1M1 CCP1M0.
0 - Pin est configurado como entrada de propsito geral / sada porta PORTD.
STRA - Direco Habilitar bit A (bit para possibilitar endereo) determina a funo do pino P1A.
1 - O pino tem a forma de onda P1A PWM determinada pela polaridade e bits CCP1M1 CCP1M0.
0 - Pin est configurado como entrada de propsito geral / sada porta PORTC.
ECCPAS Registro
ECCPASE - PEAC Auto-bit Shutdown Event Status (bit de estado de desligamento automtico) indica se o desligamento automtico do
mdulo CCP (estado OFF) ocorreu:
ECCPAS2 - ECCPAS0 - ECCP de desligamento automtico Fonte Selecione pedaos (bits de seleo de fonte de desligamento
automtico) Seleciona a fonte de desligamento automtico.
E C C P AS 2
E C C P AS 1
E C C P AS 0
F O N T E O F F E S TAD O
PSSAC1, PSSAC0 - Pins P1A, P1C desligamento bits de controle de Estado (configurao pedaos do pino P1A e P1C em modo de
desligamento), define o estado lgico do pino P1A e P1C quando o mdulo CCP est no estado desligado.
PSSAC1
PSSAC0
E S T AD O L G I C O D O P I N O
PSSBD1, PSSBD0 - Pins P1B, P1D desligamento bits de controle de Estado (bits Configurando o P1B e pin P1D em modo de
desligamento) define o estado lgico do P1B e pin P1D quando o mdulo CCP est no estado desligado.
PSSBD1
PSSBD0
E S T AD O L G I C O D O P I N O
O microcontrolador PIC 16F887 possui vrios mdulos de comunicao em srie independentes, cada uma tambm pode ser configurado
para operar em modos diferentes. Isso o que os torna insubstituvel em muitos casos. Lembre-se do que dissemos sobre os mdulos CCP
como o mesmo se aplica aqui. No se preocupe com os detalhes da operao de todos os mdulos, basta selecionar um e usar o que voc
realmente precisa.
EUSART
O receptor / transmissor Universal Synchronous / Asynchronous Aprimorado (Enhanced Universal Synchronous Asynchronous
Receiver Transmitter - EUSART) mdulo uma comunicao perifrico de entrada / sada serial. Ele tambm conhecido
como interface de comunicao de srie (interface de comunicao serial - SCI). Ele contm os geradores de sinais de relgio,
tampes e registos de deslocamento necessrios para a transmisso em srie de entrada / sada de dados,
independentemente dos dados de programa do dispositivo de execuo. Como o prprio nome sugere, alm de usar o relgio
para sincronizao, este mdulo pode definir a conexo assncrona, o que o torna nico para algumas aplicaes. Por
exemplo, se difcil ou impossvel de fornecer canais especiais para transmisso e recepo de dados e de sinais de relgio
(por exemplo, infravermelhos ou de rdio remoto), o mdulo EUSART definitivamente a melhor opo.
A built-in PIC16F887 EUSART tem as seguintes caractersticas:
Figura abaixo mostra uma maneira comum de se conectar microcontrolador PIC que usam mdulo EUSART. O circuito RS-232 utilizado
como um conversor de nivel de tenso.
Para habilitar a transmisso de dados via mdulo EUSART, necessrio configur-lo para trabalhar como um transmissor. Em outras
palavras, necessrio definir o estado dos bits seguintes:
A parte central do transmissor EUSART ocupa o registo de deslocamento TSR que no est diretamente disponvel para o usurio. Para
iniciar a transmisso de dados, o mdulo deve ser ativado definindo um pouco TXEN do TXSTA. O envio de dados a serem escritos para o
registo TXREG, resultando na seguinte sequncia de eventos:
Para transmitir um dados de 9 bits necessrio colocar um TX9 do TXSTA pouco. O registro TX9D TXSRTA bit o nono bit e os mais
significativos. Ao transmitir um dados de 9 bits, o TX9D bit de dados deve ser escrito antes dos 8 bits menos significativos do registo TXREG
est escrito. Todos os nove bits de dados so transmitidos para o registo de deslocamento TFR imediatamente aps a escrita at o registro
TXREG.
Semelhante ao lanar o transmissor EUSART, para permitir que o receptor tem de definir as seguintes bits:
CREN = 1 - O receptor EUSART est habilitado, definindo um pouco CREN de RCSTA registo;
SYNC = 0 - O EUSART est configurado para operar no modo assncrono para redefinir o bit SYNC do TXSTA
registo; e
SPEN = 1 - Ao colocar um pouco SPEN do RCSTA, o EUSART est habilitado eo pino RX / DT automaticamente
configurado como uma sada. Se o bit simultaneamente usado para alguma funo analgica, deve desha bilitar a
zero o bit correspondente do registo ANSEL.
Depois que eles terminaram o primeiro passo necessrio detectado o bit de incio (START), os dados so transmitidos para o RSR registo
de deslocamento atravs do pino RX. Tendo recebido o bit de parada (STOP), ocorre o seguinte:
Outro tipo de erro chamado de erro de sobrescrita (erro de saturao). Como mencionado acima, o registo FIFO pode armazenar apenas
dois caracteres. Substituir um erro ocorre quando o registo recebe o terceiro personagem. Simplesmente no h espao para armazenar um
byte, portanto, um erro inevitvel. Quando este erro ocorre, o bit OERR do RCSTA est definido para um. As consequncias so:
Os dados armazenados nos registos FIFO (2 bytes) pode ser lido normalmente;
Mais dados no sero recebidos at o bit OERR ajustado para zero; e
Este bit no diretamente acessvel. Para elimin-la, voc precisa redefinir o bit CREN do RCSTA registo ou sistema
EUSART reincio para zerar o bit SPEN do RCSTA.
DETECO DE ENDEREO
Quando o bit registo ADDEN RCSTA estiver definido, o mdulo EUSART capaz de receber apenas os dados de 9 bits, ao passo que todos
os 8 bits de dados so ignorados. Embora parea uma restrio, este modo permite a comunicao serial entre vrios microcontroladores. O
princpio de funcionamento muito simples. O dispositivo mestre envia um 9-bit de dados que representam o endereo de um
microcontrolador escravo. No entanto, todos devem ter o ADDEN bit definido para um, porque desta forma a direco de deteco
activado. Todos os microcontroladores escravos que compartilham a mesma linha de transmisso, receber estes dados (endereo) e verificar
automaticamente se ele corresponde a seu prprio endereo. O software, no qual o jogo de endereo ocorre, deve desabilitar a deteco de
endereo, limpando o ADDEN pouco.
O dispositivo mestre continua a enviar dados para o microcontrolador de 8 bits. Todos os dados que passam atravs da linha de transmisso
s ser recebido pelo mdulo EUSART destinatrios. Uma vez recebido o ltimo byte, o microcontrolador escravo deve colocar um pouco
ADDEN para permitir a deteco de endereo novo.
TXSTA registo
CSRC - Clock Source Select bit - (seleo bit da fonte de relgio) determina a fonte de relgio. utilizado somente no modo sncrono.
TX9 - 9-bit Transmit Habilitar bit (ativar o modo de bit de transmisso de 9 bits)
1 - transmission habilitado.
0 - transmisso desativado.
SENDB - Enviar pouco pausa personagem (manipulao de caracteres Ruptura pouco no modo assncrono) usado apenas no modo
assncrono e quando ele obrigado a obedecer ao padro de barramento LIN.
1 - um personagem enviado ruptura na prxima transmisso (definido como 0 por hardware quando terminar o
transporte).
0 - Envio de carter transmisso Ruptura concluda.
BRGH - alta taxa de Baud Select bit (bit de modo selecionar alta velocidade modo assncrono). Determina a velocidade de transmisso em
modo sncrono. Ele no afecta a EUSART no modo sncrono.
TRMT - Transmitir a tecla Shift pouco Register Estado (status bit registo de deslocamento de transmisso)
TX9D - pouco Nove de Transmisso de Dados (valor do nono bit na transmisso) pode ser usado como endereo ou bit de paridade ou
para distinguir entre endereos ou dados nas master-slave) nibus.
RCSTA registo
SREN - Single ReceiveEnable bit (bit permitir a recepo simples). Ele usado somente no modo sncrono e funcionando como Mestre.
CREN - Continuous Receba Habilitar bit (bit permitir a recepo contnua) aos actos dependendo do modo EUSART.
Modo assncrono:
1 - Recepo habilitado.
0 - Recepo desativado.
Modo sncrono:
ADDEN - Endereo Detectar Habilitar bit (bit habilitar a deteco de direo) modo usado apenas para detectar a direo.
1 - Permite a deteco de endereo (apenas um byte recebido no registo receber mudana processado se o nono bit
definido)
0 - deteco de endereo desactivado (todos os bytes recebidos no registador de deslocamento de recepo so
processados independentemente do valor do nono bit recebido). O nono bit usado como bit de paridade.
RX9D - bit Nona dos dados recebidos Nenhum erro ocorreu substituir.
O valor de um nmero escrito nestes dois registos determina a taxa de transmisso. Alm disso, mordeu BRGH TXSTA cadastre eo
BAUDCTL BRGH16 registo pouco afetar a freqncia de clock utilizada para o clculo da transmisso.
O valor de um nmero escrito nestes dois registos determina a taxa de transmisso. Alm disso, mordeu BRGH TXSTA cadastre eo
BAUDCTL BRGH16 registo pouco afetar a freqncia de clock utilizada para o clculo da transmisso.
BITS
T AX A D E T R A N S M I S S O F O R M U L A
SYNC
BRG1G
BRGH
8 bits / assncrona
8 bits / assncrona
16bit / assncrona
16bit / assncrona
Fosc / [4 (n + 1)]
8 bits / sncrono
Fosc / [4 (n + 1)]
16bit / Synchronous
Fosc / [4 (n + 1)]
As tabelas nas pginas seguintes contm valores que devem ser escritos em 16 bits registar SPBRG e atribudo ao SYNC, BRGH e BRGH16
bits para alguns valores do padro de transmisso velocidade de transmisso. A frmula para calcular a taxa de transmisso:
Registro BAUDCTL
ABDOVF - Auto-Baud Detectar pouco Overflow (taxa de auto-deteco de estouro de transmisso bit) usado apenas no modo
assncrono durante a deteco da velocidade de transmisso.
RCIDL - Receba ocioso pouco Bandeira Sem transbordamento ocorreu durante a deteco automtica.
SCKP - Synchronous Relgio Polaridade Select pouco . (Bit de polaridade Seleco do sinal de relgio no modo sncrono). O estado
lgica desse pouco difere consoante o modo EUSART est ativo
Modo assncrono:
Modo sncrono:
BRG16 16-bit Taxa de Transmisso Generator bit - (bit de habilitao de bauds gerador taxa de 16-bit) determina se o SPBRGH registo
ser utilizado, ou se o BGRG temporizador tem 8 ou 16 bits.
WUE Wake-up Habilitar bit (bit de modo permitir a auto-ativao em modo assncrono):
1 - modo de auto-ativao habilitado. O aguarda receptor para a borda de descida aparece no pino RC7 / RX / DT para
o microcontrolador acorda do sono.
0 - modo de auto-ativao habilitado. Receiver opera normalmente.
Abden - Auto-Baud Detectar Habilitar bit (bit permite a deteco automtica de velocidade de transmisso) usado apenas no modo
assncrono.
1 - Modo de deteco automtica habilitada. Ao detectar a velocidade de transmisso, o bit ajustado para um
automaticamente.
0 - Modo de deteco automtica desativada.
UART1_Write (uart_rd);
}
}
}
Transmisso serial assncrona via registros mdulo EUSART
1. A taxa de transmisso desejada deve ser definida pelo BRGH (TXSTA) e BRG16 (log BAUDCTL) bits e SPBRG SPBR
e registros.
2. A taxa de transmisso desejada deve ser definida pelo BRGH (TXSTA) e BRG16 (log BAUDCTL) bits e SPBRG SPBR
e registros.
3. A taxa de transmisso desejada deve ser definida pelo BRGH (TXSTA) e BRG16 (log BAUDCTL) bits e SPBRG SPBR
e registros.
4. A transmisso de dados ativado por colocar um pouco TXEN do TXSTA. O bit TXIF do registo PIR1 automaticam
ajustado para um.
5. TXEN pouco para causar uma interrupo, tanto o log TXIE PIE1 pouco como bits GIE, PEIE do registo INTCON deve
definido como um.
6. Em uma transmisso de dados de 9 bits, o valor do nono bit dever ser escrito em pouco TX9D TXSTA registo.
7. A transmisso comea quando os dados de 8 bits no balco de registo TXREG est escrito.
Recepo de srie assncrona via registros mdulo EUSART:
1. A taxa de transmisso desejada deve ser definida pelo BRGH (TXSTA) e BRG16 (log BAUDCTL) bits e SPBRG SPBR
e registros.
2. O bit SYNC (TXSTA) deve ser ajustado para zero e mordeu SPEN (registo RCSTA) deve ser definido como um para a
a porta serial.
3. Ambos log RCIE PIE1 pouco como bits GIE e PEIE do registo INTCON deve ser definido como um, se necessrio
permitir a recepo de dados provoca uma ruptura.
4. Para receber dados de 9 bits, pouco RX9 (registo RCSTA) deve ser definido como um
5. Recepo de dados ativado por colocar um pouco CREN do RCSTA.
6. O RCSTA deve ser lido para obter informaes sobre a ocorrncia de erros durante a recepo. O valor do nono
armazenado neste log que em receber dados de 9 bits.
7. Os dados de 8 bits recebidos sero armazenados no registo RCREG e deve ser lido para obter esses dados.
Ajuste o modo de deteco de direo:
1. A taxa de transmisso desejada deve ser definida pelo BRGH (TXSTA) e BRG16 (log BAUDCTL) bits e SPBRG SPBR
e registros.
2. O bit SYNC (TXSTA) deve ser ajustado para zero e mordeu SPEN (registo RCSTA) deve ser definido como um (1)
ativar a porta serial.
3. Ambos log RCIE PIE1 pouco como bits GIE e PEIE do registo INTCON deve ser definido como um, se necessrio
permitir a recepo de dados provoca uma ruptura.
4. Bit RX9 RCSTA deve ser um.
5. O ADDEN RCSTA registo deve ser um pouco, o que permite que os dados a ser reconhecido como o sentido.
6. Recepo de dados ativado por colocar um pouco CREN do RCSTA.
7. Assim como dados de 9 bits, o bit RCIF do registo recebimento PIR1 ser automaticamente ajustado para um.Se ativ
ocorre uma interrupo.
8. O RCSTA deve ser lido para obter informaes sobre a ocorrncia de erros durante a transmisso. O nono bit RX9D
sempre um.
9. Os dados de 8 bits recebidos sero armazenados no registo RCREG e devem ser lidas. Eles devem verificar
combinao desses bits corresponde ao endereo pr-definido. Se ele corresponder, voc precisa redefinir o RC
pouco ADDEN, que permite receber dados de 8 bits.
Como se mostra na figura abaixo, um mdulo MSSP representa apenas uma metade de uma necessidade de estabelecer um hardware de
comunicaes de srie, enquanto a outra metade est armazenada no dispositivo que troca dados. Embora os mdulos em ambas as
extremidades da linha so o mesmo, os seus modos de operao diferem substancialmente dependendo se o mdulo funciona
comoprincipal ou escravo :
Se o microcontrolador a ser programado controla outro dispositivo ou circuito (perifricos), que deve funcionar como um
dispositivo mestre. Este mdulo gera um sinal de relgio, quando necessrio, ou apenas quando for necessrio receber e transmitir dados
por software.Portanto, o estabelecimento de conexo depende apenas do dispositivo mestre.
Caso contrrio, se o microcontrolador programado para ser integrado num dispositivo mais complexo (por exemplo um PC) dever funcionar
como um dispositivo secundrio. Como tal, um escravo deve sempre esperar at que um dispositivo master envia um pedido de transmisso
de dados.
MODO SPI
O modo SPI permite a transmisso e recepo simultneas de dados de 8 bits por meio de trs linhas de entrada / sada
Alm disso, existe uma quarta linha (SS) que pode ser usado se as trocas de dados do microcontrolador com vrios dispositivos
perifricos. Consulte a figura a seguir.
SS - Slave Select (Seleo de escravo) - uma linha adicional usado para selecionar um dispositivo especfico. Esta linha est ativa apenas
se o microcontrolador opera como um escravo, ou quando o dispositivo externo - professor exige a troca de dados. Quando operando em
modo SPI, o mdulo MSSP usa quatro registradores no total:
Os trs primeiros registros so de leitura / gravao e pode ser alterado a qualquer momento, enquanto o quarto, uma vez que no
acessvel, usado para converter o formato de dados em srie.
Tal como mostrado na figura a seguir, a parte central do mdulo SPI consiste em dois registos ligados aos pinos de recepo, de transmisso
e de sincronizao.
O registador de deslocamento (SSPRS) est directamente ligado aos pinos do microcontrolador e utilizado para o formato de transmisso
de dados em srie. O registro tem SSPRS e para fora para mover dados para dentro e para fora do dispositivo. Em outras palavras, cada bit
aparecendo numa entrada (linha de recepo) move-se simultaneamente uma outra parte para a sada (linha de transmisso).
O SSPBUF (log tampo ) uma parte da memria usado para armazenar temporariamente os dados antes de serem enviados, ou
imediatamente aps terem sido recebidas. Depois de todos os 8 bits foram recebidos, o byte movido de registo para registar SSPRS
SSPBUF. Este processo de criao de um buffer duplo para receber os dados podem comear a receber o prximo byte antes de ler os
dados que acabou de ser recebidos. Durante a transmisso / recepo de dados de uma tentativa de escrever uma entrada no log SSBUF
ignorado. Do ponto de vista de um programador, este registro considerado o mais importante porque foi acessada com mais
freqncia.Especificamente, se deixarmos de lado o modo de ajuste, a transmisso de dados atravs do mdulo SPI nada mais do que ler
e gravar dados deste registo, enquanto os outros "truques" como mover os registros so mantidos automaticamente pelo hardware.
Vamos faz-lo em mikroC ...
// Peripheral Seleccin_de_chip
sbit Chip_Select_Direction em TRISC0_bit; // Bit TRISC0 define o RC0 pino como entrada ou sada
int no assinado valor;
// Os dados devem ser enviados do tipo unsigned
int
vazio main () {
= ANSELH ANSEL = 0;
// Todos os pinos de I / S so digitais
TRISB0_bit = TRISB1_bit = 1; // Definir o pino RB0, RB1 como entradas
Chip_Select = 0;
// Selecione o chip perifrico
Chip_Select_Direction = 0;
// Set CS pino de sada #
SPI1_Init ();
// Inicializar o mdulo SPI
SPI1_Write (valor);
// enviar o valor para o chip perifrico
...
Passo
1.
Os dados a transmitir deve ser escrito no registo tampo SSPBUF. Se o mdulo SPI opera no modo mestre, o microcontrolador
executa automaticamente a sequncia da sequncia 2,3 e 4. Se o mdulo SPI opera no modo escravo, o microcontrolador no
executar a sequncia dos passos que se seguem, at os pinos detecta SCK sinal de relgio.
Passo
2.
Passo
3.
Os dados so deslocados para o pino de sada (bit mais significativo MSB primeiro move -) enquanto que, simultaneamente, o
registo carregado com pedaos de o pino de entrada. No modo mestre do prprio microcontrolador gera relgio, enquanto o
modo Slave usa relgio externo (pino SCK).
Passo
4.
O SSPSR est cheio depois de terem sido recebidos 8 bits de dados, o que indicado, colocando um pouco de BF registo
SSPSTAT eo bit SSPIF do registo PIR1. Os dados recebidos (um byte) so movidos automaticamente a partir do registo
SSPBUF SSPSR registo. Como a transmisso de dados em srie executado automaticamente, o programa restante executa
normalmente enquanto a transmisso de dados est em andamento. Neste caso, a funo pouco SSPIF para gerar uma
interrupo para parar a transmisso de um byte.
Passo
5.
Finalmente, os dados armazenados na SSPBUF est pronto para ser utilizado e deve ser movido para o registo desejado.
Modo I 2 C
O modo I 2 C (barramento inter-circuito integrado) apropriado para utilizao quando o microcontrolador deve trocar dados com um
dispositivo integrado dentro de um circuito. Estas so muitas vezes outros microcontroladores ou circuitos integrados especializados e
baratos que pertencem a uma nova gerao de chamadas "perifricos inteligentes" (sensores de temperatura, as memrias, os relgios de
tempo real, etc.)
Semelhante ao serial no modo SPI, a transmisso de dados o modo bidirecional sncrona e I2C. Desta vez, apenas dois pinos so
utilizados para a transmisso de dados. Estes so os pinos SDA (dados seriais) e SCL (relgio de srie). O usurio deve configurar esses
pinos como entradas ou sadas por pedaos TRISC.
Ao observar as regras especficas (protocolos), permitindo assim a conexo simultnea de uma maneira simples de diferentes componentes
112 usando apenas dois pinos valioso E / S. Vamos ver como funciona o sistema:
O relgio necessrio para sincronizar a operao de ambos os dispositivos, sempre gerado por um dispositivo principal (microcontrolador)
e a sua frequncia afecta directamente a velocidade de transmisso de dados. Embora no haja um protocolo que permite que uma
frequncia mxima de relgio de 3,4 MHz (o chamado barramento I2C alta velocidade), este livro abrange apenas o protocolo mais utilizada,
com frequncia de relgio de 100 KHz limitado. A frequncia mnima no limitado.
Quando os componentes mestre e escravo so sincronizados pelo relgio, o mestre sempre comea cada troca de dados. Uma vez que o
mdulo MSSP foi ativado, ele dever comear a condio (condio de incio) ocorre. O primeiro dispositivo mestre envia o bit de incio (
zero) pelo pino de SDA, em seguida, o endereo do dispositivo secundrio de 7 bits seleccionada e, finalmente, o bit que requer o dispositivo
de gravao (0) ou ler (1) dados enviados. Em outras palavras, os oito bits so deslocados para a SSPSR condio de arranque aps
ocorrer. Todos os dispositivos escravos que compartilham a mesma linha de transmisso receber simultaneamente o primeiro byte, mas
apenas contm o endereo de correspondncia receber a coisa toda.
Uma vez que o primeiro byte enviado (somente dados de 8 bits so transmitidos), o mestre colocado em recepo e espera dispositivo de
reconhecimento de receptor sobre o endereo de correspondncia.
Se o dispositivo envia um escravo reconhecer bit (1) de transmisso de dados ir continuar at que o dispositivo mestre (microcontrolador)
envia o bit de parada (Stop).
Esta uma explicao simples de como dois componentes se comunicar. Este microcontrolador capaz de controlar situaes mais
complicadas quando 1.024 diferentes componentes esto ligados (endereo 10-bit), compartilhada por vrios dispositivos mestres
diferentes. Claro, estes dispositivos so raramente usados na prtica de modo que no necessrio discuti-los em detalhe.
A figura a seguir mostra o diagrama de blocos do modo de mdulo MDSSP I 2 C.
Em uma operao de I 2 C com o mdulo MSSP envolveu seis registros. Alguns deles so mostrados na figura anterior.
SSPCON
SSPCON2
SSPSTAT
SSPBUF
SSPSR
SSPADD
SSPSTAT registo
Modo escravo SPI - Este bit deve ser limpo quando SPI utilizado no modo escravo.
CKE - Clock Borda Select bit (seleo clock bit) seleciona o modo de sincronizao.
CKP = 0:
CKP = 1:
R / W - Read Write bit (bit de informao de leitura / gravao) usado apenas no modo I 2 C. Este bit contm informaes bit L / E aps o
endereo cident ltima moeda. Este bit s vlida a partir do endereo de correspondncia para o prximo bit de incio, bit de parada e
nenhum bit de ACK.
Modo IC no modo escravo
1 - leitura de dados.
0 - Escrever dados.
1 - Transmisso em andamento.
0 - transmisso no est em andamento.
UA - Atualizao pouco Endereo (direo ativao bit) utilizado somente no modo I 2 C 10-bit.
SSPSTAT registo
1 - coliso detectada. No SSPBUF cadastre-se que foi escrito quando no tenham cumprido as condies para iniciar
uma transmisso.
0 - Nenhuma coliso.
1 - Um novo byte recebido quando o SSPBUF ainda mantm os dados para riores. Como no h espao para
receber novos dados, um dos dois bytes devem ser apagados. Neste caso, os dados armazenados na SSPSR no
podero ser recuperados.
0 - dados de srie recebido corretamente.
SSPEN - Porta Serial Synchronous Habilitar bit (SSP permitir mdulo bit - porta serial sncrona) determina a funo dos pinos do
microcontrolador e inicializa o mdulo MSSP:
Modo SPI
1 - Permite que o mdulo MSSP e configura SCK, SDO, SDI e SS pinos como fonte de porta serial pino.
0 - desativa o mdulo MSSP e configura esses pinos como os pinos da porta de E / S.
Modo IC
1 - Permite que o mdulo MSSP e configura o SDA e SCL pinos como fonte de porta serial pino.
0 - desativa o mdulo MSSP e configura esses pinos como os pinos da porta de E / S.
CKP - Clock Polaridade Select bit (seleo polaridade relgio bit) no utilizado no modo mestre IC.
Modo SPI
Slave IC
SSPM3-SSPM0 - Synchronous Serial Port Mode Escolha pedaos . . (Seleo do modo de Bit SSP (Synchronous Serial Port) O modo
SSP determinado pela combinao dos seguintes bits:
SSPM3
SSPM2
SSPM1
SSPM0
MODO
Modo escravo SPI, SS pin pin deficientes SS controle pode ser usado como I / S.
No utilizado.
No utilizado.
No utilizado.
Modo escravo I2C, endereo de 7 bits usado, pedaos de incio (START) e parar
(STOP) permitir interrupo.
I2C modo Slave, endereo de 10 bits usado, pedaos de incio (START) e parar
(STOP) permitir interrupo.
Registro SSPCON2
Slave IC nica
1 - Sem reconhecimento.
0 - Reconhecimento.
1 - Indica uma sequncia de reconhecimento em SDA e SCL pinos e transmite o ACKDT pouco. Automaticamente
limpo por hardware.
0 - sequncia de reconhecimento em repouso.
1 - Indica uma condio de parada em SDA e SCL pinos. Ento, este bit automaticamente limpo por hardware.
0 - condio de parada ocioso.
RSEN - repetida condio de incio pouco Ativado (bit permitir condio de incio repetida)
Modo Master IC nica
1 - Indica condio de incio da repetio em SDA e SCL pinos. Ento, este bit automaticamente limpo por hardware.
0 - Repetir Start Condition resto.
SEN - START Estado Habilitado / estiramento pouco Ativado (bit permitir condio de incio)
Modo Master IC nica
1 - Indica condio de incio da SDA e SCL pinos. Ento, este bit automaticamente limpo por hardware.
0 - Comece a condio ociosa.
Master Mode IC
O caso mais comum que um microcontrolador funes como um mestre e escravo perifrica. por isso que este livro apenas desta
forma. Entende-se que o endereo consiste de 7 bits e um dispositivo contm apenas um microcontrolador (dispositivo mestre nico).
Para ativar o mdulo MSSP neste modo, siga as instrues abaixo:
Definir a taxa de transmisso (SSPADD registo), gire o controle de velocidade de rotao (para colocar um pouco de SMP SSPSTAT registo)
e selecionar o modo de mestre (registro SSPCON). Depois de concluir todas as configuraes e ativar o mdulo (registo SSPCON: pouco
SSPEN), voc deve esperar para os circuitos de controlo interno com um sinal indicando que tudo est pronto para a transmisso de dados,
ou seja, o bit de log SSPIF PIR1 foi definido para um.
Depois de definir este bit para zero por software, o microcontrolador est pronto para trocar dados com perifricos.
Mximo de 112 circuitos integrados (dispositivos de escravos) podem utilizar simultaneamente a mesma linha de transmisso. O primeiro
byte de dados enviado pelo dispositivo mestre contm o endereo corresponde a um nico endereo de dispositivo secundrio. Todos os
endereos esto listados nas respectivas folhas de dados. O oitavo bit do primeiro byte de dados especifica o sentido de transmisso de
dados, ou se o microcontrolador est a enviar ou receber dados. Neste caso, como a transmisso de dados, o oitavo bit ajustado para
zero (0).
Quando a coincidncia de endereo ocorre, o microcontrolador tem que esperar para o dispositivo escravo envia o bit de reconhecer, por isso
vai redefinir o bit de registro ASKSTAT SSPCON2. Uma vez que o endereo de coincidncia ocorreu adequadamente, cada byte de dados
transmitido da mesma forma.
A transmisso de dados termina activando um pouco SSPCON2 log SEN. Condio de parada ocorre (STOP), que permite que o pino SDA
recebe uma seqncia de pulsos:
Home - Endereo - Reconhecimento - Dados - Reconhecimento .... Dados - Reconhecimento - Pare!
//
//
//
//
//
BF (SSPSTAT, 0) - Ao transmitir dados, este bit definido como um ao escrever no SSPBUF e permanece definido para um at que o byte
em formato de srie movimento SSPRS log. No modo de recepo, este bit definido como um ao carregar dados ou um endereo para o
SSPBUF. Ele limpo depois de ler o SSPBUF.
SSPOV (SSPCON, 6) - Em modo de receber, este bit definido como um quando um novo byte no SSPSR via comunicao
serial, mesmo sem ler os dados anteriormente recebidos da SSPBUF.
SDA e pinos SCL - quando o mdulo SSP est habilitado, estes pinos so novamente sadas de drenagem aberto. Isto
significa que a resistncia deve ser ligada outra extremidade ligada ao plo positivo da fonte de alimentao.
Para estabelecer comunicao serial no modo I2C, voc deve fazer o seguinte:
Ajuste o mdulo e enviar o endereo:
Transmitir os dados:
Receber dados:
Alm de ter um grande nmero de I / S utilizada para a comunicao com os perifricos, o PIC16F887 contm 14 entradas
analgicas.Devido a estes, o microcontrolador pode no s reconhecer se um pino conduzida baixa ou alta (ou 0 + 5V), que pode medir
com preciso a tenso e convert-lo em um valor numrico, que , em formato digital.
O conversor gera um 10-bit resultado binrio usando o mtodo de aproximaes sucessivas e armazena os resultados
de converso para os registradores ADC (ADRESL e ADRESH);
Ele tem 14 entradas analgicas separadas;
O conversor A / D converte um sinal de entrada analgico num nmero binrio de 10 bits;
A resoluo mnima ou qualidade de converso pode ser ajustado para diferentes necessidades, seleccionando Vref- e
tenses de referncia Vref +.
UM D
Embora primeira vista parece muito complicado de usar um conversor A / D, realmente muito simples. Na verdade, mais simples de
usar um timers A / D ou mdulos de comunicao serial.
O resultado aps a converso de um valor analgico para digital um nmero de 10 bits que armazenada nos ADRESH e ADRESL
registos. H duas maneiras de lidar com isso: justificado esquerda e direita que simplifica muito o uso. O formato do resultado da
converso depende do bit do registo ADFM ADCON1. Se o conversor A / D no utilizado, estes registos podem ser utilizados como registos
de uso geral.
REQUISITOS DE AQUISIO A / D
Para o conversor A / D atinge a sua preciso especificada, necessrio fornecer algum tempo de inatividade entre a escolha de entrada
analgica especfica e medio propriamente dita. Desta vez o chamado "tempo de aquisio" e geralmente depende da impedncia de
fonte. Uma equao usada para calcular com preciso o tempo de aquisio, o valor mnimo de aproximadamente 20us. Portanto, para
executar com preciso uma converso no esquecer este detalhe.
ADCS1
ADCS0
8 MHz
4Mhz
1 Mhz
Fosc / 2
100 ns
250 ns
500 ns
2 nos
Fosc / 8
400 nS
1 uS
2 nos
8 uS
Fosc / 32
1.6 uS
4 US
8 uS
32 uS
Frc
2-6 uS
2-6 uS
2-6 uS
2-6 uS
Qualquer alterao da freqncia do relgio do microcontrolador afetar a freqncia de clock de converso A / D, o que pode prejudicar o
resultado da converso A / D. A tabela a seguir mostra as caractersticas do dispositivo de frequncias so mostradas. Os valores nas clulas
sombreadas esto fora da faixa recomendada.
Ser que o A / D no diferenciar entre sinais digitais e analgicos. Para evitar erros de medio ou chip danos, pinos
devem ser configuradas como entradas analgicas antes de iniciar o processo de converso. Usa dois bits para esta
finalidade so armazenados nos registos TRIS e ANSEL (ANSELH);
Lendo o estado da porta com as entradas analgicas, o estado dos bits correspondentes so lidos lgico zero como
(0), independentemente do valor real da tenso no pino; e
De um modo geral, a medio da tenso no conversor baseia-se na comparao entre a tenso de entrada com escala
interna que tem 1.023 graus (2 10 - 1 = 1,023). O nvel mais baixo desta escala representa a tenso Vref-, enquanto o
mais alto grau refere-se tenso Vref +. A figura abaixo mostra as tenses de referncia selecionveis e valores
mximo e mnimo.
Registrar ADCON0
ADCS1, ADCS0 - A / D Converso Relgio Escolha pedaos (bits selecione relgio A / D) seleciona a freqncia de clock usado para
sincronizao interna do A / D. Tambm afeta o perodo de converso.
ADCS1
0
ADCS2
0
ASSISTA
Fosc / 2
Fosc / 8
Fosc / 32
RC *
CHS2
CHS1
CHS0
CANAL
PINO
RA0 / AN0
RA1 / AN1
RA2 / AN2
RA3 / AN3
RA5 / AN4
RE0 / AN5
RE1 / AN6
RE2 / AN7
RB2 / AN8
RB3 / AN9
10
RB1 / AN10
11
RB4 / AN11
12
RB0 / AN12
13
RB5 / AN13
CVref
Vref = 0.6V
GO / DONE - A / D Converso Bit de estado (status converso bit A / D) determina o estado atual de converso:
1 - Um conversor A / D activada.
0 - conversor A / D est desativado.
//
//
//
//
//
fazer {
temp_res = ADC_Read (2); // Obter o resultado de AD converso de 10 bits
PORTB = temp_res;
// Envie as tarifas mais 8 bits para PORTB
PORTC = temp_res >> 2;
// Envie os 2 bits mais significativos RC7, RC6
} enquanto (1);
// Permanecer no circuito
}
Registo ADCON1
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 Vref0 - 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.
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.
Voc precisa verificar o ciclo do programa se o GO / DONE bit zero ou esperar uma interrupo (deve ser
previamente habilitado).
Comparador Analgico
Alm 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:
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 INTERRUPO
Sempre 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:
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.
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.
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 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)
* 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.
C1R - Comparador C1 Referncia Select bit (bit fonte de tenso de referncia seleo do C1 comparador)
C1CH1, C1CH0 - Comparador C1 Channel Select bit (seleo de canais pouco do C1 comparador)
C1CH1
C1CH0
C 1 V I N - E N T R AD A D O C O M PAR AD O R
Registro CM2CON0
Os bits desta registo est no controle do comparador C2. Semelhante ao caso anterior, a figura a seguir mostra um esquema simplificado do
circuito afetado pelos bits deste registo.
C2ON - Comparador C2 Ativar bit (bit permitindo o comparador C2) permite o comparador C2.
C2OUT - C2 comparador de bits de sada (sada do comparador de bits C2) a sada do comparador C2.
Se C2POL = 1 (sada do comparador invertido)
1 - C2Vin + tenso de entrada for mais elevada do que a tenso de entrada C2Vin-.
0 - + C2Vin tenso de entrada menor do que a tenso de entrada C2Vin-.
C2OE - C2Output Comparador Habilitar bit (bit de habilitao de sada do comparador C2)
* Para ativar o bit C2OUT aparece no pino, duas condies devem ser atendidas: C2ON = 1 (comparador deve estar ligado) e os
correspondentes TRIS bit = 0 (pino deve ser configurado como uma sada).
C2POL - Comparador de sada C2 Polaridade Select bit (seleo de bits de sada de polaridade do comparador C2) habilita o estado do
comparador C2 sada de investimento.
C2R - Comparador C2 Referncia Select bit (bit fonte de tenso de referncia seleo do comparador C2)
C2CH1, C2CH0 C2 Comparador Channel Select bit (seleo de canais pouco do comparador C2)
C2CH1
C2CH0
C 2 V I N - E N T R AD A D O C O M PAR AD O R
Registro CM2CON1
C2RSEL - Comparador C2 Referncia Select bit (tenso de referncia da seleo fonte pouco do comparador C2)
T1GSS - Timer1 Porto Source Select bit (bit porto seleo fonte Timer1)
C2SYNC - C2 bit sincronizao sada do comparador (bit de sada de sincronizao do comparador C2)
1 - sada do comparador C2 sincronizado com uma borda de subida do sinal de relgio Timer1
0 - sada do comparador um sinal assncrono.
Registro VRCON
Vren C1 comparador de tenso Referncia Habilitar bit (bit permite que o C1 referncia de tenso comparador de origem)
VROE Comparador C2 Voltagem de referncia Habilitar bit (bit permite a referncia de tenso comparador fonte C2)
Bit CVref Faixa Seleo - VRR (bit Vref tenso de referncia seleo de intervalo)
VRSS - Comparador Vref Faixa pouco seleo (tenso de referncia Vref seleo de intervalo bit do comparador)
Para selecionar o modo apropriado, voc deve definir os estados dos bits dos registros CM1CON0 e CM2CON0. A
interrupo deve ser desativado durante o modo de comutao.
Passo 2 - Definir uma fonte de tenso de referncia Vref interna (apenas se for usado). No cadastro VRCON voc obrigado a fazer o
seguinte:
(gama
baixa)
(high-end)
Habilitar uma interrupo para o CIEM colocar um pouco (PIE registo), PEIE e GIE (INTCON).
Leia C1OUT e registro C2OUT CMCON pedaos.
Leia o bit de flag CMIF PIR registo. Depois de ser definido para um, este bit afastada pelo software.
Para sincronizar todos os processos que ocorrem dentro do microcontrolador, usam um sinal de relgio, enquanto gerando um sinal de
relgio, voc deve usar um oscilador. simples assim. O microcontrolador tem vrios osciladores capazes de operar em modos diferentes.E
aqui onde vem a parte interessante ...
Um oscilador externo instalado fora do microcontrolador e ligado ao OSC1 e OSC2 pinos. chamado "externo" porque os componentes
externos usados para gerar um sinal de relgio e de estabilizao de frequncia. Estes so: cristal de quartzo, o circuito ressonador cermico
ou resistor - capacitor. O modo de oscilador selecionado por bits, enviados durante a programao, chamado palavra de configurao.
Registrar OSCCON
O registo OSCCON regem as opes de microcontroladores e seleo de freqncia. Ele contm os seguintes bits: bits de seleo de
frequncia (IRCF2, IRCF1, IRCF0), bits de status de freqncia (HTS, LTS), relgio do sistema bits de controle (OSTA, SCS).
IRCF2-0 -. Oscilador interno Seleo de Freqncia pedaos (selecione frequncia do oscilador interno bits). O valor de cruzamento
depende da combinao desses trs bits. A frequncia de relgio do oscilador interno determinada da mesma maneira.
IRCF2
IRCF1
IRCF0
FREQNCIA
OSC.
8 MHz
HFINTOSC
4 MHz
HFINTOSC
2 MHz
HFINTOSC
1MHz
HFINTOSC
500 kHz
HFINTOSC
250 kHz
HFINTOSC
125 kHz
HFINTOSC
31 kHz
LFINTOSC
USTOS - oscilador Start-up Bit de estado Time-out (bit temporizador de status on) indica qual fonte de clock est atualmente em uso.
um pouco s de leitura.
HTS - HFINTOSC Bit de estado (8 MHz - 125 kHz) (Bit de estado HFINTOSC) indica se o oscilador interno de alta frequncia opera de
maneira estvel.
1 - HFINTOSC estvel.
0 - HFINTOSC no estvel.
LTS - LFINTOSC pouco estvel (31 kHz) (LFINTOSC bit de estado) indica se o oscilador de baixa freqncia opera de maneira estvel.
1 - LFINTOSC estvel.
0 - LFINTOSC no estvel.
SCS - Bit de seleco do relgio do sistema (seleco do relgio do sistema bits) determina qual o oscilador usado como uma fonte de
relgio.
usado
como
o
relgio
do
sistema.
O modo do oscilador definido pelos bits, chamado definies do Word , escritos na memria do microcontrolador,
durante a programao.
A fonte independente de relgio externo est ligado ao OSC1 pino de entrada. O pino OSC2 est disponvel como pin
I / S de uso geral;
possvel sincronizar o microcontrolador com os outros elementos incorporados no dispositivo;
Neste modo, o microcontrolador posto a trabalhar imediatamente aps a iluminao. No necessrio esperar para
a estabilizao de frequncia.
Para desativar temporariamente o relgio externo, o funcionamento do dispositivo pra, deixando todos os dados
intactos. Depois de reiniciar o relgio externo, o dispositivo continua a operar como se nada tivesse acontecido.
Os modos de LP, XT e SH um oscilador externo usado como uma fonte de relgio, cuja frequncia determinada por um cristal de quartzo
ou ressonadores cermicos ligados aos OSC1 e OSC2 pinos. Dependendo das caractersticas dos componentes usados, selecione uma das
seguintes maneiras:
Modo LP - (Low Power) usado para o cristal de quartzo de baixa frequncia nica. Este modo destina-se a trabalhar
com cristais 32,768 kHz normalmente incorporados nos relgios de cristal. fcil de reconhecer pelo seu pequeno
tamanho e forma cilndrica. Usando este modo de consumo de energia menor do que em outros modos.
Modo XT usado para cristais de quartzo freqncias intermedirias at 8 MHz. O consumo atual mdia se
comparado a outros modos.
Modo HS - (alta velocidade) usado para cristais de clock maior freqncia de 8 MHz Quando utilizar este modo o
consumo de corrente maior do que em outros modos ..
Modo RC. Quando o oscilador externo est configurada para operar em modo de RC, o pino de OSC1 deve ser ligado ao
circuito de RC, como mostrado na figura da direita. O sinal a partir da frequncia do oscilador RC dividido por 4 est disponvel
no pino OSC2. Este sinal pode ser utilizado para calibrao, ou para outros fins de sincronizao.
WICR modo. De modo semelhante, o circuito de RC est ligado ao pino OSC1.Desta vez, o pino OSC2 est disponvel para
ser utilizado como pino de I / S uso geral.
Em
ambos
os
casos
recomendado
uso
de
componentes,
como
mostrado
na
figura.
f = frequncia [Hz];
T = R * C = constante de tempo [s];
R = resistncia eltrica []; e
C = capacitncia condensador [F].
Oscilador
interno
INTOSC
EM
MODO
Neste modo, o pino OSC1 est disponvel para ser utilizado como pino de I / S uso geral. Sinal de frequncia do oscilador
interno dividido por 4 est disponvel no pino OSC2.
INTOSCIO
oscilador
interno
Neste modo, os dois pinos esto disponveis como pin I / S de propsito geral.
NO
MODO
1. A alta freqncia HFINTOSC oscilador interno est ligado ao ps-scaler (divisor de frequncia). calibrado de fbrica e opera em 8
MHz. Ao utilizar o ps-scaler, este oscilador pode produzir um sinal de relgio de um dos sete freqncias. Seleo de freqncia realizada
dentro do software usando o pino IRCF2 e registro OSCCON IRCF0 IRCF1.
O HFINTOSC est habilitado selecionando uma das sete frequncias (entre 8 MHz e 125 kHz) e colocar um pouco da fonte de relgio do
sistema (SCS) do registo OSCCON. Como se mostra na figura abaixo, todo o procedimento realizado atravs de bits do registador de
OSCCON.
2. A baixa LFINTOSC oscilador de frequncia no calibrado de fbrica e opera em 31 kHz. Ele habilitado para selecionar a freqncia
(bits do registo OSCCON) e colocar um pouco SCS do mesmo registo.
O monitor detecta uma falha para comparar as fontes de relgio interno e externo. Se pulsos oscilador externo 2mS demorar mais tempo a
chegar, a fonte do relgio alterada automaticamente por interno. Assim, o oscilador interno continua a operar controlado por bits do registo
OSCCON. Se o bit de registro OSFIE PIE2 est definido, uma interrupo ocorrer.
O relgio interno ainda a fonte do relgio do sistema at que o dispositivo reiniciado com xito o oscilador externo novamente a fonte de
relgio do sistema. De um modo semelhante aos processos anteriores, este mdulo activado, alterando a palavra de configurao um
pouco antes do processo de programao, o chip iniciado. Desta vez, isso feito selecionando a opo prova de falhas Relgio Monitor.
Registro OSCTUNE
OSCTUNE alteraes de registro afetam a frequncia do oscilador HFINTOSC, mas no a frequncia LFINTOSC. No h nenhuma
indicao de que o desvio de frequncia tenha ocorrido durante o funcionamento do microcontrolador.
TUN4 -. Tun0 pedaos frequncia de sintonizao (bits para calibrar a freqncia). Ao combinar esses cinco bits, a frequncia do oscilador
de 8MHz reduzido ou aumentado. Deste modo, as frequncias obtidas por diviso no ps-escalador tambm mudam.
TUN4
TUN3
TUN2
TUN1
TUN0
FREQNCIA
Mxima
Calibrado
Baixo
A EEPROM um segmento de memria separado, que no pertence memria de programa (ROM), e no memria de dados
(RAM).Embora estas posies de memria no pode acess-los rapidamente e facilmente, o seu objectivo insubstituvel. Os dados
armazenados no EEMPROM so permanentemente salvos mesmo quando voc desligar a fonte de alimentao, e pode ser alterado a
qualquer momento. Por estas caractersticas nicas de cada byte de EEPROM considerado valioso.
3.11 EEPROM
O microcontrolador PIC16F887 tem 256 locais em EEPROM controlada pelos bits de os seguintes registos:
Alm disso, verifique EECON2 no um verdadeiro registro, no existe fisicamente no chip. Ele usado somente durante a gravao de
dados na memria.
Os EEDATH e EEADRH registros so usados para gravar e ler a EEPROM. Os dois tambm so usados durante a escrita e leitura de
memria de programa (FLASH).
Considerando essa rea de risco ( claro que voc no quer que o microcontrolador apagar o seu prprio programa por acaso), no vamos
discutir aqui, no entanto, notificar devem ficar atentos.
EECON1 registo
W = EEPROM_Read (ADDRESS);
As vantagens de usar a linguagem C tornaram-se mais bvio, voc no acha?
// O exemplo mostra como usar a biblioteca EEPROM em mikroC PRO para PIC.
caractere ii; // varivel utilizada no circuito ii
vazio main () {
ANSEL = 0;
// Definir o pino como uma E / S digitais
ANSELH = 0;
PORTB = 0;
PORTC = 0;
PORTD = 0;
TRISB = 0;
TRISC = 0;
TRISD = 0;
para (i = 0; ii <32; ii ++)
// preencher o buffer com os dados
EEPROM_Write (0x80 + ii, ii);
// Escreve os dados no endereo 0x80 + ii
EEPROM_Write (0x02,0xAA);
EEPROM_Write (0x50,0x55);
// Os EEMPROM
delay_ms (1000);
PORTB = 0xFF;
PORTC = 0xFF;
Delay_ms (1000);
PORTB = 0x00;
PORTC = 0x00;
Delay_ms (1000);
PORTB = EEPROM_Read (0x02);
// Vista PorB na porta
PORTC = EEPROM_Read (0x50);
Quando a voltagem da fonte de alimentao atinge entre 1,2 e 1.7V, um circuito chamado start timer (temporizador power-up)
mantm o microcontrolador reiniciado por cerca de 72mS. Assim que o tempo expirar, outro timer ON temporizador chamado
de oscilador (Oscillator start-up timer) gera um outro sinal de reset para a durao de 1024 perodos oscilador de quartzo. Ao
expirar o tempo morto (rotulado Redefinir T na figura) e colocar o pino MCLR alta, todas as condies foram satisfeitas eo
microcontrolador comea a executar a primeira instruo no programa.
Para alm deste "controlada" reset que ocorre quando voc ligar uma fonte de alimentao, existem dois tipos de resets chamado Black-out
e Brown-out que podem ocorrer durante o funcionamento do microcontrolador, bem como desligar a fonte de energia.
BLACK-OUT REAJUSTE
Reiniciando apago ocorre quando uma fonte de alimentao desligado corretamente. O microcontrolador no tem tempo de
fazer nada imprevisvel porque a tenso cai rapidamente abaixo do seu valor mnimo.Em outras palavras, a luz se apaga, as
cortinas para baixo e o show acabou!
BROWN-OUT REAJUSTE
Quando a tenso da fonte de alimentao cai lentamente (um exemplo tpico a descarga da bateria, apesar de o
microcontrolador poderia experimentar uma diminuio muito mais rpido como um processo lento) componentes internos
gradualmente parar o seu funcionamento e assim chamada queda de energia ocorre de reset. Neste caso, antes de o
microcontrolador pra de funcionar completamente, h um perigo real de que os circuitos que operam em altas freqncias so
feitas funo de forma imprevisvel. A reposio brown-out pode causar alteraes fatais no programa como ele armazenado
na memria flash on-chip.
O rudo eltrico
um tipo especial de redefinio Brownout acontece em um ambiente industrial, quando a tenso de alimentao "pisca" por
um momento e cair abaixo do valor mnimo. Embora seja curto, o rudo de linha de energia pode afectar negativamente a
operao do dispositivo.
PIN MCLR
Uma lgica zero (0) para o pino MCLR provoca uma reposio imediata e regular. aconselhvel para conect-la conforme
mostrado na figura direita. A funo de componentes adicionais manter uma lgica um "puro" durante a operao
normal.Se os seus valores so selecionados para fornecer um alto nvel lgico no pino aps o tempo morto redefinio T tenha
decorrido, o microcontrolador ser colocada a trabalhar imediatamente. Isto pode ser muito til quando voc precisa para
sincronizar o funcionamento do microcontrolador com componentes adicionais ou a operao de vrios microcontroladores.
Para evitar possveis erros na Brown-out Redefinir ocorre, o PIC 16F887 tem um "mecanismo de proteo" incorporada. um circuito
simples, eficaz, mas que reage sempre que a tenso cai abaixo 4V (se uma tenso de 5V usado) e mantm esse nvel de tenso de mais
de 100 microssegundos. Este circuito gera um sinal depois de tudo o microcontrolador opera como se tivesse sido ligada pela primeira vez.
Captulo 4: Exemplo
O objetivo deste captulo fornecer as informaes bsicas que voc precisa saber para ser capaz de usar microcontroladores com sucesso
na prtica. Portanto, este captulo no contm qualquer programa muito elaborado esquema tambm tem um dispositivo com solues
extraordinrias. Em contrapartida, os seguintes exemplos so a prova de que escrever um programa no um privilgio ou qualquer coisa
de talento, mas uma capacidade de "juntar as peas do quebra-cabea", para usar directivas. Tenha certeza de que a concepo e
desenvolvimento de dispositivos em geral, seguem o mtodo de "test-correto-repeat". Claro, muito mais vai mergulhar no assunto, o mais
complicado, uma vez que ambas as crianas arquitetos linha de frente, colocar as peas do quebra-cabea.
Alimentos;
Redefinio de sinal; e
Sinal de relgio.
Como mostrado na figura anterior, circuitos simples, mas nem sempre precisa ser assim. Se o dispositivo de destino usado para controlar
as faces ou mquinas para manter as funes vitais, tudo o que se torna muito mais complicada.
POWER
Embora o PIC16F887 seja capaz de operar em diferentes tenses de alimentao, no aconselhvel tentar a Lei de Murphy. O melhor o
de proporcionar uma tenso de 5V DC de alimentao. Este circuito, mostrado na pgina anterior, usa um regulador de trs terminais
LM7805 tenso positiva. um regulador integrado e de baixo custo que proporciona uma qualidade de estabilidade a alta voltagem e
corrente suficiente para permitir o correcto funcionamento do controlador e perifrico (aqui significa uma corrente suficiente 1A).
Sinal de reset
Para um microcontrolador para funcionar adequadamente uma lgica um (VCC) ir ser colocado sobre o pino de reinicializao. O boto de
presso, que liga o pino MCLR para GND no necessrio. No entanto, este boto quase sempre fornecida, uma vez que permite que o
microcontrolador para voltar ao modo de funcionamento normal no caso de algo correr mal. Ao clicar no boto RESET, pino MCLR tenso de
0V realizada, o microcontrolador redefinida e comea a execuo do programa desde o incio. Um 10k resistor usado para evitar um
curto-circuito terra pressionando esse boto.
SINAL CLOCK
Apesar de ter um oscilador built-in, o microcontrolador no pode operar sem componentes externos que estabilizam o seu funcionamento e
determinam a sua (velocidade de funcionamento do microcontrolador) freqncia. Dependendo dos elementos utilizados, bem como as
frequncias do oscilador pode operar em quatro modos diferentes:
XT - Crystal / ressonador;
HS - Crystal / ressonador de alta velocidade; e
RC - resistor / capacitor.
Porque so estes importante de qualquer maneira?Como quase impossvel construir um oscilador estvel operando a uma
vasta gama de frequncias, o microcontrolador tem que "sabe" que o cristal ligada, para ajustar o funcionamento dos seus
componentes internos. Esta a razo que todo o software usado para gravar um programa no chip que contm uma opo
para selecionar o oscilador.Ver figura da esquerda.
Cristal de quartzo
Ao utilizar o cristal de quartzo para estabilizar a frequncia, de um oscilador construdo opera a uma determinada frequncia, e no
afectado por variaes na tenso de alimentao e temperatura. Esta freqncia normalmente rtulo encapsulamento de vidro. Alm de
cristal, os condensadores C1 e C2 devem ser ligados, como mostrado no esquema seguinte. Sua capacidade no de grande
importncia.Portanto, os valores indicados no quadro a seguir devem ser tomados como uma recomendao do que regra estrita.
Ressonador cermico
Um ressonador de cermica mais barata e muito como uma funo de quartzo e modo de funcionamento. Portanto, os diagramas que
mostram ligao ao microcontrolador so idnticos. No entanto, os valores de condensadores diferem ligeiramente devido s diferentes
caractersticas elctricas. Consulte a tabela que se segue.
Estes ressoadores so normalmente ligados aos osciladores no deve ser necessrio fornecer frequncia extremamente preciso.
RC oscilador
Se a frequncia de operao no importante, ento no necessria a utilizao de componentes caros e adicionais para a
estabilizao. Em vez disso, simplesmente usar uma simples rede de RC, como mostrado na figura a seguir. Como este usado apenas a
entrada do oscilador local, o sinal de relgio com a frequncia Fosc / 4 aparece no pino OSC2. Esta a frequncia operacional do
microcontrolador, ou a velocidade de execuo de instrues.
Oscilador externo
Se necessrio para sincronizar a operao de vrios microcontroladores ou se, por algum motivo, no possvel utilizar qualquer um dos
esquemas acima, um sinal de relgio pode ser gerado por um oscilador externo. Consulte a figura a seguir.
Apesar do facto de o microcontrolador um produto da tecnologia moderna, que no to til sem estarem ligados aos componentes
adicionais. Em outras palavras, a tenso conduziu aos pinos do microcontrolador intil se no utilizado para realizar algumas operaes,
tais como ligado / desligado, movimento, etc. ver
Interruptores e botes de presso so dispositivos simples para fornecer a maneira mais simples para detectar a ocorrncia de tenso em
um pino de entrada do microcontrolador. No entanto, no to simples como isso ... por um salto de contacto. O salto de contacto um
problema comum com chaves mecnicas.
Ao tocar os contatos, um salto ocorre por inrcia e elasticidade. Portanto, a corrente elctrica rapidamente pulsadas em vez de ter uma
transio clara entre zero e a corrente mxima. Normalmente, isso ocorre devido vibrao, os declives suaves e sujeira entre contatos.Este
efeito no apreende normalmente usar esses componentes na vida cotidiana porque o salto acontece rpido demais para afetar a maioria
dos aparelhos eltricos. No entanto, podem surgir problemas em alguns circuitos lgicos que respondem rpido o suficiente para que no
compreendem os pulsos produzidos por tocar os contatos como um fluxo de dados. De qualquer forma, todo o processo no dura muito
tempo (alguns micro - ou milissegundos), mas o tempo suficiente para que voc possa detectar o microcontrolador. Ao usar boto de presso
apenas como uma fonte de sinal de balco, quase 100% dos casos ocorrem erros.
O problema pode ser resolvido facilmente atravs da ligao de um circuito RC simples para suprimir a alteraes rpidas de tenso.Como o
perodo de recuperao no definido, os valores dos componentes no so precisamente determinado. Na maioria dos casos voc deve
usar os valores mostrados na figura a seguir.
Se for necessria estabilidade completa, ento voc tem que tomar medidas radicais. A sada do circuito representado na figura abaixo (flipflop RS, tambm chamado flip flop RS), a mudana de estado lgico, depois de detectar o primeiro impulso produzido por um ressalto de
contacto. Esta soluo mais caro (interruptor SPDT), mas o problema est resolvido.
Para alm destas solues de hardware, h tambm uma soluo de software simples. Enquanto o Estado lgica de teste de um programa
de pino de entrada se detectar uma mudana, tentar novamente aps um certo atraso. Se o programa confirma a mudana, isto significa que
um boto interruptor / push mudou de posio. As vantagens desta soluo so bvias: livre, os efeitos do contacto de rejeio apagada e
pode ser aplicado aos contactos de uma qualidade mais baixa tambm.
RELAY
Um rel um interruptor eltrico que abre e fecha sob o controle de um outro circuito eletrnico. Ento ele est conectado aos pinos do
microcontrolador sada e usado para ligar / desligar os dispositivos de alta capacidade, tais como motores, transformadores, aquecedores,
lmpadas etc. Estes dispositivos so geralmente posicionados longe dos componentes sensveis no tabuleiro. Existem vrios tipos de rels,
mas todos eles funcionam da mesma maneira. Como a corrente flui atravs da bobina, o rel opera, por meio de um electromagneto, abrindo
e fechando uma ou mais conjunto de contactos. Semelhante a Optoacopladores nenhuma conexo galvnica (contato eltrico) entre os
circuitos de entrada e sada. Relays muitas vezes exigem muito maior tenso e maior corrente para comear a correr. H tambm rels
miniatura, que podem ser postas em prtica por uma baixa corrente obtidos diretamente a partir de um pino microcontrolador.
Para evitar a ocorrncia de uma indutncia de alta tenso causada por uma sbita paragem do fluxo de corrente atravs da bobina, um diodo
de polarizao invertida ligado em paralelo com a bobina. O objectivo da presente diodo este pico de tenso de "corte".
Dodos LED
Voc provavelmente sabe tudo que voc precisa saber sobre LEDs, mas deve tambm pensar sobre os jovens ... Vamos ver, como destruir
um LED? Bem ... muito fcil.
Queimar rapidamente
Como qualquer outro diodo, os LEDs tm duas pontas - um nodo e um ctodo. Conecte um diodo corretamente fonte de alimentao e
emite luz sem qualquer problema. Vire o diodo de cabea para baixo e conect-lo com a mesma fonte de energia (mesmo por um
momento). Ele no emite luz - nunca mais!
Queimam lentamente
H um limite de corrente nominal, isto , limite de corrente especificada mxima para cada LED que no ser excedida. Se isso acontece, o
diodo ir emitir luz mais intensa, mas apenas por um curto perodo de tempo.
Sem dormir
Da mesma forma, tudo que voc tem a fazer escolher um resistor para limitar a corrente mostrado abaixo. Dependendo da tenso de
alimentao, os efeitos podem ser dramtica.
LED DISPLAY
Basicamente, um display LED nada mais do que alguns LEDs moldadas na mesma caixa de plstico.Existem vrios tipos de
monitores e alguns deles so compostas por vrias dezenas de diodos embutidas que podem exibir diferentes smbolos. No
entanto, a exposio mais comumente utilizado o display de 7 segmentos. constituda por oito LEDs. Os sete segmentos
de um dgito esto dispostos como um rectngulo para exibir os smbolos, enquanto o segmento adicional usada para o
propsito de visualizao pontos decimais. Para simplificar a conexo, anodos e catodos de todos os diodos so conectados
ao pino comum para que os espectadores tm nodo comum displays e ctodo comum respectivamente. Os segmentos so
marcadas com as letras A a G e DP, como mostrado na figura a seguir. Quando ligado, cada LED tratado separadamente, o
que significa que cada uma delas tem a sua prpria resistncia para limitar a corrente.
Aqui esto algumas coisas importantes que voc deve prestar ateno quando for comprar um display LED:
Como j mencionamos, dependendo se nodos ou ctodos esto ligados ao pino comum, monitores tm nodo e do
ctodo comum telespectadores comuns. Visto de fora, parece que no h nenhuma diferena entre estas exposies,
incentivado para ver qual ser usado antes da instalao.
Cada pino microcontrolador tem um limite de corrente mxima que pode receber ou dar. Portanto, se vrios monitores
esto ligados ao microcontrolador, aconselhvel utilizar os chamados LEDs de baixa potncia usando apenas 2mA
para operao.
Segmentos do visor so geralmente marcadas com letras de AAG, mas no h nenhuma regra que broches estrictaa a
exibio ser conectado. Por isso, muito importante verificar antes de comear a escrever um programa ou projeto de
um dispositivo.
Os monitores conectados ao microcontrolador geralmente ocupam um grande nmero de pinos de E / S valiosos, o que pode ser um
problema, especialmente quando voc precisa exibir os compostos nmeros com vrios dgitos. O problema torna-se ainda mais evidente se,
por exemplo, necessrio para exibir dois nmeros de seis dgitos (um clculo simples mostra que, neste caso, so necessrios 96 pinos de
sada). A soluo para este problema chamado de multiplexao.
Aqui est como ele tornou-se uma iluso de tica com base no princpio de funcionamento mesmo que uma cmera de filme. Um nico dgito
ativo em um tempo, mas voc tem a impresso de que todos os dgitos de um nmero so simultaneamente activo para alterar as
condies to rapidamente on / off.
Veja a figura acima. Primeiro, um byte que representa unidades por PORT2 porta microcontrolador e do transistor T1 ativado ao mesmo
tempo aplica. Em pouco tempo, o T1 transistor est desligado, um byte que representa dezenas aplica-se a porta PORT2 eo transistor T2
ativado. Este processo se repete ciclicamente em alta velocidade em todos os dgitos e transistores correspondentes.
A coisa decepcionante que o microcontrolador apenas uma espcie de miniatura de computador projetado para interpretar a linguagem
de zeros e uns, o que se torna aparente quando vendo qualquer dgito. Especificamente, o microcontrolador no sabe como so as unidades,
dezenas, centenas ou dez dgitos para o qual estamos acostumados. Por esta razo, cada nmero a ser exibida tem de ir atravs do
seguinte procedimento:
Em primeiro lugar, um nmero de vrios dgitos deve ser dividida em unidades, centenas etc. em uma subrotina especfica. Em seguida, cada
um destes dgitos deve ser armazenado nos bytes particulares. Os dgitos tornar reconhecvel ao executar 'mascaramento'. Em outras
palavras, o formato binrio de cada dgito substitudo por uma combinao diferente de bits atravs de uma sub-rotina simples. Por
exemplo, o dgito 8 (0000 1000) substitudo pelo nmero binrio 0111 1111 para ativar todos os LEDs que indicam o nmero 8. O nico
diodo permanecendo inativo aqui reservado para o ponto decimal.
Se uma porta microcontrolador ligado ao visor, de modo que o bit 0 ativa segmento "A", o bit 1 activa segmento de 'b', o bit 2 activa
segmento c etc, em seguida, a tabela abaixo mostra "mscara" para cada dgito.
DIGIT
VI SEGMENTOS BITdp
para
Alm dos dgitos de 0 a 9, existem alguns pontos -A, C, E, J, F, L, M, L, b, c, d, o, r, t - visualizvel por mascaramento.
Se forem utilizados os nodo exibe comuns, todos aqueles contidos na tabela acima deve ser substitudo com zeros e vice-versa. Alm
disso, os transistores PNP devem ser utilizados como controladores.
Optocouplers
Um acoplador ptico um dispositivo freqentemente usado para isolar eletricamente o atual microcontrolador ou tenso ambiente
potencialmente perigoso. Acopladores pticos geralmente tm uma, duas ou quatro fontes de luz (LEDs), a sua entrada, enquanto a sua
produo em comparao com os dodos, o mesmo nmero de elementos sensveis luz (foto-transistores, foto- tiristores, foto-triac). A
questo que um acoplador ptico utiliza um caminho de transmisso ptica curto para transmitir um sinal de entre os elementos do circuito
que so electricamente isolados. Este isolamento s faz sentido se os diodos e elementos foto-sensveis so alimentados
separadamente. Assim, o microcontrolador e componentes adicionais e caros so completamente protegido de alta tenso e rudos que so
a causa mais freqente de destruio, danos e funcionamento instvel de dispositivos eletrnicos na prtica. Os optocouplers mais utilizados
so aqueles com phototransistors em suas sadas. Nos optocouplers com base interna conectados a 6 pinos (h tambm Optoacopladores
sem ele), a base pode ficar desconectado.
A rede de P / C representado por uma linha a tracejado na figura acima indica uma ligao opcional para a base do transistor dentro do
acoplador ptico, o que reduz os efeitos de rudo, eliminando impulsos muito curtos.
TELA DE LCD
Este componente fabricado especificamente para uso com microcontroladores, o que significa que no pode ser activada por circuitos
integrados convencionais. Ele usado para exibir mensagens diferentes em um display de cristal lquido em miniatura. O modelo aqui
descrito o mais utilizado na prtica por seu baixo preo e grandes capacidades. Ele baseia-se na HD44780 (Hitachi) e integrado
microcontrolador pode exibir mensagens em duas linhas com 16 caracteres cada. Voc pode ver todas as letras do alfabeto, letras do
alfabeto grego, sinais de pontuao, smbolos matemticos, etc. Voc tambm pode exibir smbolos criados pelo usurio. Entre outras
caractersticas teis a transferncia automtica de mensagens (esquerda e direita), a aparncia do cursor, retroiluminao LED etc.
NMERO
NOME
E S T AD O L G I C O
DESCRIO
Terra
Vss
0V
Alimentao
Vdd
+ 5V
Contrastar
Vee
0 - Vdd
RS
0
1
D0
D7
considerado
D0 - D7 dados considerados
R/W
0
1
Escreve
dados
(microcontrolador
para
LCD)
Ler dados (a partir de LCD para o microcontrolador)
0
1
1-0 Transio
Acesso
para
deficientes
ao
visor
LCD
Operao
normal
Dados / comandos que esto sendo transmitidos para
Controle Operacional
comandos
LCD
Dados / comandos
D0
0/1
Bit 0 LSB
D1
0/1
O bit 1
D2
0/1
Bit 2
10
D3
0/1
Bit 3
11
D4
0/1
Bit 4
12
D5
0/1
O bit 5
13
D6
0/1
Bit 6
14
D7
0/1
MSB bit 7
Display LCD
Um LCD pode exibir duas linhas de 16 caracteres cada. Cada personagem 5x8 ou 5x11 pixels. Este livro cobre um pixel display 5x8 que
usado na maioria das vezes.
O contraste do visor depende da tenso de alimentao e se as mensagens so exibidas em uma ou duas linhas. Portanto, a tenso varivel
0-VDD aplicada ao pino identificado Vee. Um potencimetro trimmer freqentemente utilizado para este fim. Alguns monitores LCD tm
built-in de luz de fundo (azul ou LEDs verdes). Quando utilizados durante o funcionamento, isto , devido a uma resistncia em srie ligado a
um pino para limitar a corrente (similar aos LEDs).
Se nenhum dos caracteres exibidos ou se todos os caracteres so obscurecidos quando ligar o monitor, a primeira coisa que voc deve fazer
verificar o potencimetro para ajustar o contraste. Trata-se de definir corretamente? O mesmo se aplica se o modo de funcionamento foi
alterado (gravao em uma ou duas linhas).
LCD Memria
O visor LCD tem trs blocos de memria:
Memria DDRAM
A memria de DDRAM usado para armazenar os caracteres a serem exibidos. Tem uma capacidade para armazenar 80 caracteres.Alguns
locais de memria esto diretamente ligados aos personagens na tela.
Tudo funciona muito simples: basta definir a exibio para incrementar automaticamente endereos (deslocamento para a direita) e definir o
endereo de partida para a mensagem a ser exibida (por exemplo, 00 hex).
Em seguida, todos os caracteres enviados pelas linhas D0-D7 devem ser exibidos no formato de mensagem para o qual estamos
acostumados - da esquerda para a direita. Neste caso, o visor comea com o primeiro campo de primeira linha, como o endereo de partida
00hex. Se mais de 16 caracteres so enviados, todos so salvos, mas apenas o primeiro 16 ser visvel. Para exibir os outros, voc deve
usar o comando shift. Virtualmente, parece como se o LCD para fora de uma janela, movendo-se da esquerda para a direita em locais de
memria com personagens diferentes. Na verdade, esta a forma como o efeito de deslocar as mensagens na tela foi criado.
Se ativado ver o cursor vai aparecer no local atualmente abordadas. Em outras palavras, se um caractere aparece na posio do cursor, ele
ir se mover automaticamente para a prxima localizao endereada.
Este um tipo de memria RAM para que os dados podem ser escritos para ele e ler a partir dele, mas o seu contedo irremediavelmente
perdidos quando voc desliga a fonte de alimentao.
Memria CGROM
A memria CGROM contm um mapa padro de todos os caracteres que podem ser exibidos na tela. Cada personagem atribudo um local
de memria:
Endereos CGROM posies de memria correspondem aos caracteres ASCII. Se o programa est em execuo alcana o comando 'enviar
carter P porta', valor binrio 0101 0000 aparece no porto. Este valor o equivalente de caracteres ASCII P. Ao escrever este valor em um
LCD, o smbolo da cidade de CGROM 0101 0000 exibido. Em outras palavras, carter Pe exibido Isso se aplica a todas as letras do
alfabeto (maisculas e minsculas), mas no se aplica a nmeros.
Como mostrado no mapa acima, os endereos de todos os dgitos so deslocados por 48 em relao aos seus valores (o endereo 0 de 48
dgitos, um dgito endereo 49, dgito 2 endereo 50 etc.). Portanto, para exibir dgitos corretamente necessrio adicionar o nmero
decimal 48 para cada um antes de envi-los para um LCD.
O que o cdigo ASCII? Desde o seu surgimento at os dias atuais, os computadores tm sido capazes de reconhecer apenas nmeros,
no letras. Isto significa que todos os dados trocados com um perifrico de computador, reconhecidos como cartas por seres humanos
realmente esto em formato binrio (o teclado um bom exemplo). Em outras palavras, cada caractere corresponde a uma combinao
nica de zeros e uns. ASCII uma codificao de caracteres baseado no alfabeto Ingls. O ASCII especifica uma correspondncia entre
smbolos de caracteres padro e seus equivalentes numricos.
Memria CGRAM
Alm dos caracteres padro, o LCD pode exibir smbolos definidos pelo usurio. Isso pode ser qualquer smbolo de 5x8 pixels. RAM
chamado CGRAM 64 bytes permite que ele.
Registros de memria so de 8 bits, mas apenas 5 bits mais baixos so usados. A lgica de um (1) em cada registro representa uma mancha
escura, enquanto 8 locais agrupados representar um caractere. Isto mostrado na figura a seguir:
Os smbolos so geralmente definidas no incio do programa por simples zeros e uns escrita de memria CGRAM assim criar as formas
desejadas. Para visualizar apenas especificar o seu endereo. Preste ateno para a primeira coluna na CGROM mapa de caracteres. Ele
contm endereos de RAM, mas os smbolos que ns estamos falando aqui. Neste exemplo 'display 0' significa view 'sorriso', 'Display 1'
significa - ver "ncora" etc.
RS
RW
D7
D6
D5
D4
D3
D2
D1
D0
RUNTIME
Remover o visor
1.64mS
1.64mS
Modo de entrada
I/D
40US
40US
D/C
R/L
40US
Modo de operao
DL
40US
CGRAM Endereo
CGRAM Endereo
40US
BF
CGRAM Endereo
D7
D6
D5
D4
D3
D2
D1
D0
40US
D7
D6
D5
D4
D3
D2
D1
D0
40US
40US
I / D 1 = Incremento (por 1)
0 = Reduo (por 1) 0 = desvio esquerda
B = um cursor no piscar
D / C = 1 Movendo o visor
0 = piscando cursor off 0 = Mover o cursor
O QUE A bandeira ocupado (FLAG OCUPADO)?
Em comparao com o microcontrolador, o LCD um componente extremamente lento. Por esta razo, foi necessrio para proporcionar um
sinal, para executar um comando, o que indica que a tela estava pronto para receber os dados seguintes. Este sinal chamado bandeira
ocupado (bandeira ocupado) pode ser lido a partir da linha D7. O visor est pronto para receber novos dados quando a tenso sobre esta
linha 0V (BF = 0).
Raramente dados LCD (geralmente transmitidos a partir do microcontrolador para LCD) so lidos com tanta frequncia, voc pode salvar um
pino de I / S de sobra. simples, basta conectar o pino R / W para a terra. Esta "poupana" pin tem seu preo. As mensagens so
normalmente exibida, mas no ser possvel ler a bandeira ocupado, uma vez que no possvel ler os dados de exibio. Felizmente,
existe uma soluo simples. Aps o envio de um caractere ou comando importante para dar o LCD tempo suficiente para fazer sua lio de
casa. Devido ao facto de a execuo de um comando pode levar aproximadamente 1.64mS, o LCD leva 2mS mximos para desempenhar a
sua funo.
1. Visor apagado.
2. Assim DL = 1 -
3. Mostrar
Cursor
barramento
on
de
off D =
dados
Exibir
bits N =
linha
off U =
cursor
LCD F =
para
fora B =
Carter
Cursor
po
piscar
Este no um erro! Neste algoritmo, o mesmo valor transmitido trs vezes consecutivas.
O procedimento de inicializao por barramento de dados de 4 bits:
/ * Em mikroC para PIC, basta digitar apenas uma funo para fazer todo o processo
Inicializao de LCD. Antes de chamar esta funo, declarar
Bocados LCD_D4-LCD_D7, LCD_RS e LCD_EN. * /
...
Lcd_Init (); // Inicializar o LCD
...
EXEMPLOS PRTICOS
O processo de criao de um novo projeto muito simples. Selecione Novo projeto do menu Projeto como mostrado na figura direita.
Uma janela ir gui-lo atravs do processo de criao de um novo projeto aparece. A janela de entrada do programa contm uma lista de
aes a serem tomadas para criar um novo projeto. Pressione Prximo .
Uma vez criado o programa, necessrio compil-lo em um cdigo hexadecimal. Selecione no menu de opes para compilar o projeto :
Para criar um arquivo hex opo, selecione Build (Ctrl + F9) no menu Project ou clique no cone na barra de
ferramentas de construo do projeto.
Atravs da compilao todos os projetos (Shift + F9) todos os arquivos de projeto, as bibliotecas so compiladas (se o
cdigo fonte contm alguns deles) e os arquivos def para o microcontrolador utilizado.
A opo de construo + Programa (Ctrl + F11) importante porque permite que o mikroC PRO para PIC carregar
automaticamente o programa para o microcontrolador aps a compilao. O processo de programao realizada pelo
programador PICFlash.
Todos os erros encontrados durante a compilao aparecem na janela de mensagem. Se no houver erros no programa, o mikroC PRO para
PIC ir gerar os arquivos de sada correspondentes.
4.3 EXEMPLO 1
Faa cabea, colocou o pino I / S, utilizando a funo interruptor Delay e operador
O nico objectivo deste programa iluminar vrios LEDs na porta B. Use este exemplo para examinar como um programa real. A figura a
seguir mostra o esquema de ligaes, enquanto o programa est na pgina seguinte.
Quando voc liga a fonte de alimentao, a cada segundo, o LED na porta B emite luz, o que indica que o microcontrolador est conectado
corretamente e funcionando normalmente.
Este exemplo mostra como gravar um cabealho corretamente. O mesmo se aplica a todos os programas descritos neste livro. Para evitar a
repetio nos seguintes exemplos no vamos escrever o cabealho. Ele considerado como sendo o incio de cada programa, rotulada
"cabealho".
Para tornar este exemplo mais interessante, vamos permitir LEDs ligados ao PORTB porta piscante. Existem vrias maneiras de fazer isso:
1. Assim que o microcontrolador ligado, todos os LEDs emitem luz por um segundo. A funo Delay cuida do qu
programa. S necessrio ajustar o comprimento do tempo de atraso em milissegundos.
2. Depois de um segundo, o programa entra no lacete, e permanece l at que a varivel k inferior a 20. A variv
incrementado por 1 depois de cada iterao. Dentro do loop, o operador comutador monitora o estado lgico
PORTB. Se PORTB = 0xFF, o Estado investiu em 0x00 e vice-versa. Qualquer alterao desses estados lgicos faz t
os LEDs piscando. O ciclo de trabalho de 5: 1 (500ms: 100ms).
3. Ao sair do loop, o status da porta lgica muda POTRB (0xB 01010101) eo programa entra na infinita enquanto lo
permanece l at 1 = 1. O estado lgico porta PORTB invertido cada 200mS.
4.4 EXEMPLO 2
Usando instrues de montagem e LFINTOSC oscilador interno ...
Na verdade, esta uma continuao do exemplo anterior, mas lida com um problema um pouco mais complicado ... O objectivo era o de
fazer os LEDs PortB piscar lentamente. Isso pode ser feito atravs da introduo de um valor grande o suficiente para o parmetro de tempo
de atraso em funo do retardo. No entanto, existe uma maneira mais eficiente para executar o programa lentamente. Lembre-se que este
microcontrolador tem um oscilador LFINTOSC construdo operando a uma frequncia de 31kHz. Agora era hora de "dar uma chance".
O programa comea com o loop do-while e permanece l por 20 ciclos. Depois de dar a cada iterao, chega uma hora 100ms de atraso,
indicados por um nmero relativamente rpidas LEDs piscando no PORTB. Quando o programa sai deste ciclo, o microcontrolador comea a
usar o oscilador LFINTOSC como uma fonte de relgio. LEDs piscar lentamente enquanto o programa executa o mesmo loop do-while com
um tempo 10 vezes mais curto atraso.
A fim de tornar claras algumas situaes potencialmente perigosas, os bits de controle so ativados por instrues de
montagem.Simplificando, ao entrar ou sair de instrues um assembler no programa, o compilador no armazena dados em um banco de
RAM atualmente ativo, o que significa que nesta seo do programa, seleo de banco depende do registo SFR utilizado. Voltando seo
programa escrito em C, os bits RP0 e RP1 controlo devem restaurar o estado que tinham antes "assembler aventura". Neste programa, o
problema resolvido usando a saveBank varivel auxiliar, que salva o estado destes dois bits.
/ * Cabealho ********************************************* /
int k = 0;
carvo saveBank;
vazio main () {
ANSEL = 0;
ANSELH = 0;
PORTB = 0;
TRISB = 0;
fazer {
PORTB PORTB = ~;
delay_ms (100);
k ++;
}
enquanto (k <20);
// k Varivel int,
// varivel do tipo char saveBank
// Todos os pinos de I / S so configurados como digitais
// Tudo PortB pinos da porta esto definidos para 0
// pinos da porta esto configuradas como sadas PORTB
// reverter o estado lgico dos porta PORTB
// tempo de atraso de 100mS
// Aumento k 1
// loop at Ficar k <20
k = 0;
// k varivel Restart
saveBank = STATUS & 0b01100000; // Salva o estado do RP0 e RP1 pedaos
// (Bits 5 e 6 do registo STATUS)
asm {
// Incio do conjunto sequncia
bsf STATUS, RP0
// Seleciona o banco de memria que contm o
bcf STATUS, RP1
// OSCCON registo
BCF OSCCON, 6
// Select LFINTOSC o oscilador interno
bcf OSCCON 5
// freqncia 31KHz
OSCCON bcf, 4
BSF OSCCON, 0
// microcontrolador usa oscilador interno
}
// Fim da montagem da seqncia
Situao A & = 0b10011111;
Situao A | = saveBank;
fazer {
PORTB PORTB = ~;
delay_ms (10);
k ++;
}
enquanto (k <20);
}
4.5 Exemplo 3
Timer0 como um contador, declarando novo, enumerao constantes de variveis, use rels ...
Tal como para os exemplos anteriores, o programa do microcontrolador executada sem ser afectada, de qualquer forma pelo seu
ambiente. Na prtica, alguns dispositivos que funcionam deste modo (por exemplo, uma luz de non simples controlador). Os pinos de
entrada so tambm utilizados no presente exemplo. A figura a seguir mostra um diagrama, enquanto o programa est na pgina
seguinte. Tudo ainda muito simples. O temporizador Timer0 usado como um contador. A entrada do contador ligada a um boto de
presso, de modo que cada vez que o boto pressionado, o temporizador Timer0 tem um pulso.
Quando o nmero de pulsos corresponde ao nmero armazenado no registro de teste, uma lgica (5V) aparece na PORTD.3 pinos. Esta
tenso ativa um rel eletromecnico, de modo que este bit chamado de 'RELAY' no programa.
Redefinir PORTA
Todos os pinos PORTA so configurados como entradas
redefinir a porta PORTD
RD3 pino configurado como uma sada, enquanto outros
Apenas RELAY constante enumerao usada neste exemplo. atribudo um valor pelo comunicado.
Em todas as constantes precedidas por constante com valores atribudos (rel = 3 e MOTOR = 6), so automaticamente atribudos os valores
das constantes acima, aumentaram 1. Neste exemplo, o aquecedor constantes e PUMP so atribudos os valores 4 e 7, ou seja, (JET
AQUECEDOR = 4 e = 7), respectivamente.
4.6 EXEMPLO 4
Usando Timer0, timer1 e Timer2 temporizadores. Para interrupes, declarar novas funes ...
Ao analisar os exemplos acima, provvel que tenha sido definido na inconveniente de fornecer tempo de espera atravs da funo de
atraso. Nestes casos, o microcontrolador "esttica" e no faz nada. Simplesmente esperado que haver uma certa quantidade de tempo.Tal
perda inaceitvel luxo tempo, de modo que um outro mtodo deve ser aplicado.
Voc se lembra do captulo de temporizadores? Voc se lembra o que as interrupes? Este exemplo conecta-los de uma forma prtica. O
regime mantm-se inalterado, eo desafio ainda est presente. necessrio prever um perodo de tempo longo o suficiente para detectar
mudanas na porta. Para este efeito, o temporizador Timer0 atribudo o divisor usado. Sempre que uma interrupo gerado com cada
estouro no registo temporizador, a varivel cnt automaticamente incrementado em 1 em cada interromper a execuo de rotina. Quando a
varivel atinge o valor de 400, o PORTB incrementado de 1. Todo o procedimento ocorre "entre as prateleiras", que permite que o
microcontrolador para fazer outra tarefa.
// Como sadas
PORTB = 0x0;
TMR0 = 96;
INTCON = 0xA0;
cnt = 0;
//
//
//
//
Redefinir PORTB
Temporizador T0 conta 96-255
TMR0 Interrupes habilitadas
A varivel cnt atribudo um 0
no {
// loop infinito
se (== cnt 400) {
// Aumento PORTB aps interrupes 400
PORTB PORTB = ++; // Aumento do nmero PORTB 1
cnt = 0;
// Reinicie a varivel cnt
}
} enquanto (1);
}
Sempre que um estouro no registo temporizador TRM0 ocorre, ocorre uma interrupo.
vazio interrupo () {
cnt ++;
// Com uma interrupo CNT incrementado por 1
PIR1.TMR1IF = 0;
// Redefinir bit TMR1IF
TMR1H = 0x80;
// O valor inicial devolvido nos registos
TMR1L = 0x00;
// TMR1H e TMR1L temporizador
}
vazio main () {
ANSEL = 0;
ANSELH = 0;
PORTB = 0xF0;
TRISB = 0;
T1CON = 1;
PIR1.TMR1IF = 0;
TMR1H = 0x80;
TMR1L = 0x00;
PIE1.TMR1IE = 1;
cnt = 0;
INTCON = 0xC0;
fazer {
// loop infinito
se (== cnt 76) {
// Alterar o estado do PORTB 76 interrupes
PORTB PORTB = ~; // Nmero no PORTB investido
cnt = 0;
// Redefinir varivel cnt
}
} enquanto (1);
}
Neste caso, uma interrupo ativado aps um estouro ocorre no temporizador registar TMR1 (TMR1H, TMR1L). Alm disso, a combinao
de bits pode variar na porta POTRB difere do exemplo anterior.
PORTB PORTB = ~;
}
vazio interrupo () {
se (PIR1.TMR2IF) {
// Se o bit TMR2IF = 1,
cnt ++;
// Aumento cnt varivel 1
PIR1.TMR2IF = 0;
// bit Reset e
TMR2 = 0;
// Reseta TMR2 registo
}
}
// Principal
vazio main () {
cnt = 0;
// Reinicie a varivel cnt
ANSEL = 0;
// Todos os pinos de E / S so configurados como digitais
ANSELH = 0;
PORTB = 0b10101010; // estado Logic nos pinos da PORTB
TRISB = 0;
// Todos os pinos do porto so configurados como sadas PORTB
T2CON = 0xFF;
// Definir o temporizador T2
TMR2 = 0;
// valor inicial do registrador TMR2 temporizador
PIE1.TMR2IE = 1;
// interrupo habilitado
INTCON = 0xC0;
// GIE e PEIE bits so definidos a 1
enquanto (1) {
// faz um loop infinito
se (cnt> 30) {
// Alterar o estado do PORTB depois de
mais de 30 interrupes //
Replace ();
// Funo Substituir inverte o estado PORTB
cnt = 0;
// Redefinir varivel cnt
}
}
}
Neste exemplo, uma interrupo ocorre aps um estouro ocorre no temporizador registar TMR2. Para reverter o estado lgico dos pinos da
porta a funo Replace, que normalmente no pertence a linguagem C padro usado.
4.7 EXEMPLO 5
Use o temporizador do co - Guardian
Este exemplo mostra como a no utilizar o temporizador do co guardio. Um comando utilizado para repor este temporizador omitido de
propsito no circuito principal do programa, que permite que o watchdog timer "ganhar a batalha do tempo" e redefinir o
microcontrolador. Portanto, o microcontrolador ir reiniciar sem parar, indicando que o LEDs piscantes porta PORTB.
4.8 Exemplo 6
Mdulo CCP1 como gerador de sinal PWM
Este exemplo ilustra o uso do mdulo CCP1 no modo de PWM. Para tornar as coisas mais interessantes, a durao dos pulsos na P1A
(PORTC, 2) sada pode ser alterado usando os botes de presso simbolicamente chamado 'Dark' e 'CLEAR'. A durao ajustada
apresentada como uma combinao binria em PORTB. O funcionamento deste mdulo est sob o controlo das funes pertencentes loja
livro de PWM. Aqui eles so usados trs deles:
1. PWM1_init tem
o
prottipo: vazio Pwm1_Init
freq define a frequncia do sinal PWM expressa em Hertz. Este exemplo igual a 5 kHz.
2. PWM1_Start tem o prottipo: vazio Pwm1_Start ( vazio );
3. PWM1_Set_Duty tem
o
prottipo: vazio Pwm1_Set_Duty
( curto
no
duty_ratio ajusta a durao do pulso em uma seqncia de pulsos.
( long fr
assinado duty_rat
A biblioteca PWM tambm contm a funo PWM_Stop usada para desativar este modo. Seu prottipo : vazio Pwm1_Stop ( vazio );
se (old_duty = ciclo_de_trabajo_actual!) {
// Se ciclo_de_trabajo_actual e
trabajo_anterior // ciclo_de no so iguais
PWM1_Set_Duty (ciclo_de_trabajo_actual);
// definir um novo valor PWM,
trabajo_anterior = ciclo_de_trabajo_actual ciclo_de; // Salva o novo valor
PORTB = trabajo_anterior ciclo_de;
// e exibi-lo em PORTB
}
Delay_ms (200); // tempo de atraso de 200mS
}
}
Para este exemplo funcione corretamente, voc precisa marcar as seguintes bibliotecas na janela Biblioteca Gerente antes de compilar o
programa:
PWM
Boto
4.9 EXEMPLO 7
Use o A / D
O A / D microcontrolador PIC16F887 utilizado neste exemplo. Eu preciso dizer que tudo um pedao de bolo? Um sinal analgico varivel
aplicada ao pino AN2, enquanto o resultado da converso de 10 bits mostrados na POTRB e PORTD (8 bits menos significativos no porto
PORTD e dois bits mais significativos em PORTB). Terra (GND) utilizada como tenso de referncia Vref- baixo, enquanto que a mais alta
tenso de referncia aplicada ao pino AN3. Isso permite que a escala de medida para esticar e encolher.
INa outras palavras, o A / D gera sempre um resultado binria de 10 bits, o que significa que reconhece 1024 nveis de tenso no total (2 10 =
1,024). A diferena entre os dois nveis de tenso no sempre o mesmo. Quanto menor for a diferena entre Vref + e Vref-, menor ser a
diferena entre os dois nveis de 1024. Como vimos, o A / D capaz de detectar pequenas alteraes na tenso.
// Como entradas
ANSELH = 0;
TRISB = 0x3F;
// Como sadas
TRISD = 0;
ADCON1.F4 = 1;
fazer {
temp_res = ADC_Read (2); // O resultado do conversor A / D copiado para temp_res
PORTD temp_res =;
// 8 bits menos significativos so movidos para a porta PORTD
PORTB = temp_res >> 2;
// dois bits mais significativos mover RB6 e RB7 pedaos
} enquanto (1);
// loop infinito
}
Para tornar este exemplo funcione corretamente, necessrio verificar a biblioteca ADC na janela Biblioteca Gerente antes de compilar o
programa:
ADC
4,10 Exemplo 8
Use EEPROM
Este exemplo mostra como escrever e ler EEPROM construdo. O programa funciona da seguinte maneira. O lao principal constantemente
l o contedo da localizao de memria EEPROM, no endereo 5 (decimal). Em seguida, o programa entra no loop infinito no qual PORTB
incrementado eo estado de entradas porta PORTA.2 est marcada. No momento de premir o boto de chamada de notas, um nmero
armazenado no nmero PORTB vai ser armazenado na EEPROM, directamente lida e mostrada na porta PORTD em forma binria.
// Como sadas
PORTD = 0;
TRISD = 0;
// Como sadas
TRISA = 0xFF;
// Como entradas
PORTD = EEPROM_Read (5);
// Leia o EEPROM no 5
fazer {
PORTB PORTB = ++;
delay_ms (100);
// Aumento PortB um
// tempo de atraso de 100ms
se (PORTA.F2)
EEPROM_Write (5, PORTB); // Se o boto MEMO, salvar o PORTB
PORTD = EEPROM_Read (5);
fazer {
enquanto (PORTA.F2);
}
}
enquanto (1);
}
Para verificar o funcionamento deste circuito, basta pressionar o boto MEMO e desligar o dispositivo. Depois de reiniciar o dispositivo, o
programa exibir o valor armazenado no porto PORTD. Lembre-se que, no momento da escrita, o valor foi exibido no PORTB.
Para tornar este exemplo funcione corretamente, necessrio verificar a biblioteca EEPROM na janela Biblioteca Gerente antes de compilar
o programa:
EEPROM
4,11 Exemplo 9
Dois dgitos LED contador, multiplexao
Neste exemplo, o microcontrolador funciona como um contador de dois dgitos. A varivel i incrementado (lento o suficiente para ser visvel)
e seu valor exibido em um display LED dois dgitos (99-0). O ponto o de permitir uma converso de um nmero binrio para um nmero
decimal e dividi-lo em dois dgitos (dezenas e unidades). Como os segmentos do mostrador de LED so ligados em paralelo, necessrio
assegurar que se alternam rapidamente ter uma impresso que emitem luz em simultneo (Time Division Multiplexing).
Neste exemplo, o temporizador TMR0 responsvel por diviso de tempo de multiplexao, enquanto a funo de mscara converte um
nmero binrio para decimal.
vazio interrupo () {
se (digit_no == 0) {
PORTA = 0;
// Desligue ambas as telas
PORTD = digit1;
// Definir mscara para unidades no visor
// Porto PORTD
PORTA = 1;
// Ative a exibio para unidades (LSD)
digit_no = 1;
} mais {
PORTA = 0;
// Desligue ambas as telas
PORTD = digit10; // Definir mscara para exibir pontuaes na
// Porto PORTD
PORTA = 2;
digit_no = 0;
}
TMR0 = 0;
INTCON = 0x20;
}
vazio main () {
OPTION_REG = 0x80; // Definir o temporizador TMR0
TMR0 = 0;
INTCON = 0xA0;
// Desativar PEIE, INTE, RBIE, T0IE Interrupes
PORTA = 0;
// Desligue ambas as telas
; TRISA = 0
PORTA // Todos os pinos so configurados
// Como sadas
PORTD = 0;
TRISD = 0;
// Como sadas
fazer {
para (i = 0; i <= 99; i ++) { // Contando 0-99
dgito = i% 10u;
digit1 = mscara (dgitos);
// Prepare a mscara para exibir unidades
dgito = ( carvo ) (i / 10U)% 10u;
digit10 = mscara (dgitos);
// Prepare a mscara para exibir dezenas
Delay_ms (1000);
}
} enquanto (1);
// loop infinito
}
mask.c
mask.c
example9.c
4,12 Exemplo 10
Para este exemplo funcione corretamente, voc precisa marcar as seguintes bibliotecas na janela Biblioteca Gerente antes de compilar o
programa:
ADC
LCD
text = "mikroElektronika";
Lcd_Out (1.1, texto);
ADCON1 = 0x82;
TRISA = 0xFF;
Delay_ms (2000);
text = "tenso";
enquanto (1) {
adc_rd = ADC_Read (2);
// converso A / D. Pino RA2 uma entrada.
Lcd_Out (2.1, texto);
// Escreve o resultado na segunda linha
TLong = ( long adc_rd) * 5000; // Converte o resultado em milivolts
TLong = TLong / 1023;
// 0. 1023 -> 0-5000mV
ch = TLong / 1000;
// Remover volts (milhares de milivolts)
// O resultado
Lcd_Chr (2,9,48 + ch);
Lcd_Chr_CP ('.');
ch = (TLong / 100)% 10;
Lcd_Chr_CP (48 + ch);
ch = (TLong / 10)% 10;
Lcd_Chr_CP (48+ ch);
TLong% ch = 10;
Lcd_Chr_CP (48 + ch);
Lcd_Chr_CP ("V");
Delay_ms (1);
}
}
4,13 EXEMPLO 11
Comunicao serial RS-232
Este exemplo mostra como usar o mdulo EUSART do microcontrolador. A conexo com um PC habilitado atravs da comunicao padro
RS-232. O programa funciona da seguinte maneira. Cada byte recebido atravs da comunicao serial exibido usando LEDs conectados
porta PORTB e, em seguida, volta automaticamente para o transmissor. Se ocorrer um erro de recepo, ele vai sinalizar para ligar o LED. A
maneira mais fcil verificar o funcionamento do dispositivo em uso quando usando um programa padro do Windows chamado Hyper
Terminal .
UART
4,14 Exemplo 12
Medio de temperatura atravs do sensor DS1820. Usando o protocolo "1-wire '...
A medio de temperatura uma das tarefas mais comuns executados pelo microcontrolador. Neste exemplo, um sensor de DS1820
utilizado para medir a. Ele capaz de medir na gama de 55 C a 125 C com 0,5 C de preciso. Para transmitir dados para um tipo
especial de comunicao serial microcontrolador chamado 1-wire usado. Devido ao facto de estes sensores so simples de usar e de
grande capacidade, os comandos utilizados para a sua operao e tm a forma de funes de controlo armazenados na biblioteca
One_Wire. No total, os seguintes trs funes:
Este exemplo mostra a vantagem da utilizao de bibliotecas com funes prontas para uso. Especificamente, no rever a documentao
fornecida pelo fabricante para usar o sensor. Basta copiar qualquer uma destas funes no programa. Se voc quiser saber como declarar,
basta clicar em qualquer um deles e selecionar a opo Ajuda.
Lcd_Init ();
// Inicializar o LCD
Lcd_Cmd (_LCD_CLEAR);
// Limpar o LCD
Lcd_Cmd (_LCD_CURSOR_OFF); // Desligue o cursor
Lcd_Out (1, 1, "Temperature");
// Mostrar a classe de personagem 'C' para C
Lcd_Chr (2,13,223); // outros monitores LCD possuem cdigos diferentes
// Personagem com o grau
// se voc v a letra grega alfa, tente digitar 178 em vez de 223
Lcd_Chr (2,14, 'C');
--- // Loop principal
do {
// --- realizar leitura de temperatura
Ow_Reset (& PORTE, 2);
// redefinir sinal OneWire
Ow_Write (& PORTE, 2, 0xCC); // Execute o comando SKIP_ROM
Ow_Write (& PORTE 2, 0x44); // Executa o comando CONVERT_T
Delay_us (120);
Ow_Reset (PORTE & 2);
Ow_Write (& PORTE, 2, 0xCC); // Execute o comando SKIP_ROM
Ow_Write (& PORTE, 2, 0xBE); // Executa o comando READ_SCRATCHPAD
temp = Ow_Read (PORTE & 2);
temp = (Ow_Read (PORTE & 2) << 8) + temperatura;
// --- Formato e exibir o resultado no LCD
Display_Temperature (temp);
Delay_ms (500);
} enquanto (1);
}
Para este exemplo funcione corretamente, voc precisa marcar as seguintes bibliotecas na janela Biblioteca Gerente antes de compilar o
programa:
One_Wire
LCD
4,15 EXEMPLO 13
Gerao de som, biblioteca de som ...
Os sinais de udio so usados frequentemente quando voc precisa chamar a ateno do usurio, confirmar que um dos botes for
pressionado, o aviso que atingiu os valores mnimos ou mximos etc. Eles podem ser um simples melodias de sinal sonoro e um perodo
mais longo ou mais curto. Neste exemplo, a gerao de som, por meio de funes pertencentes biblioteca de som mostrado.
Alm destas funes, a funo do boto pertencente mesma biblioteca utilizada para testar botes de presso.
Para este exemplo funcione corretamente, voc precisa marcar as seguintes bibliotecas na janela Biblioteca Gerente antes de compilar o
programa:
Boto
Som
4,16 EXEMPLO 14
Utilizar o visor LCD grfica
Um LCD grfico (GLCD) fornece um mtodo avanado para a exibio de mensagens. Enquanto um personagem LCD pode exibir somente
caracteres alfanumricos, grfico LCD pode exibir mensagens sob a forma de desenhos e mapas de bits. O LCD grfico usado com mais
freqncia tem uma resoluo de tela de 128x64 pixels. Um contraste GLCD pode ser ajustado atravs do potencimetro P1.
Neste exemplo, o GLCD exibe uma seqncia de imagens, dos quais um bitmap um caminho armazenadas em outro arquivo chamado
truck_bmp.c. Para ativar esse programa funcione corretamente, voc deve adicionar este arquivo como um arquivo de origem para o seu
projecto.
Pr-processamento diretivas includas neste exemplo permite que voc escolha se deseja exibir toda a seqncia de imagens ou apenas a
um curto seqncia. Por padro toda a seqncia de imagens exibida. No entanto, adicionando um comentrio na frente da
directivaCOMPLETE_EXAMPLE #define desativado exibio de algumas imagens na seqncia. Se dito (ou excludo) desta directiva, as
instrues entre as directivas COMPLETE_EXAMPLE #ifdef e #endif no ser compilado, por isso no vai funcionar.
vazio main () {
unsigned short ii;
Char * SomeText;
/ * Define um macro chamado COMPLETE_EXAMPLE esta directiva. Mais tarde, no
programa, testar a directiva ifdef se a macro est definido. Se esta apagada
line ou se ela se torna um comentrio, sees de cdigo entre o
ifdef e endif directivas no ser compilado. * /
#define COMPLETE_EXAMPLE // Coloque esta linha como um comentrio se voc quer
// exibe a verso curta da sequncia
ANSEL = 0;
// definir o PIN AN como digitais
ANSELH = 0;
C1ON_bit = 0;
comparadores // Desabilitar
C2ON_bit = 0;
Glcd_Init ();
// inicializar o GLCD
Glcd_Fill (0x00); // Apagar o GLCD
enquanto (1) {
// Desenha a caixa
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1.127.127.127.127.255.255.247.251.123.191, 95, 93125189,
189, 63, 93, 89.177.115.243.229.207, 27, 63.119.255.207.191.255,
255.255.255.255.255.255.255.127.127.127.127.127.127.127.127.255,
255.255.127.127.125.120.120.120.120.120.248.120.120.120.120.120,
120.248.248.232.143, 0, 0, 0, 0, 0, 0, 0, 0128240248,
120188220, 92,252, 28, 28, 60, 92, 92, 60120248248, 96,192,
143.168.216.136, 49, 68, 72, 50,160, 96, 0, 0, 0, 0, 0, 0,
0, 0, 0.128.192.248.248.248.248.252.254.254.254.254.254.254,
254.254.254.254.254.255.255.255.255.255.246.239.208.246.174.173,
169.128.209.208.224.247.249.255.255.252.220.240.127.255.223.255,
255.255.255.255.255.254.254.255.255.255.255.255.255.255.254.255,
255.255.255.255.255.255.254.254.254.254.254.254.254.254.254.254,
254.254.254.254.255.255.255.255.255.255.254.255.190.255.255.253,
240.239.221.223.254.168.136.170.196.208.228.230.248.127.126.156,
223.226.242.242.242.242.242.177, 32, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 7, 7, 7, 7, 7, 15,
15, 15, 7, 15, 15, 15, 7, 7, 15, 14, 15, 13, 15, 47, 43, 43,
43, 43, 43, 47.111.239.255.253.253.255.254.255.255.255.255.255,
191.191.239.239.239.191.255.191.255.255.255.255.255.255.255.255,
255.255.255.255.255.255.255.255.255.255.255.255.255.255.255.255,
255.255.255.255.127.127.127.127.255.255.191.191.191.191.255.254,
255.253.255.255.255.251.255.255.255.127.125, 63, 31, 31, 31, 31,
31, 31, 63, 15, 15, 7, 7, 3, 3, 3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 3, 3, 3, 11, 11, 11, 11, 7, 3, 14, 6, 6,
6, 2, 18, 19, 19, 3, 23, 21, 21, 17, 1, 19, 19, 3, 6, 6,
14, 15, 15, 7, 15, 15, 15, 11, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
Para tornar este exemplo funcione corretamente, necessrio verificar a janela livraria GLCD Library Manager antes de compilar o
programa. Tambm necessrio incluir o documento truck_bmp.c no projecto.
4,17 EXEMPLO 15
Use o touchpad ...
Um painel de toque um painel transparente auto-adesivo fino colocado sobre a tela de um LCD grfico. Ele muito sensvel presso
assim um toque macio faz com que algumas alteraes no sinal de sada. Existem diferentes tipos de painis de toque. O mais simples o
painel de toque resistivo que ser discutido aqui.
Um painel de toque composto por duas folhas rgidas, formando uma estrutura de "sanduche" tendo camadas resistivas em suas faces
internas. A resistncia destas camadas geralmente no exceda 1 kohm. Os lados opostos das folhas tm contactos de acesso a um cabo de
fita.
O procedimento para determinar as coordenadas da posio do painel que tenha sido pressionada pode ser dividido em duas etapas. O
primeiro est determinando a coordenada X, ea segunda determinar a coordenada Y da posio.
Para determinar a coordenada X, necessrio ligar o contacto deixado na superfcie de um solo (terra) e o contacto correcto com a fonte de
alimentao. Isso permite que um divisor de tenso, pressionando o painel de toque. O valor de tenso obtido no divisor pode ser lido na
superfcie de contacto inferior B. A tenso pode variar na gama de 0 V para a tenso fornecida pela fonte de alimentao e depende da
coordenada X. Se o ponto de contacto est perto Uma superfcie esquerda, a tenso prximo de 0V.
Para a determinao da coordenada Y, necessrio ligar o contacto com a superfcie de fundo B at o solo (terra), enquanto que o contacto
superior est ligado fonte de alimentao. Neste caso, a tenso pode ser lido na superfcie de contacto esquerdo A.
Para conectar uma tela sensvel ao toque para o microcontrolador necessrio criar um circuito para o controle do painel de toque.Atravs
deste circuito, o microcontrolador conecta os contactos adequados do painel de toque para terra e tenso de alimentao (conforme descrito
acima) para determinar as coordenadas X e Y. A menor superfcie de contato B eo contato esquerda da superfcie A Eles esto ligados a um
conversor A / D do microcontrolador. As coordenadas X e Y so determinados atravs da medio da tenso nos respectivos contactos. O
software para exibir um menu no LCD grfico, ligar e desligar o painel de toque (painel de controle sensvel ao toque) e ler os valores de
conversor A / D que, na verdade, representam as coordenadas X e Y da posio.
Depois de determinar as coordenadas, possvel decidir o que queremos fazer o microcontrolador. Este exemplo mostra como ligar e
desligar dois pinos do microcontrolador digitais, conectado a LEDs A e B.
Neste exemplo, as funes que pertencem ao GLCD ADC e bibliotecas so utilizadas.
Considerando que a superfcie do painel de toque um pouco maior do que o grfico LCD, quando necessitar de maior preciso na
determinao das coordenadas, necessrio incluir a calibrao do painel de toque de software.
da string
msg1 [] =
msg2 [] =
msg3 [] =
msg4 [] =
msg5 [] =
msg6 [] =
msg7 [] =
msg8 [] =
// Inicializao GLCD
Glcd_Init ();
// Glcd_Init_EP5
Glcd_Set_Font (FontSystem5x7_v2, 5, 7, 32); // Selecione o tamanho da fonte 5x7
Glcd_Fill (0);
// Delete GLCD
Glcd_Write_Text (msg1,10,0,1);
Glcd_Write_Text (msg2,17,7,1);
// exibe botes no GLCD:
Glcd_Rectangle (8,16,60,48,1);
Glcd_Rectangle (68,16,120,48,1);
Glcd_Box (10,18,58,46,1);
Glcd_Box (70,18,118,46,1);
// Exibir mensagens em botes
Glcd_Write_Text (msg3,14,3,0);
Glcd_Write_Text (msg5,14,4,0);
Glcd_Write_Text (msg4,74,3,0);
Glcd_Write_Text (msg6,74,4,0);
enquanto (1) {
// l XY e converter a resoluo de 128x64 pixels
x_coord = getX ();
y_coord = Gety ();
x_coord128 = (x_coord * 128) / 1024;
y_coord64 = 64 - ((y_coord * 64) / 1024);
// Se BUTTON1 foi pressionado
se ((x_coord128> = 10) && (x_coord128 <= 58) && (y_coord64> = 18) &&
(Y_coord64 <= 46)) {
se (PORTC.F6 == 0) {
// Se RC6 = 0
PORTC.F6 = 1;
// reverter o estado lgico do pino RC6
Glcd_Write_Text (msg7,14,4,0);
// exibe uma nova mensagem: RC6 ON
}
mais { // Se RC6 = 1
PORTC.F6 = 0;
// reverter o estado lgico do pino RC6
Glcd_Write_Text (msg5,14,4,0);
// exibe uma nova mensagem: RC6 OFF
}
}
// Se BUTTON2 foi pressionado
se ((x_coord128> = 70) && (x_coord128 <= 118) && (y_coord64> = 18) &&
(Y_coord64 <= 46)) {
se (PORTC.F7 == 0) { // Se RC7 = 0
PORTC.F7 = 1;
// reverter o estado lgico do pino RC7
Glcd_Write_Text (msg8,74,4,0);
// exibe uma nova mensagem: RC7 ON
}
mais { // Se RC7 = 1
PORTC.F7 = 0;
// reverter o estado lgico do pino RC7
Glcd_Write_Text (msg6,74,4,0);
// exibe uma nova mensagem: RC7 OFF
}
}
Delay_ms (100);
}
}
Para este exemplo funcione corretamente, voc precisa marcar as seguintes bibliotecas na janela Library Manager antes de compilar o
programa.
GLCD
ADC
C_Stdlib
Uma vez terminado, o programa deve ser carregado no chip. Voc precisa de um hardware adequado para tornar isso possvel - um
programador.
Programar o microcontrolador
Como mencionado, para permitir carregar um cdigo hexadecimal para o microcontrolador necessrio proporcionar um dispositivo especial
chamado o programador, com o software apropriado. Um grande nmero de programas e circuitos electrnicos utilizados para este fim pode
ser encontrado na internet. O procedimento basicamente o mesmo para todos eles e se parece com o seguinte:
seo
descreve
brevemente
uso
do
programa
(compilador) mikroC
PRO
para
PIC e
software
de
programao
OK. O programa tem-se escrito e testado com o simulador. Ele no relatou quaisquer erros durante o processo de compilao no cdigo
hexadecimal ? Parece que tudo est sob controle ...
Aprovada. O programa foi escrito e testado com o simulador. Voc no relatou qualquer erro durante o processo de compilao no cdigo
hexadecimal? Parece que tudo funciona perfeito ...
O programa foi compilado com sucesso. Apenas carregado para o microcontrolador. Agora voc precisa de um programador que
compreende software e hardware. Inicie o programa PICFlash .
A configurao simples e sem necessidade de explicaes adicionais (tipo de frequncia do oscilador do relgio microcontrolador e etc.).
isso! O microcontrolador programado e tudo est pronto para a operao. Se voc no estiver satisfeito, fazer algumas alteraes no
programa e repita o procedimento. Quanto tempo? At que esteja satisfeito ...
A verso de alta qualidade tem os pinos ligados aos indicadores LED, LCD exibe, sensores de temperatura e outros componentes que
podem ser constitudos por um dispositivo de destino. Se necessrio, todas estas perifricos possam ser ligados ao microcontrolador atravs
de pontes. Isso permite que o teste de programa inteiro na prtica, mesmo durante o processo de desenvolvimento, porque o
microcontrolador no "sabe ou no se importa" se a sua entrada para boto de presso ou um construdo em um sensor de dispositivo real
ativada.
Se voc tem um sistema de desenvolvimento, o processo de programa e testar um programa ainda mais simples. Dado que o mikroC PRO
para PIC (no seu PC) eo PICflash hardware programador (em seu sistema de desenvolvimento) funcione corretamente, o processo de
compilao de um programa e programar o microcontrolador realizada em uma nica passagem - quando voc clica no cone do Programa
Construir e no compilador. A partir de agora, qualquer alterao no programa afetam imediatamente o funcionamento de qualquer
componente do sistema de desenvolvimento.
Voc concorda com a gente que hora de se divertir?
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.