A maior rede de estudos do Brasil

Grátis
85 pág.
Apostila.PIC16F877.CCS

Pré-visualização | Página 8 de 23

delay(clock=20M) 
 
 Esta é outra diretiva do compilador. Esta diretiva especifica o clock, ou a 
velocidade do cristal usado para sincronizar as operações dentro do dispositivo. No 
caso, estamos indicando ao compilador que o dispositivo opera com um cristal de 
20MHz. Este valor é utilizado para a geração de códigos de atraso e outras rotinas que 
dependam do tempo. 
 Na próxima linha do programa encontramos: 
 
main() 
 
 A declaração main( ) especifica o nome de uma função. No caso, a função 
main( ) é padronizada na linguagem C e é utilizada para definir a função principal, ou o 
corpo principal do programa. 
 Uma função em C é um conjunto de instruções que pode ser executado a partir 
de qualquer ponto do programa. O sinal de abertura da chave “{“ é utilizado para 
delimitar o início da função e o sinal de fechamento da chave ”}” indica o final da 
função. Na realidade, as chaves delimitam o que chamamos de bloco de programa ou 
bloco de código. 
 O bloco de programa dentro da função main( ) é formado por 3 instruções. Cada 
instrução é terminada por um ponto e vírgula (;). 
 A instrução output_high(pin_b0) é uma chamada a uma função interna do 
compilador. Esta função é utilizada para setar (ou seja, colocar em nível lógico ‘1’) um 
pino do microcontrolador, identificado entre os parênteses. Isto significa que o pino rb0 
(da porta B) será setado. Note que (pin_b0) é um símbolo predefinido para especificar o 
pino rb0. Este símbolo está localizado no arquivo de cabeçalho do processador 
utilizado, e que foi adicionado com a diretiva #include. O conteúdo presente entre os 
parênteses de uma função é chamado de argumento da função. Assim, pin_b0 é o 
argumento da função output_high( ). 
 A próxima função a ser executada é: 
 
delay_ms(500); 
 
 Esta também é uma função interna do compilador e é utilizada para gerar um 
atraso de X milissegundos, indicado entre os parênteses. No caso, o atraso será igual a 
500ms. 
 A instrução output_low(pin_b0) é uma chamada a uma outra função interna 
do compilador. Esta função é utilizada para resetar (ou seja, colocar em nível lógico ‘0’) 
um pino do microcontrolador, identificado entre os parênteses. Isto significa que o pino 
rb0 (da porta B) será resetado. 
Curso – Microcontroladores PIC e Linguagem C 
Prof. Fagner de Araujo Pereira 
 29
 Desta forma, ao programarmos o PIC com o programa anterior e se tivermos 
conectado um LED (com o devido resistor de limitação de corrente) ao pino rb0, nós o 
veremos acender, permanecer aceso por 500ms, apagar e depois permanecer apagado. 
 Obviamente este é um programa bem simples, mas que é útil para o 
entendimento inicial da estrutura de um programa escrito em linguagem C. 
 Podemos dizer que um programa em C é constituído por um ou mais dos 
seguintes elementos: 
 
*Operadores são elementos utilizados para comandar interações entre variáveis e dados 
em C; 
 
*Variáveis que são usadas para armazenamento temporário ou permanente de dados. A 
linguagem C dispõe de uma variedade de tipos de variáveis e dados; 
 
*Comandos de controle são elementos essenciais à escrita de programas em C. São 
utilizados para controlar, testar e manipular dados e informações dentro de programas 
em C; 
 
*Funções são estruturas de programa utilizadas para simplificar, otimizar ou apenas 
tornar mais claro o funcionamento do programa. 
 
 Vejamos outro exemplo de programa em C: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 As quatro primeiras linhas do programa acima constituem o que podemos 
chamar de cabeçalho do programa, onde temos alguns comentários acerca do programa 
e também as diretivas de controle do compilador. Observe que as diretivas não 
necessitam (e nem permitem) o uso do ponto e vírgula como delimitador. 
 O primeiro comando, int tempo, é chamado de declaração de variável. Este 
comando determina que o compilador crie uma variável do tipo inteira int chamada 
tempo. Esta operação, na realidade irá reservar uma posição de memória no 
microcontrolador para o armazenamento do valor relativo à variável. O tipo inteiro int 
especifica um tipo de dados de 8 bits com valores compreendidos entre 0 e 255 decimal. 
Veremos mais sobre variáveis e tipos de dados em seguida. 
// Segundo exemplo 
 
#include <16F877A.h> 
#fuses HS 
#use delay(clock=20M) 
 
main() 
{ 
 int tempo; 
 tempo=100; 
 output_high(pin_b0); //seta o pino rb0 
 delay_ms(tempo); //aguarda 100ms 
 output_low(pin_b0); //reseta o pino rb0 
 delay_ms(tempo); 
 
} 
 
Curso – Microcontroladores PIC e Linguagem C 
Prof. Fagner de Araujo Pereira 
 30
 O nome dado à variável é um identificador e pode ser composto de letras, 
números e o caractere sublinhado “_”. Veremos mais sobre identificadores válidos na 
linguagem C. 
 Em seguida, temos a linha tempo=100 que constitui em uma operação de 
atribuição. As atribuições em C são executadas pelo operador de igualdade “=”. Desta 
forma, a linha tempo=100 fará com que o compilador gere uma sequência de instruções 
para fazer com que o valor 100 decimal seja armazenado na variável tempo. 
 As linhas com output_high( ) e output_low( ) são funções internas ao 
compilador e são utilizadas para setar e resetar, respectivamente, algum pino do 
microcontrolador, nesse caso, o pino b0 (da porta B). 
 As outras duas linhas restantes são as linhas com a instrução delay_ms(tempo). 
Esta também é uma função interna do compilador e é utilizada para gerar um atraso de 
X milissegundos. O valor X é o parâmetro dessa função, no caso, X é igual ao conteúdo 
da variável tempo, que foi previamente carregada com o valor 100. Logo, o atraso 
gerado será de 100ms. 
 Maiores detalhes sobre o funcionamento das funções internas do compilador 
podem ser vistas no manual do usuário do compilador PIC C (CCS). 
 
 
4.2 Palavras reservadas na Linguagem C 
 
 Toda linguagem de programação possui um conjunto de palavras ou comandos 
para os quais já existe interpretação interna prévia. Tais palavras não podem ser 
utilizadas para outras finalidades que não as definidas pela linguagem. 
 A linguagem C ANSI estipula as seguintes palavras reservadas: 
 
auto break case char const 
continue default do double else 
enum extern float for goto 
if int long register static 
return short signed sizeof 
struct switch typedef union 
void volatile while unsigned 
 
 
4.3 Identificadores 
 
 Identificadores são nomes dados pelo programador a variáveis, funções e outros 
elementos da linguagem C. Não é permitido utilizar palavras reservadas como 
identificadores. 
 Um identificador pode ser composto de caracteres numéricos e alfanuméricos, 
além do caractere sublinhado “_”. Além disso, um identificador somente pode ser 
iniciado por uma letra ou sublinhado, nunca por um número, como nos exemplos: 
 
variável 
variavel1 
_teste 
_teste1 
_13_abc 
abc_def 
Curso – Microcontroladores PIC e Linguagem C 
Prof. Fagner de Araujo Pereira 
 31
4.4 Variáveis e tipos de dados 
 
 Variáveis e constantes são os elementos básicos que um programa manipula. 
Uma variável é um espaço reservado na memória do microcontrolador para armazenar 
um tipo de dado determinado. Variáveis devem receber nomes para poderem ser 
referenciadas e modificadas quando necessário. Muitas linguagens de programação 
exigem que os programas contenham declarações que especifiquem de que tipo são as 
variáveis que ele utilizará e às vezes um valor inicial. Tipos podem ser, por exemplo: 
inteiros, reais, caracteres, etc. As expressões combinam variáveis e constantes para 
calcular novos valores. 
 Os dados podem assumir cinco tipos básicos em C que são: 
 
Tipo Tamanho em bits Intervalo 
char 8 0 a 255 
int 8 0 a 255 
float 32 3.4*10-38 a 3.4*1038 
void 0 Nenhum valor 
 
char: (Caractere) O valor armazenado é um