You are on page 1of 5

Como fazer piscar dois LEDs utilizando PIC 16F877A

simulando o circuito no PROTEUS.


Caractersticas bsicas do PIC 16f877:

33 pinos de I/O;
08 k de memria de programa FLASH;
368 bytes de memria RAM;
256 bytes de memria EEPROM;
Velocidade mxima de trabalho de 20 MHz;
Watchdog timer (WDT);
03 Timers;
08 Canais A/D de 10 bits;
01 USART sncrona / assncrona;
Porta paralela escrava (PSP);
Porta serial sncrona SSP, SPI e I2C;

Para entendermos melhor o micro controlador 16F877, faremos um pequeno


exemplo para ligar e desligar dois LEDs. Isto suficiente para quem nunca
programou um micro controlador.
Para este estudo ser necessrio um bom conhecimento em linguagem C,
possuir o PROTEUS instalado, e o compilador PCW-C.
O micro controlador 16F877A:

PROTEUS

REAL

As figuras acima mostram todos os pinos do PIC, com seus respectivos nomes
/ funes. Os pinos RA0 a RA5 esto associados a porta A e assim
sucessivamente. Cada um destes pinos pode ser usado como entrada ou sada

e so definidos na programao. Observe que a maioria dos pinos tem mais de


uma funo.
Para montar o circuito no PROTEUS precisaremos dos seguintes materiais:

PIC16F877A;
Crystal;
Capacitor genrico;
Led Green;
Led Red;

A montagem no PROTEUS:

Observem que os capacitores C1 e C2 so ligados em paralelo com o Crystal,


estes capacitores podem assumir valores de 15 a 33 pF, e este circuito serve
para dar estabilidade o PIC, e o Crystal tem um clock de 4 MHz.

O Cdigo no PCW C fica:

#include <16F877A.h>
//inclui o arquivo cabealho usado para trabalhar com o PIC

#fuses XT,NOPUT,NOWDT,NOBROWNOUT,NOLVP
//Esta diretiva define quais fusveis internos do PIC so configurados. Os parmetros so armazenados
no arquivo .HEX e so usados somente na hora da gravao. So: XT (oscilador a crystal<=4 MHz)
NOPUT (no power up timer)(temporizador de power desligado) NOWDT (no watch dog
timer)desligado.(Se travar, o programa no resetado.) NOBROWNOUT (Reset por queda de tenso
desabilitado) NOLVP (programao em baixa tenso desabilitada)

#use delay (clock=4000000)


//Define o valor do relgio do PIC, este valor deve ser igual ao valor do cristal ou do ressonador externo.

#define L1 PIN_B1
#define L2 PIN_B2
//define os pinos que sero utilizados no PIC
Void Main () //define a funo geral do programa

{
While (True) //funo enquanto
{
Output_HIGH(L1); //Sada Ligada L1=PIN_B1
delay_ms(250); //ligado durante 250 ms
Output_LOW(L1); //Sada desligada L1=PIN_B1
delay_ms(250); //desligado durante 250 ms
Output_HIGH(L2); //Sada Ligada L1=PIN_B1
delay_ms(250); //ligado durante 250 ms
Output_LOW(L2); //Sada desligada L1=PIN_B1
delay_ms(250); //desligado durante 250 ms
}
}

Aps escrito o programa compile-o

Observe que os arquivos de sada (output files:) existe um arquivo HEX, este o arquivo que
nos interessa.
J no PROTEUS um duplo clique no PIC abrir esta janela:

No desenho da pasta da janela do edit componente, informe o endereo do arquivo em HEX

No campo processor clock frequency: digite 4MHz, e clique em OK.

Agora s apertar o boto play do PROTEUS e Olhar seus LEDs Piscarem.

You might also like