You are on page 1of 8

24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

Início  Embarcados  Utilizando PIC 16F628A com push-button e leds

Utilizando PIC 16F628A com push-button e leds


 17
Embarcados 
15 de abril de 2014 
Adilson Thomsen

Nos testes deste post vamos utilizar o PIC 16F628A em conjunto com um botão/chave tipo push-button e
um led para demonstrar como de nir uma porta do microcontrolador como entrada e usar esses dados
para acionar outras saídas do chip. Se você está começando com microcontroladores da família PIC,
recomendamos ler primeiramente este post de Como gravar seu 1º programa com PIC.

Todos os componentes utilizados nesse post você encontra na loja FILIPEFLOP, como protoboard, leds,
resistores e outros componentes.

https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 1/8
24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

Para este projeto, vamos utilizar o seguinte material :

PIC 16F628A
Push button
3 resistores de 1 K
2 leds

Ligamos os 2 leds às portas 0 e 1 (pinos 17/RA0 e 18/RA1 do PIC 16F628A, respectivamente), e o botão será
ligado à porta 3 (pino 2/RA3 do PIC 16F628A). A alimentação do CI é feita pelo pino 5 (GND), e pino 14
(Vcc/5V). A pinagem do PIC 16F628A segue o esquema abaixo:

A cada toque no botão, a variável Status será atualizada, e as saídas correspondentes aos leds serão
acionadas alternadamente : 1 toque no botão acende o led1, o 2o. toque acende o led2, o 3o. toque acende
o led1 novamente, e assim por diante.

Os dois resistores ligados aos leds são limitadores de corrente, e o resistor ligado ao push-button funciona
como um resistor pull-up, evitando acionamentos incorretos da porta 3.

No programa, usamos BOTAO para nos referirmos à porta 3, PINO_LED1 para a porta 0 e PINO_LED2 para
a porta 1. A variável Status recebe os valores 0 ou 1, conforme o acionamento do botão, e tem o seu valor
invertido à cada acionamento, por meio do comando status=!status.

Para efetuarmos a leitura de uma determinada porta, simplesmente usamos o comando


INPUT_STATE(PORTA), e para escrita, usamos o comando OUTPUT_BIT(PORTA, VALOR).

https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 2/8
24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

1 //Programa : PIC16F628A com push-button e leds


2 //Autor : FILIPEFLOP
3  
4 #include <16F628A.h>
5  
6 //Configuracao FUSES
7 #FUSES NOWDT
8 #FUSES INTRC_IO
9 #FUSES NOPUT
10 #FUSES NOPROTECT
11 #FUSES NOBROWNOUT
12 #FUSES NOMCLR
13 #FUSES NOLVP
14 #FUSES NOCPD
15  
16 //Definicoes portas
17 #define BOTAO PIN_A3
18 #define PINO_LED1 PIN_A0
19 #define PINO_LED2 PIN_A1
20  
21 //Define clock
22 #use delay(clock=4000000)
23  
24 void main()
25 {
26 unsigned int status=0;
27 while(1)
28     {
29     //Verifica se o botao foi pressionado
30     if(input_state(BOTAO) == 0)
31         {
32             //Altera status led1
33             output_bit(PINO_LED1, status);
34             //Altera Status led2
35             output_bit(PINO_LED2, !status);
36             delay_ms(500);
37             //Inverte o valor da variável status
38             status=!status;
39         }
40     }
41 }

Gostou ? Conte-nos sua experiência com este post e conheça um pouco sobre a nossa con ável trajetória
de vendas da FILIPEFLOP!

Posts Relacionados

Como comunicar o Como gravar PIC Apresentando a Monte um datalogger


Arduino com 18F4550 com Pickit3 FRDM-KL05Z com BeagleBone
Raspberry Pi Black

Adilson Thomsen

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente


responsável pelo departamento técnico da FILIPEFLOP.

https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 3/8
24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

← Alarme com o sensor de vibração SW18010P Controle de Acesso usando Leitor RFID com
Arduino  →

Deixe uma resposta

Conectar com:

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentário

Nome * E-mail *

Site

Publicar comentário

17 Comentários

Olá amigo se por um acaso eu quisesse que ao rodar o programa um led já comesse aceso e o outro
apagado e ao acionar o botão o aceso apagaria e o apagado acendece e ao acionar denovo voltasse a
primeira situação?

Bruno Lisboa 17 de maio de 2014 Responder

Boa tarde Bruno,

Você pode fazer isso colocando esses 2 comandos imediatamente antes da linha com o “While” :

output_bit(PINO_LED1, 1);
output_bit(PINO_LED2, 0);

Abraço.

Adilson – Equipe FILIPEFLOP

https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 4/8
24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

Paulo 20 de maio de 2014 Responder

Olá ! Como faço para usar esse processo com cinco ledes?

Lorenzo 9 de setembro de 2015 Responder

Olá! onde posso conseguir a biblioteca desse PIC?

Fernando Toral 5 de junho de 2014 Responder

Bom dia Fernando,

Na nossa instalação do MPLab e do compilador, a biblioteca dos dispositivos ca na pasta


C:Program Files (x86)PICCDevices

Abraço

Adilson – Equipe FILIPEFLOP

Paulo 5 de junho de 2014 Responder

Legal, tava procurando esse circuito, só q qdo ligo, no proteus, os leds ca piscando, acende um e outro
e cam assim, qdo aciono o botton eles para e ca um acesso direto, o que z de errado.
To querendo usar no 16f877, pois preciso de 27 portas.
Obrigado,
e meus parabens.
ps voce mandaria os pics gravados ???

Carlos 16 de julho de 2014 Responder

Boa, gostei muito!


Uma pergunta, Se eu quiser fazer uma sequencia (tipo 5 leds) e que no ultimo 6º toque do botão ele
apaga-se todos os leds, como eu faço?

Octavio Borges 17 de dezembro de 2014 Responder

Boa noite Octavio,

Minha sugestão é utilizar um contador, que ao chegar ao 6o. toque desliga todas as portas.

Abraço.

Adilson – Equipe FILIPEFLOP

Paulo 5 de janeiro de 2015 Responder

ESTOU COM UM PROBLEMA NO CIRCUITO DO PIC16F628A NÃO ESTA SAINDO 25MA NOS PINOS NA
SIMULAÇAO VIA PROTEUS, ESTOU FAZENDO UMA SEQUENCIA DE PISCA DE 8 LEDS COM RESISTORES 330
https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 5/8
24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

OHMS SAI 5 VOLTS MAS A CORRENTE SAI 0,000005A, PQ?

CARLOS 27 de março de 2015 Responder

Professor Fernando desculpe incomodar vc, mas é que eu to começando agora em microcontroladores
e to com um projeto que queria transformar. Será que vc pode me ajudar? é um projeto que ja funciona
com lcd mas eu quero transformar ele !! se o senhor professor Fernando puder me ajudar eu co
agradecido.

marco 7 de abril de 2015 Responder

Professor Bruno tem como fazer um led acender com duas entradas de um pic 16f628a.ex . pinto b1 e
pino b2 sendo acionado juntos por um button …no caso curtocircuitando os dois com um button e
acendendo o led em b5 no caso?

marco 7 de abril de 2015 Responder

boa noite
eu posso colocar o botão com dois terminais ao invés de 4?
se eu colocar o de duas pernas como ca o esquema?

Miguel 24 de abril de 2015 Responder

Olá amigos.

Estudei programação de microcontroladores há alguns anos atrás e por falta de prática, resolvi re-
estudar os assuntos. Quando usei um programa para escrever o código, e comparando o que usei com
esses que vocês sugerem, vi que há algumas diferenças em sintaxe (posso estar enganado). Por
exemplo, quando estudei programação usava TRISA = 0b00000000; para de nir os pinos do PORTA
como saídas, porém não consigo fazer o mesmo com o MPLAB, sempre aparece uma mensagem de erro
dizendo TRISA é um identi cador não de nido. Estou cometendo algum erro? Há algum material que
mostre como expressar as funções no MPLAB?

Desde já agradeço pela atenção.

Júlio 6 de março de 2016 Responder

Ah, esqueci de falar que quando tento acessar as interrupções pelo método que conhecia, tbm é
gerado um erro. O engraçado é que quando z o curso, tbm era em linguagem C.

Júlio 6 de março de 2016 Responder

Vocês poderiam mostrar um exemplo usando interrupções com o TIMER0, por favor? Isto está me
deixando maluco! Os modos que costumava fazer não funcionam, nem os que encontro na
internet.

SOCORROOO!!!

https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 6/8
24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

Júlio 6 de março de 2016 Responder

Olá!

Estou com uma dúvida em uma programação.


preciso acionar um Buzzer mandando 0 na saida do pic16F84A, com eu faria isso?

Desde já agradeço!

Lucas Lage Marques Fernandes 9 de novembro de 2016 Responder

Olá, onde consigo esse arquivo 16F628A.h, com essas funções que você chamou na sua main?

Emanuel Angelim 29 de novembro de 2016 Responder

Pesquisar Posts no BLOG Categorias

Pesquisar …  Arduino (83)

 Display (7)

 Embarcados (39)

 ESP8266 (14)

 Módulos (14)

 Motores e Servos (18)

 News (23)

 Outros (11)

 Raspberry Pi (43)

 Sem categoria (3)

 Sensores (23)

 Shield (2)

 Wearable (4)

 Wireless (42)

Posts Recentes

Cotação de Bitcoins com Raspberry Pi


21 de novembro de 2017

Black Friday FilipeFlop 2017


19 de novembro de 2017

https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 7/8
24/11/2017 Utilizando PIC 16F628A com push-button e leds - FilipeFlop

Robô Atlas Faz Acrobacias


17 de novembro de 2017

Streaming de vídeo com Raspberry Pi


Zero W
14 de novembro de 2017

Lançamento Fórum FilipeFlop


8 de novembro de 2017

v Assine a Newsletter
...e junte-se à maior comunidade maker do Brasil
Digite seu E-mail Enviar

Dúvidas Institucional
r m Frequentes n 0 0

o
 Pesquisar produtos…

Quem Somos
Como comprar
Alguma dúvida? Entre em Termos de Uso
contato! Frete Grátis
(48) 3307-3495 Trabalhe
Pagamento e Conosco
envio
Black Friday
Atendimento Online
Trocas e
Seg-Sex das 08h30-11h30 às 13h-17h
devoluções

     

FilipeFlop Componentes Eletrônicos | CNPJ: 12.672.380/0001-90


Rod. José Carlos Daux 4850 Galpão 19, Florianópolis/SC, 88032-005

https://www.filipeflop.com/blog/pic-16f628a-push-button-e-leds/ 8/8

You might also like