Menu

Aulas 000 - Microcontroladores PIC e XC8

Hardware básico

Para iniciarmos nossas aulas necessitamos de um hardware básico que será construido no software proteus.

Alimentação
Embora não esteja no esquema os microcontroladores trabalham com 5VDC.

Reset
Este modelo de PIC possui um MCLEAR (pino 1) que deve ser mantido em (1) para que ele funcione e se for colocado em (0) ele reseta o PIC.

Usamos um push button e um resistor de 10K para mantermos o pino sempre em (1) alto e quando pressionarmos a o button ele vai para (0).

Oscilador
Embora o PIC tenha um oscilador interno ele não é confiável e haverá situações em práticas que a confiabilidade do clock é de suma importância e para tal um oscilador externo com os capacitores de filtro são necessários.

A Microchip responsável pelos microcontroladores da família PIC, subdivide os cristais em três grupos
  • LP :- Cristais de baixa potência - para cristais entre 32 kHz e 220 kHz;
  • XT :- Cristais - para cristais entre 220 kHz e 4 MHz;
  • HS :- Cristais de alta velocidade - para cristais entre 4 MHz e 20 MHz.
Usaremos o cristal HS cujo fabricante recomenta capacitores de 15 a 33 pF.

Dispositivos de Entrada/Saída (I/O)

Um microcontrolador sozinho não tem utilidade, para que ele seja útil ele necessita receber sinais e assim processá-las e acionar uma saída que atenda a necessidade do projeto.

Para entrada colocaremos 4 botões (push button) com resistores pull-down.


Importante:

Pull-UP = Resistor de pull-up, o pino de entrada irá ler um estado em nível alto quando o botão não está sendo pressionado. (usamos no pino de reset)

Pull-Down = Resistor de pull-down, o pino de entrada irá ler um estado em nível baixo quando o botão não está sendo pressionado. (usamos nos pinos de entrada)

Para saída colocaremos 4 LEDs, obviamente com resistores limitadores, uma vez que o LED opera com 2V (corrente de 10 a 50mA) e a saída do microcontrolador é 5V.



Lembrando:

R = (Vmicro - VLED)/ILED
R = (5V - 2V)/20mA
R = 150 ohm















A IDE MPLAB X e o Compilador XC8

Para programarmos o microcontrolador, precisamos de uma IDE, ou seja, uma interface de desenvolvimento que neste caso será o MPLABX.

MPLAB - Software editor para gerenciamento de projetos e ambiente de programação para desenvolvimento de aplicações e sistemas embarcados.

A linguagem de programação C é uma linguagem de alto nível, fácil de ser entendida por nós, más a linguagem que descarregamos nos microcontroladores é de baixo nível, assim necessitamos de um tradutor ou compilador e o que usaremos será o xc8.

O programa padrão  


//Aula 000 - Configura o hardware para o PIC 18F4550
//Turma: Eletroeletrônica
//Auto: Clodoaldo Silva
//Data: 12/04/2018
//Revisão: 12Abr2018

// INICIA a configuração do microcontrolador 18F4550

#include <xc.h>
#define _XTAL_FREQ 4000000      // Usar sempre que usar delay no programa...

// CONFIG1L
#pragma config PLLDIV = 1       
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 1       

// CONFIG1H
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator (HS))
#pragma config FCMEN = OFF    
#pragma config IESO = OFF       

// CONFIG2L
#pragma config PWRT = OFF       
#pragma config BOR = ON         
#pragma config BORV = 3         
#pragma config VREGEN = OFF     

// CONFIG2H
#pragma config WDT = OFF            // Watchdog Timer desabilitado
#pragma config WDTPS = 32768    

// CONFIG3H
#pragma config CCP2MX = ON      
#pragma config PBADEN = ON      
#pragma config LPT1OSC = OFF    
#pragma config MCLRE = ON       

// CONFIG4L
#pragma config STVREN = ON      
#pragma config LVP = ON         
#pragma config ICPRT = OFF      
#pragma config XINST = OFF      

// CONFIG5L
#pragma config CP0 = OFF        
#pragma config CP1 = OFF        
#pragma config CP2 = OFF        
#pragma config CP3 = OFF        

// CONFIG5H
#pragma config CPB = OFF        
#pragma config CPD = OFF        

// CONFIG6L
#pragma config WRT0 = OFF       
#pragma config WRT1 = OFF       
#pragma config WRT2 = OFF       
#pragma config WRT3 = OFF       

// CONFIG6H
#pragma config WRTC = OFF       
#pragma config WRTB = OFF       
#pragma config WRTD = OFF       

// CONFIG7L
#pragma config EBTR0 = OFF      
#pragma config EBTR1 = OFF      
#pragma config EBTR2 = OFF      
#pragma config EBTR3 = OFF      

// CONFIG7H
#pragma config EBTRB = OFF      

// FIM da configuração do microcontrolador 18F4550

// Inicia a configuração dos pinos do microcontrolador

void main (void)

{
LATA=0b00000000;    //limpa todo o portA 
LATB=0b00000000;    //limpa todo o portB
LATC=0b00000000;    //limpa todo o portC
LATD=0b00000000;    //limpa todo o portD
LATE=0b00000000;    //limpa todo o portE

PORTA=0b00000000;    //Coloca o pino para iniciar em zero 
PORTB=0b00000000;    //Coloca o pino para iniciar em zero 
PORTC=0b00000000;    //Coloca o pino para iniciar em zero 
PORTD=0b00000000;    //Coloca o pino para iniciar em zero 
PORTE=0b00000000;    //Coloca o pino para iniciar em zero

//Por hora usaremos somente os Ports A e C

TRISA=0b11111111;    //Configura o PORTC como entrada
TRISC=0b00000000;    //Configura o PORTC como saída 


ADCON1=0b00001111;   //Configura as entradas como digitais (não analógicas)

// FIM da configuração dos pinos do microcontrolador

// Aqui inicia o programa

while(1)  //loop infinito
    {
    //Seu código ficará aqui...
    }
}


Agora é compilar e testar usando o proteus...

Até a próxima aula...