PIC - Acionar um LED com um Botão

Neste exemplo utilizamos um PIC 16F628a para fazer a demonstração de como utilizar um botão para acionar um LED.

Para compilar o código utilizamos o programa Prithvi Portable (https://sites.google.com/site/kitoeag/informatica/prithvi-portable)

Figura 1: Esquema do circuito

O código abaixo liga um LED quando o botão for pressionado.

Codigo

#chip 16F628a, 4 'Define o modelo do PIC e a frenquencia do cristal

#define LED PORTB.0 'Define PORTB.0 como a palavra LED

#define Botao PORTB.1 'Define PORTB.1 como a palavra Botao

Dim Estado_botao as Bit 'Declara a variável Estado_botao como bit

Dir LED Out 'Define PORTB.0 como saída.

Dir Botao In 'Define PORTB.1 como entrada.

Do 'Rotina principal

If Botao = 1 then 'Verifica o se o botão foi pressionado

LED = 1

end if

Loop 'Retorna em Do e fica sempre neste loop.

No código abaixo, quando o botão é acionado, o PIC aguarda que o mesmo seja liberado e logo em seguida liga o LED durante 1 segundo e depois volta a apaga-lo.

Código

#chip 16F628a, 4 'Define o modelo do PIC e a frenquencia do cristal

#define LED PORTB.0 'Define PORTB.0 como a palavra LED

#define Botao PORTB.1 'Define PORTB.1 como a palavra Botao

Dim Estado_botao as Bit 'Declara a variável Estado_botao como bit

Dir LED Out 'Define PORTB.0 como saída.

Dir Botao In 'Define PORTB.1 como entrada.

Do 'Rotina principal

If Botao = 1 then 'Verifica o se o botão foi pressionado

Estado_botao = 1 'Salva o estado do botão na variável Estado_botao

end if

If Estado_botao = 1 then 'Entra nesta rotina se o botao foi pressionado

If Botao = 0 then 'Executa esta rotina caso o botão seja liberado

Estado_botao = 0

LED = 1 'Acende o LED

Wait 1000 ms 'Espera 500 milisegundos

LED = 0 'Apaga o LED

Wait 1000 ms 'Espera 500 milisegundos

end if

end if

Loop 'Retorna em Do e fica sempre neste loop.

Veja o vídeo mostrando o funcionamento do código.