livro pic-c

20
 Sumário 1 - Micro controlador es PIC ........................................................................................ 4 1.1 - Arquiteturas de Micro controladores PIC ....................................................... 4 1.2 - Ciclos de Máquina .......................................................................................... 5 1.3 - PIC16F877...................................................................................................... 6 1.3.1 - Folha de Mérito ........................................................................................ 6 1.3.2 - Principais Características ......................................................................... 6 1.4 - PIC16F628...................................................................................................... 6 1.4.1 - Folha de Mérito ........................................................................................ 6 1.4.2 - Principais Características ......................................................................... 6 1.5 - PIC12F675...................................................................................................... 6 1.5.1 - Folha de Mérito ........................................................................................ 6 1.5.2 - Principais Características ......................................................................... 6 2 - Linguagem de Programação C ............................................................................... 7 2.1 - Operadores Aritméticos .................................................................................. 7 2.2 - Operadores Relacionais.................................................................................. 7 2.3 - Operadores Booleanos .................................................................................... 8 2.4 - Operadores Bit-a-Bit....................................................................................... 8 2.5 - Tipos numéricos .............................................................................................. 8 2.6 - Tipos de Dados ............................................................................................... 9 2.7 - Principais Comandos ...................................................................................... 9 2.7.1 - Desvio de Fluxo Condicional................................................................... 9 2.7.1.1 Comando if........................................................................................ 10 2.7.1.2 Comando switch................................................................................ 10 2.7.1.3 Operador unário “?” .......................................................................... 11 2.7.2 - Laço de Repetição Condicional (loop) ................................................... 11 2.7.2.1 Comando while.................................................................................. 11 2.7.2.2 Comando do while............................................................................. 11 2.7.2.3 Comando for...................................................................................... 11 3 - Principais Funções ............................................................................................... 12 3.1 - Comentários de um Pr ograma....................................................................... 12 3.2 - Estrutura de um Pr ograma Mínimo .............................................................. 13 3.3 - Diretivas de Compilação e Configuração do Hardware ............................... 13 3.3.1 - Fuses ....................................................................................................... 13 3.4 - Entrada e Saída padr ão de dados.................................................................. 15 3.4.1 - Direção dos dados.................................................................................. 15 3.4.1.1 STANDARD_IO............................................................................... 15 3.4.1.2 FAST_IO ........................................................................................... 15 3.4.1.3 FIXED_IO ......................................................................................... 16 3.5 - Fun ções definidas pelo usuário – UDF (User Defined Functions) ............... 16 4 - Har dware Interno ................................................................................................. 17 4.1 - USART - Comunicação Serial...................................................................... 17 4.1.1 - Comando pr intf ......................................................................................17 4.1.2 - Comando getc, kbhit e gets ....................................................................17 4.1.3 - Exemplo porta serial.............................................................................. 18

Upload: george-santino

Post on 11-Jul-2015

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 1/20

Sumário

1 - Micro controladores PIC ........................................................................................ 41.1 - Arquiteturas de Micro controladores PIC .......................................................41.2 - Ciclos de Máquina .......................................................................................... 5

1.3 - PIC16F877 ......................................................................................................61.3.1 - Folha de Mérito ........................................................................................ 61.3.2 - Principais Características ......................................................................... 6

1.4 - PIC16F628 ......................................................................................................61.4.1 - Folha de Mérito ........................................................................................ 61.4.2 - Principais Características ......................................................................... 6

1.5 - PIC12F675 ......................................................................................................61.5.1 - Folha de Mérito ........................................................................................ 61.5.2 - Principais Características ......................................................................... 6

2 - Linguagem de Programação C ............................................................................... 72.1 - Operadores Aritméticos ..................................................................................7

2.2 - Operadores Relacionais .................................................................................. 72.3 - Operadores Booleanos ....................................................................................82.4 - Operadores Bit-a-Bit .......................................................................................82.5 - Tipos numéricos ..............................................................................................82.6 - Tipos de Dados ............................................................................................... 92.7 - Principais Comandos ...................................................................................... 9

2.7.1 - Desvio de Fluxo Condicional ...................................................................92.7.1.1 Comando if ........................................................................................ 102.7.1.2 Comando switch ................................................................................ 102.7.1.3 Operador unário “?” .......................................................................... 11

2.7.2 - Laço de Repetição Condicional (loop) ...................................................11

2.7.2.1 Comando while ..................................................................................112.7.2.2 Comando do while .............................................................................112.7.2.3 Comando for ...................................................................................... 11

3 - Principais Funções ............................................................................................... 123.1 - Comentários de um Programa .......................................................................123.2 - Estrutura de um Programa Mínimo .............................................................. 133.3 - Diretivas de Compilação e Configuração do Hardware ............................... 13

3.3.1 - Fuses .......................................................................................................133.4 - Entrada e Saída padrão de dados .................................................................. 15

3.4.1 - Direção dos dados .................................................................................. 153.4.1.1 STANDARD_IO ............................................................................... 15

3.4.1.2 FAST_IO ........................................................................................... 153.4.1.3 FIXED_IO ......................................................................................... 16

3.5 - Funções definidas pelo usuário – UDF (User Defined Functions) ............... 164 - Hardware Interno ................................................................................................. 17

4.1 - USART - Comunicação Serial ......................................................................174.1.1 - Comando printf ...................................................................................... 174.1.2 - Comando getc, kbhit e gets .................................................................... 174.1.3 - Exemplo porta serial .............................................................................. 18

Page 2: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 2/20

4.2 - Interrupções por Timer ................................................................................. 184.2.1 - Exemplos Interrupção por Timer ........................................................... 18

4.3 - PWM (Pulse Width Modulation) ..................................................................184.3.1 - Configuração do PWM .......................................................................... 184.3.2 - Exemplo PWM ....................................................................................... 19

4.4 - EEPROM ...................................................................................................... 194.4.1 - Exemplo EEPROM ................................................................................ 194.5 - Leitura Analógica ..........................................................................................19

4.5.1 - Exemplo Leitura Analógica ................................................................... 195 - Exemplos de código ............................................................................................. 20

5.1 - PIC12F675 .................................................................................................... 20

Page 3: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 3/20

Introdução

Page 4: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 4/20

1 - Micro controladores PIC

O PIC é um circuito integrado produzido pela “Microchip Technology Inc”, que

 pertence a categoria dos “micro controladores”, ou seja, um componente integrado que emum único dispositivo contem todos os circuitos necessários para realizar um completosistema digital programável. O PIC pode ser visto externamente como um circuitointegrado TTL ou CMOS normal, mas internamente dispõe de todos os dispositivos típicosde um sistema micro-processado, ou seja, possui em seu interior:

CPU (Central Processor Unit ou Unidade de Processamento Central) com afinalidade de interpretar as instruções de programa;

Memória PROM (Programmable Read Only Memory ou Memória ProgramavelSomente para Leitura) na qual possibilitará de maneira permanente (podendo alterar) asinstruções do programa;

Memória RAM (Random Access Memory ou Memória de Acesso Aleatório)

utilizada para memorizar as variáveis utilizadas pelo programa;Conjunto de LINHAS de I/O (entrada e saída) para controlar dispositivos externosou receber pulsos de sensores, chaves, etc;

Dispositivos auxiliares ao funcionamento, como gerador de clock, bus, contador,entre outros.

A presença de todos estes dispositivos em um espaço extremamente pequeno, da ao projetista ampla gama de trabalho e enorme vantagem em usar um sistema micro- processado, onde em pouco tempo e com poucos componentes externos podemos fazer oque seria oneroso fazer com circuítos tradicionais.

O PIC esta disponível em uma ampla gama de modelos para melhor adaptar-se asexigências de projetos específicos, diferenciando-se pelo número de linha de I/O (InputOutput) e pelo conteúdo do dispositivo. Inicia-se com modelo pequeno identificado pelasigla PIC12Xxx dotado de 8 pinos, até chegar a modelos maiores com sigla PIC18Xxxdotados de 40 pinos. Uma descrição detalhada da tipologia do PIC é disponível no site daMicrochip (www.microchip.com) , onde conseguimos encontrar grandes e variadasquantidades de informações técnicas, software de apoio, exemplos de aplicações eatualizações disponíveis.

1.1 - Arquiteturas de Micro controladores PIC

A arquitetura de um sistema digital define quais são as partes que compõem osistema, e quais estão interligadas. As duas arquiteturas mais comuns para sistemas

computacionais digitais são Von Neuman e Harward. Na arquitetura de Von Neuman, a Unidade Central de Processamento (UCP ou

CPU) é interligada à memória por um único barramento (bus). O sistema é composto por uma única memória onde são armazenados dados e instruções, já na arquitetura Harvard, aUCP é interligada a memória de dados e a memória de programa por barramentoespecífico.

O PIC possui arquitetura Harvard. Este tipo de arquitetura permite que, enquantouma instrução é executada, outra seja “buscada” da memória, o que torna o processamento

Page 5: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 5/20

mais rápido. Como o barramento de instruções é maior do que 8 bits, o próprio registrador da instrução já inclui o dado e o local onde ela vai operar (quando necessário), o quesignifica que apenas uma posição de memória é utilizada por instrução (OPCODE),economizando assim muita memória de programa.

Dessa forma, podemos observar que dentro da palavra do OPCODE, que pode ser 

de 12, 14 ou 16 bits, não sobra muito espaço para o código da instrução propriamente dito.Por isso, os PIC’s utilizam uma tecnologia chamada RISC, que significa ReducedInstruction Set Computer (Computador com Set de Instruções Reduzido), possuindo cerca35 instruções.

1.2 - Ciclos de Máquina

 Nos micro controladores PIC, o sinal de clock é internamente dividido por quatro(1.2). Portanto, para um clock externo de 4MHz, temos um clock interno de 1 MHz e,conseqüentemente, cada ciclo de máquina dura 1μs. A divisão do clock por quatro forma asfases Q1, Q2, Q3 e Q4. O program Counter (PC) é incrementado automaticamente na fase

Q1 do ciclo de máquina e a instrução seguinte é buscada da memória de programa earmazenada no registrador de instruções no ciclo Q4. Ela é decodificada e executada no próximo ciclo, no intervalo de Q1 e Q4. Essa característica de buscar a informação em umciclo de máquina e executá-la no próximo é chamada de “PipeLine”.

Ela permite que quase todas as instruções sejam executadas em apenas um ciclo,gastando assim 1 μs (para um clock de 4 MHz) e tornando o sistema muito mais rápido. Asúnicas exceções referem-se às instruções que geram “saltos” no PC, como chamadas derotinas e retornos.

Figura 1. Ciclos de clock do PIC.

Page 6: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 6/20

1.3 - PIC16F877

1.3.1 - Folha de Mérito

1.3.2 - Principais Características

1.4 - PIC16F628

1.4.1 - Folha de Mérito

1.4.2 - Principais Características

1.5 - PIC12F675

1.5.1 - Folha de Mérito

1.5.2 - Principais Características

Page 7: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 7/20

2 - Linguagem de Programação C

A linguagem C é uma linguagem considerada de baixo nível, ou seja, um linguajar 

mais próximo da máquina, no entanto é muito mais alto nível do que o Assembly. O autor deste livro considera a Linguagem C, uma linguagem de alto nível quando utilizado para programar micro controladores. A facilidade de programação é diretamente relacionadacom o tipo de compilador utilizado, pois existem centenas de compiladores C para PIC, noentanto poucos possuem boa otimização de código gerado proporcionando umdesenvolvimento facilitado e ágil. Neste livro será abordado o compilador CCS, por ser simples, fácil e gera código muito otimizado.

2.1 - Operadores Aritméticos

A Liguagem C possui uma gama bastante limitada de operadores aritméticos, mas o

mais importante é compreender a prioridade de solução aritmética, abaixo são apresentadosos operadores e sua prioridade:

1ª ( ) parênteses, utilizados para modificar a prioridadearitméticas;

2ª / ou * divisão e multiplicação;3ª + ou - soma e subtração.

Sempre que existirem operadores de mesma prioridade, sempre devemos executar ocalculo da esquerda para a direita. Existe ainda um operador que pode ser agregado asegunda prioridade que é %, também conhecido com mod. O % é um operador que fornece

o resto da divisão inteira.

2.2 - Operadores Relacionais

Os operadores relacionais geralmente são utilizados para relacionar grandezas,normalmente em comandos de desvio de fluxo ou operações condicionais. Os operadoresrelacionais são:

> maior;>= maior ou igual;

< menor;<= menor ou igual;!= diferente;== igual.

Os operadores relacionais devem ser utilizados comparando duas em duasexpressões, caso deseje expandir as possibilidades de validação, deve-se utilizar osoperadores booleanos.

Page 8: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 8/20

2.3 - Operadores Booleanos

Os operadores booleanos são utilizados para expandir a quantidade de validaçõesem um mesmo passo, diminuindo a estruturação de uma validação. Os operadores booleanos da Linguagem C são:

! NOT lógico;&& E lógico;|| OU lógico;

Os operadores lógicos ou booleanos, assim como os operadores aritméticos possuem uma ordem de precedência, caso queira mudar a prioridade, deve-se utilizar os parênteses.

1ª O operador lógico “NÃO” inverte o resultado de uma expressão.2ª O operador lógico “E” somente retorna verdadeiro se todas expressões forem

verdadeiras;

3ª O operador lógico “OU” somente retorna falso se todas as expressões foremfalsas;

2.4 - Operadores Bit-a-Bit

Os operadores Bit-a-Bit são os procedimentos mais importantes quando é desejadotratar os dados de entrada ou saída, ou seja, processar os dados de um formato para outros.Além dos operadores que serão descritos a seguir, a aritmética padrão também éfundamental. Para compreender bem essa seção é fundamental que o desenvolvedor tenhauma excelente noção de números binários (Tipos numéricos, seção 2.5 página 8). Osoperadores bit-a-bit são:

& operador booleano E;| operador booleano OU;! operador booleano NÃO;~ operador booleano NOT com complemento de 1;^ operador booleano XOR;>> deslocamento a direita;<< deslocamento a esquerda.

2.5 - Tipos numéricos

Os dados numéricos podem ser apresentados usando vários sistemas numéricosdistintos, entre eles temos:

0Bxxxxxxxx formato binário, onde os “x” devem ser substituídos por 0 ou1;

0Xn formato hexadecimal, substituir os “nn” pelo valor em hexa;

Page 9: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 9/20

0n formato octal, substituir os “nn” pelo valor em octal;x formato decimal, substituir o “x” pelo valor desejado.

Muito cuidado quando utilizar números, pois sempre que um número começar por “0” significa que o tipo de dado não é decimal e dependerá dos próximos caracteres.

2.6 - Tipos de Dados

Cada tipo de compilador define qual o intervalo de abrangência dos seus tipos dedados, como este livro aborda o compilador CCS, abaixo são apresentados os tipos e suaabrangência:

Tipo do dado Bit´s Abrangênciashort int 1 Somente 0 ou 1int 8 Somente números inteiros de 0 a 255char 8 Caracteres com código de 0 a 255

long int, int16 16 Números inteiros de 0 a 65535int32 32 Números inteiros de 0 a 4294967295float 32 Números fracionários 3.4E-38 a 3.4E+38

Os tipos de dados acima pode ser utilizados com modificadores, que permitemdividar o número pela metade, utilizando a outra metade do intervalo para valoresnegativos, os modificadores são:

Modificador Descriçãounsigned Sem sinal, ou seja somente positivos, esse é o modo padrão

para a maioria dos tipos de dados;

signed Com sinal, a parte positiva ocupa somente a metade dointervalo e a o restante fica na parte negativa

2.7 - Principais Comandos

A Linguagem C não possui muitos comandos, de qualquer forma aqui somenteserão apresentados os mais importantes e mais utilizados.

2.7.1 - Desvio de Fluxo Condicional

O desvio de fluxo condicional pode ser utilizado através de três comandos. Umdesvio de fluxo condicional sempre ocorre dado o resultado de uma condição,condição essaque geralmente utiliza uma comparação de grandezas (Operadores Relacionais, seção 2.2  página 7) e expandidos por operadores booleanos (seção 2.3 página 8). Os desvios de fluxocondicionais também são conhecidos como comandos de passagem.

Page 10: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 10/20

2.7.1.1 Comando if 

O comando “if” (significa “Se”) pode ser utilizado de duas formas distintas, umaforma é criar um bloco de execução somente se a instrução for verdadeira ou falsa, outraforma é criar um bloco de execução para a situação verdadeira e outro bloco para acondição falsa.

Para somente testar um bloco de execução, que pode ou não ser executado, utiliza-se:

if(Condição){

Comandos a serem executados caso a condição for verdadeira

}

Ou pode-se utilizar a seguinte estrutura quando desejar testar ambas as ocorrências(neste caso uma das duas vai ser executada) de maneiras distintas:

if(Condição){

Comandos a serem executados caso a condição for verdadeira

}else

{Comandos a serem executados caso a condição for falsa

}

 Nada impede que um if seja utilizado dentro de outro, isso se chama encadeamentode condições.

2.7.1.2 Comando switch

O comando switch (significa trocar, mudar de estado, ligar desligar) é uma boaescolha em situações de múltipla escolha, no entanto somente é possível quando o valor emestudo for do tipo ordinal, ou seja sabe-se quem é o antecessor e o sucessor, sua estrutura é:

switch(Variável){

case Valor1:Comandos a serem executados;

 break;

case ValorN :Comandos a serem executados; break;

default:

Comandos a serem executados;

 break;

}

O comando “break” serve para informar que o bloco acabou, caso o mesmo não sejautilizado, o ponteiro de execução entrará no case correspondente começará a executar todos blocos seguintes até encontrar um “break”.

A opção “default” é opcional, e sempre será executada quando nenhum dos casessatisfazer o valor desejado pelo “switch”.

Page 11: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 11/20

2.7.1.3 Operador unário “?”

O operador unário “?” é um comando de condição rápida, que possui a seguinteestrutura:

Variável = Condição?ValorVerdadeiro:ValorFalso;

2.7.2 - Laço de Repetição Condicional (loop)

O Laço de repetição é similar ao desvio de fluxo condicional, no entanto ao invés desomente passar pelo bloco de comandos e seguir em diante, o laço fica repetindo o bloco decomandos enquanto a condição for verdadeira.

2.7.2.1 Comando while

O comando while (significa “enquanto”), fica repetindo o bloco de comandosenquanto sua condição for verdadeira, caso houver um erro de lógica, pode ocorrer que o programa fique eternamente preso a laço travando seu funcionamento.

while(Condição){

Comandos a serem executados caso a condição for verdadeira

}

2.7.2.2 Comando do while

O comando do while (significa “faça enquanto”) é similar ao while, no entanto ocomando while é pré condicionado para executar o bloco de comandos, já o do while é poscondicionado, ou seja, no caso do comando do while, mesmo que a condição seja falsa,

 pelo menos uma vez o bloco será executado, característica que não ocorre no while.do{

Comandos a serem executados

}while(Condição);

2.7.2.3 Comando for

O comando for (significa “para”) na Linguagem C padrão é um dos comandos mais poderosos, no entanto no caso de micro controladores é somente mais um, sua sintaxe:

for(Inicialização; Condição; Passo){

Comandos a serem executados caso a condição for verdadeira

}

 Na inicialização ocorrem as atribuições de valores inicias das variáveis, naCondição são colocadas as condições de repetição e no passo o incremento ou decrementodas variáveis.

Page 12: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 12/20

3 - Principais Funções

Funções são subrotinas criadas para facilitar a programação, sendo formados por 

vários comandos com um objetivo em comum. As funções podem já vir prontas com ocompilador ou então criadas pelo usuário (UDF, seção 3.5 página 16). A seguir serãoapresentadas algumas das principais funções disponíveis no compilador CCS.

3.1 - Comentários de um Programa

Um programa somente pode ser considerado como tal se estiver bem comentado, pois hoje sabemos claramente o que o programa faz e como foi feito, mas caso precisarmosajustar alguma coisa depois de muito tempo, ou ainda outra pessoa precisa realizar essatarefa, os comentários são essenciais para rápida compreensão do código. Os comentáriossão opcionais, mas a maioria dos programadores somente dá valor quando é tarde. Existem

duas formas de comentários aceitas:

Tipo Funcionalidade// Comentário de fim de linha, significa que tudo que estiver após o

// é comentário, ele perde o efeito ao terminar a linha;/* ..... */ Comentário de múltiplas linhas, tudo que estiver entre /* e */

será considerado comentários.

Sempre que o compilador encontrar algo comentado, o mesmo simplesmente oignora, assim o comentário possui somente funcionalidade ao desenvolvedor. Comoexemplo de um comentário de início de programa, poderia ser:

/* ======================================================Autor__: Alexandre Stürmer WolfData___: 21/10/2008Função_: Criar um sistema de sensoriamento ativo para

um aeromodelo, armazenando as informações dealtitude (Port A), temperatura (pin_b1),velocidade (pin_b2), GPS (Port C).

=================================================== */

Sempre que puder comente também trechos de códigos ou então a funcionalidade decomandos específicos, como:

sensorGPSLA = input_c(); // recebe o valor da latitudeoutput_low(pin_d0); // reseta latitudeoutput_high(pin_d1); // seta logitudesensorGPSLO = input_c(); // recebe o valor da longitudeoutput_low(pin_d0); // reseta a longitude

Page 13: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 13/20

3.2 - Estrutura de um Programa Mínimo

Um programa para micro controlador PIC mínimo deve possuir um cabeçalho comas diretivas de compilação, configuração do hardware e programa propriamente dito, podendo ou não ter UDF´s e outros arquivos para melhor organização.

#include <Nome do Micro Controlador > 

#use delay(clock=Velocidade de Funcionamento)

#fuses configuraçõe em geral

 void main(void)

{

  Comandos a serem executados

}

 No caso de estar utilizando um PIC16F877A, com cristal (XT) extendo de 4Mhz, ocódigo poderia ser:

#include <16F877A.h>#use delay(clock=4000000)#fuses XT

void main(void){  Comandos a serem executados

}

3.3 - Diretivas de Compilação e Configuração do Hardware

Como já mencionado (seção 3.1 da página 12), um programa mínimo possui váriascaracterística que devem ser satisfeitas para o bom funcionamento do micro controlador. A primeira linha de um programa deverá ser um cabeçalho explicativo definindo afuncionalidade do micro controlador através de um breve comentário (seção 3.1 página 12).

A primeira diretiva a ser informada corresponde ao tipo de micro controlador a ser utilizado, seguido da freqüência de trabalho:

#include <16F877A.h>#use delay(clock=4000000)

Após essas linhas, devemos utilizar diretivas que configuram o funcionamento doPIC, sendo que podem variar de um micro controlador para o outro.

3.3.1 - Fuses

Os fuses funcionam com chaves que informam o comportamento do hardware,como já mencionado cada PIC pode ter um conjunto de fuses diferentes, dependendo dasfuncionalidades que disponibiliza. Abaixo serão apresentados os principais fuses que sãomais utilizados.

Page 14: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 14/20

Diretiva 1, que tipo de oscilador (gerador de clock) que deseja-se utilizar.Diretiva DescriçãoXT Oscilador com cristal externo até 4 Mhz (XTal)HS Oscilador com cristal externo acima de 4Mhz (High Speed)

LP Para cristais ou ressoadores externos com baixas freqüências(abaixo de 200 KHz). Utilizado para minimizar consumoRC Oscilador externo formado por um rede R/CINTRC Oscilador interno, está disponível em alguns PIC (16F877 não)

Diretiva 2, usar ou não watchdog (cão de guarda). O watchdog é um contador com afinalidade de resetar o microntrolador de tempos em tempos, pode ser utilizado como laçode repetição ou em casos que o micro controlador perca o controle. Em situações normais owatchdog pode ser um “encomodo”, por exemplo em comunicação serial, pois sempre ficareiniciando o PIC e realizando as tarefas de inicialização (bem vindo).

Diretiva DescriçãoWDT Usa watchdogNOWDT Não usa watchdog

Diretiva 3, proteção contra leitura de código. Eventualmente é interessante inibir que outros consigam o seu código gravado no PIC. Usando esta diretiva o programa do PICsomente pode ser sobreposto ou apagado, mas não lido.

Diretiva DescriçãoPROTECT ProtegidoNOPROTECT Não protegido

Diretiva 4, é um temporizador que faz com que o PIC, durante a energização (Power Up Timer), aguarde alguns ciclos de máquina (72 ms) para garantir que todo o sistema periférico (display, teclado, memórias, etc) estejam operantes quando o processamentoestiver sendo executado.

Diretiva DescriçãoPUT AguardarNOPUT Não Agurdar

Diretiva 5, o “Brown Out” monitora a diferença de tensão entre VDD e VSS, provocando a reinicialização do PIC (reset) quando esta cai para um valor inferior aomínimo definido em manual (4V típico por mais de 100μs).

Diretiva DescriçãoBROWNOUT ResetarNOBROWNOUT Não resetar

Page 15: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 15/20

3.4 - Entrada e Saída padrão de dados

Os micro controladores não possuem entradas e saídas padrão de dados comoacontece nos computadores (teclado e monitor por exemplo), no entanto em seu interior  possuem um hardware chamado USART (Universal Synchronous Asynchronous Receiver 

Transmitter) que permite comunicar o PIC com outros equipamentos envio e recebimentode bit´s de acordo com a programação definida.

3.4.1 - Direção dos dados

Para poder enviar ou receber dados pelas portas de comunicação do PIC, você deveanteriormente informar em qual direção a informação deverá fluir. Existem três formas derealizar essa tarefa por diretiva de compilador para ajustar os “tristates” de direção.

3.4.1.1 STANDARD_IO

Utilizar o stardard_io é a maneira mais fácil de comunicação bit-a-bit ou por bytes,no entanto pode conflitar em situações em que periféricos internos precisam ser ajustados.Usando esta diretiva (logo abaixo dos fuses, seção 3.3.1  página 13), você não precisa se preocupar como está configurado os “tristates” de porta, ou seja se está programado paraentrada ou para saída.

Além dos conflitos de periféricos internos (USART) esta diretiva ocupa um byte dememória RAM para cada porta, para armazenar o último estado do “tristate”. Para utilizar:

#use standard_io( porta )

Onde a “porta”, é a letra correspondente a porta que receberá esta configuração.Exemplo:

#use standard_io(a)

3.4.1.2 FAST_IO

Utiliza o modo rápido para entrada e saída. Usando esta diretiva, o compilador nãovai inserir um controle automatizado para os registradores TRIS (tristates). Este é o modo padrão do compilador.

#use fast_io( porta )

Onde a “porta”, é a letra correspondente a porta que receberá esta configuração.Uma vez utilizada esta diretiva, antes de usar uma porta ou pino da porta, é necessárioinformar a sua direção através do seguinte comando:

set_tris_X( valor );

Page 16: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 16/20

Onde, “X” é a letra que corresponde a porta, e o “valor” um número cujo valor em binário corresponde as entradas e saída, onde os zeros (0) representam as saídas e os uns (1)representam as entradas. Exemplo:

#use fast_io(b)...

...set_tris_b(0b00110011);

 No caso do código acima, estou dizendo que o pino 0, 1, 4, 5 são entradas e os pinos2, 3, 6, 7 são saídas.

3.4.1.3 FIXED_IO

Esta configuração economiza posições na memória RAM, no entanto uma vezdefinido o direcionamento dos pinos, eles possuirão essa funcionalidade durante toda aexecução do programa. Para utilizar:

#use fixed_io(porta_outputs=pino1, pino2,... pinoN)

Onde a “porta”, é a letra correspondente a porta que receberá esta configuração, pinos, são os nomes dos pinos que serão utilizados como saídas, os que não foreminformados serão utilizados como entrada. Exemplo:

#use fixed_io(a_outputs=pin_a1, pin_a2)

No caso deste exemplo estou informado que somente os pinos a1 e a2serão saídas, todos os demais da porta “a” serão entradas.

3.5 - Funções definidas pelo usuário – UDF (User Defined Functions)

Page 17: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 17/20

4 - Hardware Interno

O micro-controlador PIC possui chipset’s (circuitos internos dedicados) para várias

funcionalidades específicas, como USART, Controle PWM, Conversor Analógico-Digital,entre outras funcionalidades. As funcionalidades dependem diretamente do modelo de PICutilizado, onde em um mesmo micro-controlador podem existir sub-circuitos para asnecessidades apresentadas. Antes de criar um circuito, é importante analisar os“Datasheet’s”, conhecidos como folhas de mérito para conhecer as funcionalidades queestão disponíveis em cada micro-controlador.

4.1 - USART - Comunicação Serial

A comunicação básica do PIC com outros equipamentos pela porta serial érelativamente fácil, pois somente é necessário informar as configurações de trabalho da

USART. A linha de comando abaixo deve estar junto com as diretivas de configuração domicro controlador.

#use rs232(baud=4800, xmit=PIN_C6, rcv=PIN_C7)

Onde, “baud” informa a velocidade de comunicação, o “xmit” é utilizado parainformar o pino responsável pelo envio de dados e “rcv” o pino que receberá os dados.

4.1.1 - Comando printf 

O comando printf é utilizado como saída de dados formatada. Para utilizar o printf devemos conhecer os caracteres de formatação:

Caracter Função%d Números inteiros%c Caracteres%f Números fracionários%s Cadeia de caracteres

4.1.2 - Comando getc, kbhit e gets

O comando getc é utilizado para receber um caracter pela porta serial, um comandomuito útil é o kbhit, utilizado para verificar se existe ou não algum caracter no buffer derecebimento de dados. Já o comando gets é utilizado para receber um vetor (string de C).Exemplo:

char letra;...if(kbhit()){ // veio algo pela porta serial???

letra=getc(); // se veio, armazena em letra.

Page 18: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 18/20

}

4.1.3 - Exemplo porta serial

4.2 - Interrupções por Timer 

4.2.1 - Exemplos Interrupção por Timer 

4.3 - PWM (Pulse Width Modulation)

A modulação PWM (modulação por largura de pulso), consiste basicamente emaplicar uma onda quadrada de amplitude VCC e freqüência alta (entre 10 Khz e 20 Khz) nolugar da tensão continua. A tensão média varia em função do tempo que onda fica em nívelalto e do tempo que onda fica em nível baixo.

A relação entre o tempo que a onda fica em nível alto e o período total é conhecido

como Duty Cycle. O Duty Cycle é normalmente expresso em um valor percentual, ou seja, para uma modulação PWM com Duty Cycle igual a 50%, metade do tempo a tensão ficaem nível alto e metade em nível baixo.

Uma modulação PWM de amplitude 5 V e Duty Cycle de 50% produz o mesmoefeito de uma tensão continua de amplitude 2,5 V, isto porque a tensão média nos doiscasos é 2,5 V.

A grande vantagem do PWM está no fato de se poder variar a tensão média aplicadaem um dispositivo DC utilizando apenas uma saída digital, que é bem mais barata e simplesque uma saída analógica em qualquer controlador.

A grande vantagem em utilizar o PWM reside no fato de controle de motores DC, pois é possível controlar a velocidade do mesmo sem perda de torque, caso muito comum

em controle por tensão.

4.3.1 - Configuração do PWM

O PWM é propiciado através de um módulo chamado CCP (Capture ComparePWM), para ser utilizado, precisa de um hardware interno adicional para funcionar, nestecaso as interrupções de contadores (seção 4.2 página 4) que são fundamentais para gerar afreqüência do PWM.

setup_timer_2(T2_DIV_BY_4, 248, 1); // freq = 1008,0645161290 Khzsetup_ccp1(ccp_pwm); // informa que o pino ccp1 funcionará em pwm

 No caso acima está sendo informado que o quadro de ativação (freqüência) será de1.000.000 / 4 / 248 / 1 ==> 1008.06 Khz.

Uma vez configurado o timer de freqüência, devemos informar o Duty Cycle podendo este ser um valor de 8 ou 10 bits.

set_pwm1_dutty( Valor );

Page 19: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 19/20

Automaticamente quando utilizamos PWM, três variáveis internas (bytes decontrole) são ativadas, que são o ccpr1l, ccpr1x, ccpr1y.

4.3.2 - Exemplo PWM

4.4 - EEPROM

4.4.1 - Exemplo EEPROM

4.5 - Leitura Analógica

4.5.1 - Exemplo Leitura Analógica

Page 20: Livro PIC-C

5/11/2018 Livro PIC-C - slidepdf.com

http://slidepdf.com/reader/full/livro-pic-c 20/20

5 - Exemplos de código

5.1 - PIC12F675