hola:
bueno que alguien me explique o me dice sobre este ej. este lo copie de aki mismo y lo estoy revisando para verificar
las fusiones que usaron y para poder hacer el mio... aprender...
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 PORTA' " Setea el port LCD Register Select
DEFINE LCD_RSBIT 1' " 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
n5 var byte
eprom1 var byte
i var byte
R VAR BYTE
n var byte
j var byte
M var byte
FILA_0 VAR BYTE
FILA_1 VAR BYTE
FILA_2 VAR BYTE
FILA_3 VAR BYTE
n1 = "5" '" asigno valor a las variables
n2 = "5" '" el valor es equivalente en asccII
n3 = "5"
n4 = "5"
n5 = "5"
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
write 4, n5
LCDOUT $FE,1," CLAVE GRAVADA "
GoSub tiempo_05
GoSub tiempo_05
GoSub tiempo_05
GOTO publicidad
publicidad: '" CICLO INICAL DEL LCD MUESTRA
GoSub tiempo_05 '" MENSAJE DE BIENVENIDA
LCDOUT $FE,1," ACCESO à NANDO"
GoSub tiempo_06 '" aqui hay que poner una rutina
OPTION_REG = 0
TRISB = %11111110 '"Activamos Pull-up
IF portb= $7e then goto clave
LCDOUT $FE,$C0," Electronica "
GoSub tiempo_06 '" 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:
COLUMNA_0:
R = 0
TRISB = %11111110
portb.0= 0
GoTo PREGUNTA
COLUMNA_1:
R = R + 1
TRISB = %11111101
portb.1 = 0
GoTo PREGUNTA
COLUMNA_2:
R = R + 1
TRISB = %11111011
portb.2 = 0
GoTo PREGUNTA
COLUMNA_3:
R = R + 1
TRISB = %11110111
portb.3 = 0
GoTo PREGUNTA
GoTo teclado
suelta:
if (portb&%11110000)=$f0 then visualiza
GoTo suelta
visualiza:
lookup j, ["741C8520963=/*-+"], tecla
Return
clave:
LCDOUT $FE,1," Digite su Clave"
GoSub tiempo_05
GoSub tiempo_05
GoSub teclado
SWAP tecla, n1
i = 0
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n2
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n3
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n4
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n5
GoSub lcd_sal
GoSub tiempo_05
read 0, eprom1
If eprom1 = n1 Then miro_dos
incorrecto:
LCDOUT $FE,1,"Clave Incorrecta"
GoSub tiempo_05
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 miro_cinco
GoTo incorrecto
miro_cinco:
read 4, eprom1
If eprom1 = n5 Then menu
menu:
LCDOUT $FE,1," Selecione "
GoSub tiempo_05
GoSub tiempo_05
LCDOUT $FE,1,"1_Abrir Puerta"
GoSub tiempo_05
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 "
GoSub tiempo_05
GoSub tiempo_05
GoTo menu
abrir:
high porta.3
LCDOUT $FE,1," Bienvenido "
GoSub tiempo_05
GoSub tiempo_05
GoSub tiempo_05
GoSub tiempo_05
GoSub tiempo_05
GoSub tiempo_05
low porta.3
GoTo publicidad
nueva_clave
LCDOUT $FE,1," Digite su Nueva"
LCDOUT $FE,$C0,"Clave:"
GoSub tiempo_06
i = 2
GoSub teclado
SWAP tecla, n1
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n2
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n3
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n4
GoSub lcd_sal
GoSub tiempo_05
GoSub teclado
SWAP tecla, n5
GoSub lcd_sal
GoSub tiempo_05
GoTo gravar_clave
tiempo_05:
pause 100
Return
tiempo_06:
pause 500
return
lcd_sal:
LCDOUT $FE,$C5+i,"X"
i = i + 1
Return
PREGUNTA:
M = 4 * R
FILA_0=($E0 +(portb&%00001111))
FILA_1=($D0 +(portb&%00001111))
FILA_2=($B0 +(portb&%00001111))
FILA_3=($70 +(portb&%00001111))
If portb = FILA_0 Then j = M
M = M + 1
If portb = FILA_1 Then j = M
M = M + 1
If portb = FILA_2 Then j = M
M = M + 1
If portb = FILA_3 Then j = M
if (portb&%11110000)<>$f0 then suelta
If R = 0 Then COLUMNA_1
If R = 1 Then COLUMNA_2
If R = 2 Then COLUMNA_3
GoTo teclado
el ej funciona bien pero lo que quiero saber como ago para que cuando le quite la alimentacion la clave que cambien atrabes del teclado no se pierda, para que cuando le conecte la alimentacion otrabes trabajar con la ultima clave que guarde...
agradeceria la ayuda ya que estoy desarrollando un proyecto y esta es la etapa final que son las claves de acceso..
bye...