domingo, 26 de junio de 2011

Teclado y Porta

Este es parte del circuito para controlar los desvíos de mi maqueta, pero sirve también como un buen ejemplo para ver como conectar un teclado a un 16f628a y como utilizar las salidas del puerto A, en este caso para encender un led, pero también podemos conectarle relés o lo que se os ocurra.
También es un buen ejemplo para ver como encender y apagar un led con un solo pulsador mediante IF THEN y ELSE.

Este Chip seria el esclavo para mi maqueta y con el solo controlaría el teclado y las 7 salidas para activar o desactivar los desvíos. Solo utiliza los 7 primeros dígito del teclado, los demás los utilizare para la rotonda, la estación y el desenganchador mediante Serout.

Este es el esquema:


Y este es el programa en PBP:



@ DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF

include "modedefs.bas"

CMCON=7 'Todo digital

'Salida de datos serout
salida var portb.0
'Teclado
La var portb.1
Lb var portb.2
Lc var portb.3
Ld var porta.4
Funo var portb.5
Fdos var portb.6
Ftres var portb.7

'Salidas
Duno Var porta.0
Ddos Var porta.1
Dtres var porta.2
Dcuatro var porta.3
Dcinco var portb.4
Dseis var porta.6
Dsiete var porta.7
Trisa=000000
Porta=000000

'Bits de control
Buno var bit
Bdos var bit
Btres var bit
Bcuatro var bit
Bcinco var bit
Bseis var bit
Bsiete var bit




menu:
pause 100
serout salida,T9600,[Buno,Bdos,Btres,Bcuatro,Bcinco,Bseis,Bsiete]

;Etiqueta para el teclado
teclado:
low La : high lb
high lc : high ld
if funo = 0 then uno
if fdos = 0 then Dos
if ftres = 0 then tres

high La : low lb
high lc : high ld

if Funo = 0 then cuatro
if Fdos = 0 then cinco
if Ftres = 0 then seis


HIGH La : HIGH Lb
LOW Lc : HIGH Ld

if funo = 0 then siete

pause 10
goto teclado

Uno:
if Buno = 0 then
high Duno
Buno = 1
pause 100
else
low dDun
Buno = 0

pause 100
endif
Goto menu

Dos:
if bdos = 0 then
high ddos
bdos = 1
pause 100
else
low ddos
bdos = 0
pause 100
endif
Goto menu

Tres:
if Btres = 0 then
high Dtres
Btres = 1
pause 100
else
low Dtres
Btres = 0
pause 100
endif
Goto menu

cuatro:
if Bcuatro = 0 then
high Dcuatro
Bcuatro = 1
pause 100
Else
low Dcuatro
Bcuatro = 0
pause 100
endif
Goto menu

cinco:
if Bcinco = 0 then
high Dcinco
Bcinco = 1
pause 100
Else
low Dcinco
Bcinco = 0
pause 100
endif
Goto menu

seis:
if Bseis = 0 then
high Dseis
Bseis = 1
pause 100
Else
low Dseis
Bseis = 0
pause 100
endif
Goto menu

siete:
if Bsiete = 0 then
high Dsiete
Bsiete = 1
pause 100
Else
low Dsiete
Bsiete = 0
pause 100
endif
Goto menu

END

'------------------Fin de Codigo--------------------------

No hay comentarios :

Publicar un comentario