Escolar Documentos
Profissional Documentos
Cultura Documentos
1- DIRETIVAS DE PR-PROCESSAMENTO
Diretiva #include:
#include <16f84a.h> - Causa a incluso de um programa-fonte em
outro. Ela diz ao compilador para incluir, na hora da compilao, um
arquivo especificado. <16f84a.h>
Diretiva #fuses:
#fuses XT,PUT,NOWDT uma diretiva que configura os fusibits
do PIC, essa diretiva informa qual oscilador o PIC vai utilizar, se e
vai ter o reset WDT, entre outras funes, os fusibits muda de PIC
para PIC, antes de configurar essa diretiva tem que verificar seu
datasheet para saber quais fusibits o PIC possui.
Diretiva #device:
#device ADC = 10 Essa diretiva ativa o conversor AD. Ela diz ao
compilador para usar uma converso em 10 bits. Um nmero vai
depender do PIC utilizado.
Diretiva #use delay:
#use delay(clock = 4M) Essa diretiva indica a velocidade de
processamento do PIC. Ela importante pois a partir dela que o
PIC faz seus clculo de tempo.
Diretiva #byte:
#byte trisa = 0x85 E uma diretiva para criao de varivel,
atribuindo a varivel um endereo de memria. Pode-se criar um
nome e atribuir o endereo de um registrador do PIC, utilizando
esse nome no programa indicando o registrador endereado.
Diretiva #bit:
#bit ra4 = 0x06.4 uma diretiva para criao de uma varivel,
atribuindo a varivel um endereo de um bit expecfico onde se
encontra o registrador indicado. utilizado quando se quer
monitorar o bit do registrador indicado.
Diretiva #define:
#define acende output_high - uma diretiva para criao de
constante atribuindo um valor ou um comando. Essa diretiva e para
chamar um comando usando apenas um nome, ou atribuir um valor
fixo a uma constante.
Diretiva #define use_portb_lcd TRUE :
#define use_portb_lcd TRUE Diretiva necessria para usar o
LCD no portb, j que as funes para o LCD so para o portd.
Diretiva #use fast_io(x):
#use fast_io(b) Essa diretiva indica que o programador ir
configurar o registrador TRIS manualmente. Uma vez configurado
no se muda mais no decorrer do programa. a diretiva mais
enxuta, proporcionando um cdigo mais eficiente.
2 - TIPOS DE DADOS
Constante um valor reservado na memria de dados (RAM) fixo.
Exemplos:
Const int numero = 255; uma constante do tipo de dados inteiro de
nome numero com valor de 255 ou em binrio 11111111. Com ponto e
vrgula no final.
#define numero 255 Define uma constante de nome numero do tipo de
dado inteiro, automtico e atribui o valor de 255.
2- FUNES
Uma funo basicamente um bloco de cdigos que realiza uma certa
tarefa. Quando queremos realizar aquela tarefa, simplesmente fazemos
uma chamada de funo para a funo correspondente.
Uma funo pode precisar que o programador d certos dados para
realizar a tarefa; esses dados so chamados argumentos. A funo
tambm pode retornar um valor, que pode indicar se a tarefa foi realizada
com sucesso, por exemplo; esse valor o valor de retorno.
A funo na Linguagem C ela declarada da seguinte forma:
Nome seguido de parnteses e finalizado com ponto e vrgula.
Ex.: printf( argumento );
A funo onde vai englobar outra funo tem que colocar entre chaves.
Ex.: while(true)
{ output_b(0xff);
}
Todo programa em C tem que ter por obrigao uma funo principal,
onde vai englobar as demais, essa funo chama-se main.
Ex.: void main(void ) {
while(true) {
output_b(0x00); } }
Inicializao
Diretivas de pr-processamento
Chamada da funo main( )
Configurao dos pinos(entrada ou sada)
Declarao das variveis
Loop Infinito
Leitura das entradas
Processamento dos dados
Atualizao das sadas
Programao para Pic CCS Terceira parte
4 - SADA DE DADOS
}
FUNES DE BYTE para entrada de dados
Input_x( ); - Essa funo L todo o port, com seus 8 bits. Exemplo:
Void main(void)
{ input_b( ); // l todos os pinos do portb.
}
FUNO DE TEMPO
Delay_us(valor); Funo de tempo em microssegundos.
Delay_ms(valor); Funo de tempo em milissegundos.
FUNO DE RETORNO
Return(variavel); Essa funo retorna um valor. Exemplo:
Int acender(int m)
{ m++;
Return(m); // retorna o valor da varivel m.
Programao para Pic CCS quarta parte
For( ; ; )
{
Cdigo;
}
Do
{
Cdigo;
}while(true);
Inicio:
Cdigo;
Goto inicio;
Funes usadas
Lcd_init( ); // inicializa o LCD.
Lcd_gotoxy(x,y); Posiciona o cursor nas coordenadas x= coluna, y= linha.
Lcd_getc(x,y); // Captura um caractere nessa posio.
Printf(lcd_putc,Mensagem); // escreve uma mensagem no LCD.
Lcd_putc(Mensagem); // escreve uma mensagem no LCD.
Dentro do espao entre aspas( espao ), a pessoa pode colocar os
seguintes caracteres:
TABELA DOS SMBOLOS
Simb Exemplo Significado
\f \f mensagem Comando para limpar a tela antes da
mensagem
\n \n mensagem Comando para pular uma linha antes da
mensagem
\b \b mensagem Comando para voltar um caractere
\t \t mensagem Comando para tabulao antes da
mensagem
%c mensagem %c, Comando para imprimir uma varivel do
varivel; TIPO CHAR
%s mensagem %s, Comando para imprimir uma varivel do
varivel; TIPO STRING
%u mensagem %u, Comando para imprimir uma varivel do
varivel; TIPO INTEIRO sem sinal
%d mensagem %d, Comando para imprimir uma varivel do
varivel; TIPO INTEIRO com sinal
%Lu mensagem %Lu, Comando para imprimir uma varivel do
varivel; TIPO INTEIRO LONGO sem sinal
%Ld mensagem %Ld, Comando para imprimir uma varivel do
varivel; TIPO INTEIRO LONGO com sinal
%x mensagem %x, Comando para mostrar o valor da varivel
varivel; da tabela ASCII em hexadecimal
\x mensagem Comando que mostra o valor
\xHEX correspondente na tabela ASCII
%f mensagem %f Comando para imprimir uma varivel do
,varivel; TIPO FLOAT
%.2f mensagem %.2f , Comando para imprimir e limitar as casas
varvel; decimais em duas do TIPO FLOAT
Programao para Pic CCS Quinta parte
Funes usadas
kbd_init( ); // inicializa o teclado.
kbd_getc( ); // Captura um caractere .
Observao: Essa biblioteca exige um bom tratamento de Debouce, para
evitar que ela leia um valor errado. indicado que se utilize uma estrutura
condicional IF, para testar o valor armazenado na varivel. Exemplo:
#include <18f4550.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock= 4000000)
#define use_portb_lcd TRUE
#include <lcd.c>
#include <kbd.c>
void main(void)
{ char k; // varivel criada para armazenamento da
tecla precionada
lcd_init(); // inicializa o lcd
kbd_init(); // inicializa o keypad (teclado)
lcd_putc("\Digite:\n");
}
}
Exemplo:
9 - INTERRUPES
Funes utilizadas:
EXT_INT_EDGE(0,L_TO_H); // O ZERO REPRESENTA QUE ESTA USANDO A #INT_EXT
ENABLE_INTERRUPTS(INT_XX); // O XX PODE SER O EXT, EXT1, EXT2 OU EXT3.
ENABLE_INTERRUPTS(GLOBAL); // HABILITA A CHAVE GERAL DAS INTERRUPES
EXEMPLO:
#include <16f628a.h>
#fuses XT
#use delay(clock = 4M)
void main(void)
{
while(true)
{
output_high(pin_a1);
delay_ms(500);
output_low(pin_a1);
delay_ms(500);
}
}
10 - CANAL ANALGICO
FUNES UTILIZADAS:
SETUP_ADC_PORTS(ANX); // REFERE-SE A UMA PORTA
SETUP_ADC_PORTS(ALL_ANALOG); // REFERE-SE A TODAS AS PORTAS
SETUP_ADC_PORTS(ANX_TO_ANY|VSS_VREF); // Utiliza como tenso de
refncia.
11 - Memria EEPROM