PIC do Zero

Programação em C para Microcontroladores PIC

Aula 02 - Estrutura de um Programa em C para PIC

Nesta aula vamos entender como um programa em C para microcontrolador PIC é organizado. Antes de controlar LEDs, botões, sensores ou relés, precisamos compreender a estrutura básica do código.

1. Estrutura básica

Um programa em C para PIC normalmente possui algumas partes principais: inclusão de bibliotecas, configuração do microcontrolador, definição da frequência de trabalho, função principal e laço infinito.

#include <xc.h>

#define _XTAL_FREQ 4000000

void main(void)
{
    while(1)
    {
        // Código principal do programa
    }
}

2. Biblioteca #include <xc.h>

A linha #include <xc.h> adiciona ao programa a biblioteca principal do compilador XC8. Essa biblioteca permite que o código acesse os registradores internos do PIC.

Em linguagem simples: essa linha informa ao compilador quais nomes e recursos existem dentro do microcontrolador utilizado.

Sem essa biblioteca, o compilador não reconheceria muitos nomes usados para configurar portas, registradores, bits e periféricos do PIC.

3. Definição da frequência com #define _XTAL_FREQ

A linha #define _XTAL_FREQ 4000000 informa ao compilador a frequência do oscilador usado pelo PIC. Neste exemplo, estamos usando 4 MHz.

#define _XTAL_FREQ 4000000

Essa definição é muito importante quando usamos funções de atraso, como:

__delay_ms(1000);

Se a frequência estiver errada, o tempo de atraso também ficará errado. Por exemplo, um atraso de 1 segundo poderá ficar mais rápido ou mais lento.

4. Função principal main()

A função main() é o ponto de partida do programa. Quando o PIC é ligado ou reiniciado, o programa começa a executar a partir dessa função.

void main(void)
{
    // Início do programa
}

A palavra void indica que a função não retorna nenhum valor. Em microcontroladores, o programa normalmente não termina, então a função principal fica rodando continuamente.

5. Laço infinito while(1)

O comando while(1) cria uma repetição infinita. Isso é essencial em microcontroladores, porque o PIC precisa ficar verificando entradas e atualizando saídas o tempo todo.

while(1)
{
    // Tudo aqui será repetido continuamente
}

Dentro desse laço podemos colocar leituras de sensores, acionamento de relés, controle de motores, comunicação serial e várias outras rotinas.

6. Comentários no código

Comentários são textos usados para explicar o funcionamento do programa. Eles não são executados pelo microcontrolador.

// Este é um comentário de uma linha

/*
Este é um comentário
com várias linhas
*/

Usar comentários ajuda muito na manutenção do código, principalmente em projetos industriais ou didáticos.

7. Exemplo completo comentado

#include <xc.h>              // Biblioteca principal do compilador XC8

#define _XTAL_FREQ 4000000  // Frequência do oscilador: 4 MHz

void main(void)             // Função principal do programa
{
    while(1)                // Laço infinito
    {
        // O código principal será executado repetidamente aqui
    }
}

8. Resumo da aula

  • #include <xc.h> permite acessar os recursos do PIC.
  • #define _XTAL_FREQ informa a frequência do oscilador.
  • main() é onde o programa começa.
  • while(1) mantém o programa rodando continuamente.
  • Comentários servem para explicar o código.

Exercícios de Fixação

  • Para que serve a linha #include <xc.h>?
  • O que significa _XTAL_FREQ?
  • Por que um programa para PIC geralmente usa while(1)?
  • Qual é a diferença entre código executável e comentário?
  • Explique com suas palavras a função main().