Вы находитесь на странице: 1из 29

Microcontroladores

E.I.S.E & E.M.

FACULDADE DE ENGENHARIA

INTRODUÇÃO À LINGUAGEM C

MScEng. Edson Teixeira


Compiladores C
• mikroC
• PICC18
• C18
• CCS
• XC8

MScEng. Edson Teixeira


Elementos de um programa
1. Comentários • Laços
2. Identificadores • Comandos de desvio
3. Palavras chaves • Directivas Básicas
4. Tipos de dados
5. Instrução
6. Operadores
7. Funções
8. Comandos de selecção

MScEng. Edson Teixeira


Comentários
• Inserir comentários no código de programa permite melhor
organização e compreensão do seu funcionamento.
• Sintaxe
// <comentário> - comentário de uma única linha

/* <comentário>*/ - comentário de múltiplas linhas

MScEng. Edson Teixeira


Identificadores
• O nome dado às variáveis, funções, rótulos ou outros elementos da
linguagem C é conhecido como identificador.
• Exemplos

Identificador válido Identificador Inválido


Cont Cont-32
Valor_contador 1Valor_contador
_teste @teste
teste22 Teste…22

MScEng. Edson Teixeira


Palavras Chaves
• São conjuntos de palavras reservadas pela linguagem e não podem
ser utilizadas como identificadores.
auto else enum extern far float for goto
double break case char const continu default do
e
if int long near overlay ram register Return

rom short signed sizeof static struct switch typedef

union unsigne void volatile While


d
MScEng. Edson Teixeira
Tipos de dados
Tipo Valor Tamanho
char -128 a 127 8 bits
unsigned char 0 a 255 8 bits
signed char -128 a 127 8 bits
int -32.768 a 32.767 16 bits
unsigned int 0 a 65.535 16 bits
long -2.147.483.648 a 2.147.483.647 32 bits
float 1,17549435e-38 a 6,80564693e+38 32 bits
double 1,17549435e-38 a 6,80564693e+38 32 bits

MScEng. Edson Teixeira


Instrução
• Uma instrução é uma expressão seguida de um “;”. Muitas instruções
pode estar dentro de {} para formar uma instrução composta ou bloco
que tem uma sintaxe equivalente a uma instrução.
• Exemplo

Val_1 = a/b ; //instrução 1

Val_2 = a*c ; //instrução 2

MScEng. Edson Teixeira


Operadores
• A linguagem C dispõe de uma grande gama de operadores, se comparada com outras linguagens.

1. Atribuição – os operadores de atribuição são utilizados sempre que houver a necessidade de passar um
dado a uma determinada variável.
• Sintaxe
Identificador = expressão ;
• Exemplo
Int X ; // declara a variável do tipo int(16bits)
X=3; // atribui o valor 3 decimal à vaiável x .

MScEng. Edson Teixeira


Operadores (cont.)
2. Aritméticos – realizam operações matemáticas entre constantes
e/ou variáveis do mesmo tipo ou de tipos diferentes.
Operador Ação
+ Adição
+= Adição
++ Incremento de 1
* Multiplicação
/ Divisão
% Retorna o resto inteiro da divisão
- Subtracção
MScEng. Edson Teixeira
Operadores (Cont)
3. Bit a Bit – operadores bit a Operador Acção
bit manipulam bits de & And (E)
variáveis inteiras do tipo int, | OR (ou)
long, long long e char. Com
^ XOR (ou exclusivo)
eles é possível realizar
operações and, or, xor, not, ~ NOT( inverte estado)
além de deslocar bits para >> Deslocamento dir.
direita ou esquerda. << Deslocamento esq.

MScEng. Edson Teixeira


Operadores (cont)
4. Relacionais – os operadores Operador Acção
relacionais são normalmente == Igual a
utilizados em comandos de != Diferente de
decisão para verificar se uma
> Maior
determinada condição é
verdadeira (1) ou Falsa(0). >= Maior ou igual
< Menor
<= Menor ou igual

MScEng. Edson Teixeira


Funções
• As funções são indispensáveis na Linguagem C, pois elas contêm
blocos de comandos que definem as acções do programa.
• Sintaxe:
Tipo_ de _dado_retornado nome da função (parâmetros)
{
Bloco_de_comandos
Return valor_retornado;
}
MScEng. Edson Teixeira
Comandos de selecção
Os comandos de selecção são empregados quando se deseja executar
um determinado tipo de acção com base no resultado de uma
expressão condicional.
Comando IF :

IF (expressão)
{bloco_de _comandos}
Else
{bloco_de_comandos}

MScEng. Edson Teixeira


Comando Switch:
switch (expressão)
{
case constante_1:
bloco_de_comandos
break;
case constante_2:
bloco_de_comandos
break;
case constante_n:
bloco_de_comandos
break;
default:
bloco_de_comandos

MScEng. Edson Teixeira


Laços
Os laços são empregados quando se pretende executar uma ou mais
instruções repetidas vezes, enquanto uma determinada condição for
verdadeira. Os laços existentes na linguagem C são:
• while
• do – while
• for

MScEng. Edson Teixeira


Laço while:

O while é normalmente empregado em situações em que o laço pode ser


finalizado a qualquer momento, devido à ligação entre a expressão e as acções
executadas dentro do laço.

SINTAXE:

While ( expressão )

{ bloco_ de_comandos }

MScEng. Edson Teixeira


Laço do – while :

O laço do – while é muito parecido com o laço while. A diferença


entre eles reside no facto de que o laço while testa a condição e
depois executa o corpo do laço, enquanto o laço do – while
executa o corpo do laço e depois testa a condição.

SINTAXE:

Do { bloco_de_comandos}

while ( expressão) ;

MScEng. Edson Teixeira


Laço for :

O laço for é geralmente utilizado quando se deseja repetir uma


ou mais instruções uma quantidade de vezes predefinida

SINTAXE:

For ( inicialização ; expressão ; incremento_decremento)

{ bloco_de_comandos}

* Sendo inicialização, o valor inicial para a variável de controlo

MScEng. Edson Teixeira


Directivas Básicas
• As directivas são comandos de pré-processador que não são
compilados, e podem ser inseridas em qualquer parte do programa,
porém não na mesma linha. Elas são iniciadas com o caractere ‘#’ e
não são terminadas com ‘;’. Com elas é possível incluir arquivos,
definir macros, configurar o modo de operação do compilador etc.
• # Define e # Undef
• # Include
• # Pragma

MScEng. Edson Teixeira


# Define e # Undef

A directiva ‘#Define’ define uma string que vai substituir o


identificador, sempre que ele for utilizado no programa, enquanto o
#undef elimina a definição de um determinado identificador.

SINTAXE:
#define identificador string
#undef identificador

ex:
#define LED_1 PORTBbits.RB3 // associa o nome “LED_1” ao pino RB0

MScEng. Edson Teixeira


# Include :

Arquivos de cabeçalho e bibliotecas diversas podem ser


adicionados ao programa através da directiva #include. Há duas
formas de incluir um arquivo externo. A primeira é inserir o nome
do arquivo entre os símbolos ‘<‘ e ’>’ e a outra entre aspas duplas
“”.

SINTAXE:

#include <arquivo>

#include “arquivo”

MScEng. Edson Teixeira


#Pragma :
A directiva # pragma instrui o compilador a executar uma acção específica
durante o processo de compilação. Ela não possui funções-padrão e pode variar
de acordo com o compilador. Por exemplo, no MPLAB XC8 é possível selecionar os
bits de configuração do microcontrolador, definir a região da memória em que
serão armazenados os dados ou blocos de código etc.

Ex:

#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)


#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)

MScEng. Edson Teixeira


Funções de saída de caracteres
• As funções de saída de caracteres são utilizadas para enviar dados
(formatados ou não) para um periférico, buffer ou qualquer tipo de
dispositivo de I/O. A biblioteca padrão stdio.h.
Exemplo (Printf):
Sintaxe
Res = printf (string, variáveis)

MScEng. Edson Teixeira


Funções Matemáticas :

As funções matemáticas da linguagem C padrão estão declaradas no


arquivo math.h . A utilização das funções listadas nesta biblioteca requer
a introdução da directiva #include < math.h> dentro do código de
programa, conforme modelo apresentado pela função sqrt ().
Ex:

# include <math.h> // adiciona a biblioteca de funções matemáticas

Void main (void)


{
double Valor = sqrt (numero)
}

MScEng. Edson Teixeira


Funções de atraso (delay) :

As funções de atraso definidas pelo compilador mplab XC8 geram


atrasos baseados no ciclo de máquina (tcy= 4/FOSC). A utilização
das funções listadas neste tópico não requerem a introdução da
directiva #include <delays.h>

SINTAXE:
_ delay (10) ; // espera 10 ciclos de máquina
__delay_us() ; // espera em microssegundos
__delay_ms() ; // espera em milissegundos

MScEng. Edson Teixeira


exemplo de programa em C
#define _XTAL_FREQ 20000000 void main(void) {
#include <xc.h> TRISA = 0b00000011; // define A0 e A1 como entradas
#include <stdio.h> TRISB = 0b00000000; // define Portas B0…B7 como saídas
#include <stdlib.h> PORTB = 0x00; // limpa a do registo B
// CONFIGURAÇÃO while (1)
#pragma config FOSC = XT // Oscillator Selection bits {
#pragma config WDTE = OFF // Watchdog Timer if(B_LED == 0 ) // verifica se botão é pressionado
#pragma config PWRTE = OFF // Power-up Timer {LED_vermelho = 1;} // liga led
#pragma config CP = OFF // Code Protection bit else
// redefinições de pinos {LED_vermelho = 0;} // desliga led
#define B_LED PORTAbits.RA1
#define B_Semaforo PORTAbits.RA0 }
#define LED_vermelho PORTBbits.RB1 }
#define LED_amarelo PORTBbits.RB2
#define LED_verde PORTBbits.RB3

MScEng. Edson Teixeira


Fim

OBS: A informação contida nos slides, não descura a consulta de


bibliografia complementar.

MScEng. Edson Teixeira


Bibliografia
• [1] “Microcongroladores PIC”- Mikroelektronika ;
• [2] “PIC Microcontroler Operation and Application”- DN Beer ;
• [3] “Structured Computer Organization”- A.S. Tanenbaum, 4th Ed,
Prentice-Hall, 1999 ;
• [4] “Laboratório de Microcontroladores Família 8051”- Denys
E.C.Nicolosi ;
• [5] “Sistemas electrónicos com Microcontroladores”- Victor
Gonsalves ;
• DataSheet’s ;

MScEng. Edson Teixeira

Вам также может понравиться