QUE PENA .. TIENES TODA la razon
miren este es el codigo pero quiero reducirlo un poco mas para que me quepa en la memoria de un
16f84A y asi poder hacerle unas mejoras..
bueno este es el codigo
DEFINE LCD_DREG PORTB " Setea el puertos de datos del LCD por el puerto B
DEFINE LCD_DBIT 0 " Setea el bit de comienzo de datos (0 o 4) si el bus es de 4-bit
DEFINE LCD_RSREG PORTB " Setea el port LCD Register Select
DEFINE LCD_RSBIT 4 " Setea el bit LCD Register Select
DEFINE LCD_EREG PORTA " Setea el port LCD Enable
DEFINE LCD_EBIT 0 " Setea el bit LCD Enable
DEFINE LCD_BITS 4 " Setea el tamaño del bus LCD (4 o 8 bits)
DEFINE LCD_LINES 2 " Setea el numero de lineas en el LCD
a var word " definicion de variables
tecla var word
n1 var byte
n2 var byte
n3 var byte
n4 var byte
eprom1 var byte
n1="1" " asigno valor a las variables
n2="5" " el valor es equivalente en asccII
n3="9"
n4="7"
eprom1="0"
PAUSE 100 " inicio el programa
read 0,eprom1
if eprom1 = 255 then gravar_clave
goto publicidad
gravar_clave
WRITe 0, n1
WRITe 1, n2
WRITe 2, n3
WRITe 3, n4
LCDOUT $FE,1," CLAVE GRAVADA "
PAUSE 1500
GOTO publicidad
publicidad: " CICLO INICAL DEL LCD MUESTRA
pause 500 " MENSAJE DE BIENVENIDA
LCDOUT $FE,1," EDGAR SANTIAGO "
pause 500 " aqui hay que poner una rutina
OPTION_REG=0
TRISB = %11111110 "Activamos Pull-up
IF portb= $7e then goto clave
LCDOUT $FE,$C0," Electronica "
pause 500 " LEE EL TECLADO A VER SI ES "*"
" SI NO ES CONTINUA MOSTRANDO MENSAJE
OPTION_REG=0
TRISB = %11111110 "Activamos Pull-up
if portb=$7e then goto clave
LCDOUT $FE,1," "
goto publicidad
teclado:
TRISB = %11111110
low portb.0
if portb = $EE then uno
if portb = $DE then cuatro
if portb = $BE then ciete
if portb = $7E then asterisco
TRISB = %11111101
low portb.1
if portb = $ED then dos
if portb = $DD then cinco
if portb = $BD then ocho
if portb = $7D then cero
TRISB = %11111011
low portb.2
if portb = $EB then tres
if portb = $DB then seis
if portb = $BB then nueve
if portb = $7B then numeral
goto teclado
asterisco
tecla="*"
return
ciete:
tecla="7"
return
cuatro:
tecla="4"
return
uno:
tecla="1"
return
dos:
tecla="2"
return
cinco:
tecla="5"
return
ocho:
tecla="8"
return
cero:
tecla="0"
return
tres:
tecla="3"
return
seis:
tecla="6"
return
nueve:
tecla="9"
return
numeral:
tecla="#"
return
clave:
LCDOUT $FE,1," Digite su Clave"
pause 1000
gosub teclado
SWAP tecla, n1
LCDOUT $FE,$C5,"X"
pause 500
gosub teclado
SWAP tecla, n2
LCDOUT $FE,$C6,"X"
pause 500
gosub teclado
SWAP tecla, n3
LCDOUT $FE,$C7,"X"
pause 500
gosub teclado
SWAP tecla, n4
LCDOUT $FE,$C8,"X"
pause 500
READ 0,EPROM1
IF eprom1 = n1 then miro_dos
incorrecto:
LCDOUT $FE,1,"Clave Incorrecta"
pause 500
goto publicidad
miro_dos
READ 1, eprom1
IF eprom1 = n2 then miro_tres
goto incorrecto
miro_tres
READ 2, eprom1
IF eprom1 = n3 then miro_cuatro
goto incorrecto
miro_cuatro
READ 3, eprom1
IF eprom1 = n4 then goto menu
goto incorrecto
menu
LCDOUT $FE,1," Selecione "
pause 1000
LCDOUT $FE,1,"1_Abrir Puerta"
pause 300
LCDOUT $FE,$C0,"2_Cambiar Clave"
gosub teclado
IF tecla = "1" THEN goto abrir
if tecla = "2" then goto nueva_clave
"if tecla != "1" and tecla!= "2" then LCDOUT $FE,1,"TECLA INCORRECTA "
LCDOUT $FE,1,"TECLA INCORRECTA "
pause 700
goto menu
abrir:
high porta.3
LCDOUT $FE,1," Bienvenido "
pause 3000
low porta.3
goto publicidad
nueva_clave
LCDOUT $FE,1," Digite su Nueva"
LCDOUT $FE,$C0,"Clave:"
pause 500
gosub teclado
SWAP tecla, n1
LCDOUT $FE,$C7,"X"
pause 500
gosub teclado
SWAP tecla, n2
LCDOUT $FE,$C8,"X"
pause 500
gosub teclado
SWAP tecla, n3
LCDOUT $FE,$C9,"X"
pause 500
gosub teclado
SWAP tecla, n4
LCDOUT $FE,$C9+1,"X"
pause 500
goto gravar_clave
BUENO ESPERO SUGERENCIAS....