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--------------------------
domingo, 26 de junio de 2011
Teclado y Porta
También te puede interesar:
Suscribirse a:
Enviar comentarios
(
Atom
)
No hay comentarios :
Publicar un comentario