Você está na página 1de 37

Aula 01 – Introdução

Revisão da Linguagem C

UNIVERSIDADE REGIONAL INTEGRADA DO ALTO URUGUAI E DAS MISSÕES


CURSO DE ENGENHARIA ELÉTRICA
Microcontroladores e Microprocessadores

Prof. Me. Maicon Luís Flach


Referências

PEREIRA, F. Microcontroladores PIC: Programação em C. São Paulo: Érica,


2003.

MARTINS, N. A. Sistemas Microcontrolados. Editora Novatec.

PEREIRA, V. Microcontroladores PIC 16F e 18F. Instituto NCB

PENIDO, É. de C. C.; TRINDADE, R. S. Microcontroladores.


Aplicações
Qual tecnologia usar?

• Arduino ?
• ATMEL ?
• PIC ?
• ARM ?
Histórico

• Os primeiros dispositivos tinham seus programas escritos em código de


máquina

• A programação em código de máquina era extremamente complexa

• O que ocasionou o surgimento da


linguagem Assembly
Histórico

• Assembly:
• Baixo nível
• Conjunto de instruções limitado ao
conjunto de instruções do processador
utilizado
• Muito trabalho de programação
• Programas muito extensos e
complexos
• Fluxo muitas vezes difícil de ser
seguido
Histórico

• Necessidade de simplificação da forma de programação fez surgir as


chamadas linguagens de alto nível

• 1ª linguagem  FORTRAN (FORmula TRANslator) 50’s

• 2ª linguagem  COBOL(Common Business Oriented Language) 60’s

• 3ª linguagem  ALGOL (ALGOritmic Language) 60’s


Histórico

• O ALGOL é uma linguagem genérica que originou outras linguagens de alto


nível

PASCAL e C

• A linguagem C foi criada em 1972 na Bell Lab., é na realidade uma


linguagem de nível intermediário entre o Assembly e as demais linguagens
de alto nível
• O C utiliza a filosofia de programação estruturada
Histórico

• Quando comprado com outras linguagens, o


Assembly apresenta:
• Prós:
• Eficiência devido à proximidade com o
hardware
• Velocidade como é muito eficiente, os
programas são muito rápido
• Contras:
• Complexidade o programador precisa de
profundo conhecimento do hardware
• Portabilidade
Microprocessador x Microcontrolador

• Microcontrolador
• São sistemas computacionais completos, com memória, dispositivos de
I/O, A/D, entre outros
• Possibilita a construção de sistemas quase sem nenhum hardware extra
• Possuem capacidade de processamento limitada
• Estrutura de Hardware não pode ser mudada
• Microprocessadores
• É necessário incluir todos os periféricos
• Flexibilidade de configuração de hardware
• Custo maior
• Maior capacidade de processamento
Microprocessador x Microcontrolador
Arquitetura interna

• Arquitetura Von Neumann

• Apenas um barramento (bus)


interno (geralmente 8 bits) por
onde passam as instruções e os
dados
Arquitetura interna

• Arquitetura Harvard

• Existem dois barramentos


internos, um de dados e outro
de instruções

• Enquanto uma instrução é


executada outra pode ser
buscada na memória,
tornando o processamento
mais rápido
Família de Microcontroladores PIC
PIC16F887

• 40 pinos
• EEPROM
• UART
• SPI
• I2C
• CCP
• 14 Canais de A/D
Programação do PIC

• PCW HD
• MPLAB
• Micro C
• CCS

• XC8
• ...

• PICKIT3
Simulação do PIC

PROTEUS
Principais Estruturas da Linguagem C

Estrutura de decisão
𝒊𝒇 aninhado
+ de uma condição em um 𝒊𝒇
Principais Estruturas da Linguagem C
Principais Estruturas da Linguagem C
Principais Estruturas da Linguagem C
Principais Estruturas da Linguagem C

Ao contrário do while, o do/while permite que o bloco seja executado ao


menos uma vez
Estrutura de um programa em
linguagem C

Diretivas de Compilação:
#include<...>
#fuses .....
Declarações Globais:
#define BITS 8
int8 var1
Declaração das funções:
void soma(int8 a, int8 b)
Estrutura de um programa em
linguagem C

Definições Locais:
int16 var
float a

Instruções:
x=a+b;
if(a==b)
Diretivas de Compilação

• Inclusão de bibliotecas
• Podem ser bibliotecas prontas ou criadas pelo usuário (*.h, *.c)

• Declaração dos Fuses


• São bits que determinam o funcionamento do dispositivo

• Declaração e configuração de periféricos


• #use delay(clock=XXX)
• #use rs232(baud=XXX, xmit=XXX, rcv=XXX)
Diretivas de Compilação - Fuses
Diretivas de Compilação

• Exemplo

#include <16F887.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP, NOMCLR
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
Declarações Globais

• Definições de nomes de pinos, definição de valores

#define BITS 8
𝒂 = 𝒂 + 𝑩𝑰𝑻𝑺; //é o mesmo que fazer 𝒂 = 𝒂 + 𝟖;

#define LED RA0


𝑳𝒆𝒅 = 𝟏; //é o mesmo que fazer 𝑹𝑨𝟎 = 𝟏;
Declarações Globais

Int1, int8, int16


signed int8, signed int16
Declarações Globais

• Exemplo:

#define Liga_Carga RA0


#define liga_carga RA1

int1 var; A linguagem C é case sensitive


int8 var1=10;
float x;
Declarações das funções - prototipação

void write_eeprom_string(char * array, int8 address, int8 max_size);


void change_settings(void);

(retorno) nome_da_função (dados recebidos – nome e tipo)

void change_settings(void)
{
a=b+c;
}
Declarações das funções – prototipação -
Interrupções

#INT_EXT
void exemplo(void)
{
int1 sinaliza_interrupt=0;
sinaliza_interrupt=1;
}
Definições Locais

void main(void) Int8 soma(int8 var_a, int8 var_b)


{ {
int1 a=0; int8 var_aux;
int8 b; var_aux=var_a+var_b;
.
return(var_aux);
.
}
.
….
}

Variáveis locais ou globais?


Instruções

void main(void)
{
int1 a=0;
int8 b;
if(condição)
{
…..
}
for(condição)
{
c = a+b;
}
….
}
Generalidades linguagem C

• Toda função tem um corpo delimitado por { }


• Todo programa em linguagem C deverá conter uma função 𝒎𝒂𝒊𝒏
• As linhas de instruções são sempre encerradas por ponto-e-vírgula (;)
Os comentários são delimitados por /* */ ou ainda //

Exemplo: /* Engenharia
Elétrica
URI 2020 */
ou //engenharia elétrica
Generalidades linguagem C

Operadores
Compilador

• Estrutura Básica utilizando PIC C


• Criar novo projeto
• Inclusão de biblioteca
• Local do arquivo “pic16f887.h”
• Fuses, diretivas de interrupção
• Registadores de Funções Especiais SFR – Datasheet
• Index
• Compilação

Você também pode gostar