Você está na página 1de 15

PROGRAMAÇÃO PARA

MICROCONTROLADOR
LARISSA PIMENTA
LARISSAJPIMENTA@GMAIL.COM
INICIALIZAÇÃO DO PROGRAMA

• A estrutura básica de um programa em C para microcontroladores é a seguinte:


void main() {
// inicializações de hardware e software
while(1) // loop infinito
{ // tarefas a serem executadas pelo microcontrolador durante o funcionamento
}
}
REPRESENTAÇÃO NUMÉRICA

• Decimal:
• valor_decimal = 125;
• Binário:
• PORTA = 0b11110001;
• Hexadecimal:
• valor_hexa = 0xFF;
• Octal:
• valor_octal = 075;
• Caractere:
• caracter = ’a’;
CONSTANTES

• Servem para criar símbolos de valor constante que auxiliam na programação.


No momento da compilação, o compilador se encarrega de atribuir os
valores corretos aos símbolos criados. Por exemplo:
const LIGADO = 1;
const DESLIGADO = 0;
const TMAX = 100;

• Após definir as constantes, é possível utilizar estas palavras como tendo o


mesmo significado do valor numérico atribuído.
DEFINIÇÕES

• Além de dar nome a valores constantes, também podemos atribuir outros


nomes a símbolos já existentes no microcontrolador. Por exemplo, imagine que
você tenha um LED ligado ao bit 0 da porta A do seu microcontrolador, além
de um motor DC ligado ao bit 1 dessa mesma porta. Para facilitar a
programação, pode-se fazer:
#define LED PORTA.B0
Observe que na Linguagem C os
#define MOTOR PORTA.B1 comandos iniciados pelo caractere “#”
são os únicos que não recebem ponto-e-
vírgula no final da sentença.
DEFINIÇÕES E CONSTANTES

#define LED PORTA.B0


#define MOTOR PORTA.B1

const LIGADO = 1;
const DESLIGADO = 0;

void main() {
LED = LIGADO;
MOTOR = LIGADO;
}
VARIÁVEIS LOCAIS

• São variáveis declaradas dentro de um bloco de instruções (ou função) e só


podem ser acessadas dentro desse bloco. Exemplo:
int media() {
int valor1 = 5;
int valor2 = 7;
return (valor1+valor2)/2;
}
VARIÁVEIS GLOBAIS

• São declaradas fora dos blocos de função e podem ser acessadas por todas as funções e
blocos de instruções. Exemplo:
int valor1 = 5;
int valor2 = 7;
Atenção, apesar de parecer uma boa ideia
int media() {
declarar funções globais devemos ter bastante
return (valor1+valor2)/2; cuidado com sua utilização. Uma vez que estas
} variáveis podem ser acessadas por todas as
int soma() { funções, é difícil manter o controle sobre seus
return valor1+valor2; valores à medida que o código vai sendo
} executado. Por essa razão, declarar variáveis
globais não é considerada uma boa prática de
programação.
EXEMPLOS COM OPERADORES

void main() {
unsigned char cont = 0;
while(1) {
if (PORTA.B0 == 1) // Se o pino A0 estiver ligado
if (cont < 9)
cont++; // Se contagem for menor que 9, incrementa
else
cont = 0; // Caso contrário, zera
}
}
EXEMPLOS COM OPERADORES

int cont = 0;
if (PORTA.B0 && PORTA.B1)
cont++;

Significado: se PORTA.B0 for igual a um E PORTA.B1 for igual a um, então cont
é incrementado em uma unidade.
EXEMPLOS COM OPERADORES

int cont = 0b00000001;


if (PORTA.B0 || PORTA.B1)
cont ++;

Significado: se PORTA.B0 for igual a um OU PORTA.B1 for igual a um, então o


valor de cont é incrementado.
EXEMPLOS COM OPERADORES

int contador = read_ADC(); // lê o valor do conversor AD e armazena na variável ’contador’


switch(contador) {
case 0:
x++;
PORTA.B0 = 1;
break;
case 1:
PORTA.B1 = 1;
break;
case 2:
PORTA.B0 = 0;
PORTA.B1 = 0;
break;
default:
break;
EXEMPLOS COM OPERADORES

for(i = 0; i < 10; i++) {


PORTA.B0 = 1; // liga o pino A0
delay_ms(1000); // aguarda 1 segundo
PORTA.B0 = 0; // desliga o pino A0
delay_ms(1000); // aguarda 1 segundo
}
O COMANDO BREAK

É utilizado para encerrar o laço for antes de se completar todas as itera- ções. Quando o laço é quebrado, o programa pula
para a próxima instrução após o laço. Exemplo:
void main() {
int i = 0;
for(i = 0; i < 10; i++) {
if (PORTB.B0 == 1) {
break; }
PORTA.B0 = 1; // liga o pino A0
delay_ms(1000); // aguarda 1 segundo
PORTA.B0 = 0; // desliga o pino A0
delay_ms(1000); // aguarda 1 segundo
}
}

Você também pode gostar