buenas, pues no se donde dejar este tema, decido dejarlo aqui...
hoy he estado programando un cerrojo con calve en la memoria EEPROM y poder cambiar la clave (y que no se borre cuando se resetea el PIC)
les paso el codigo, para que vean como es, y si habria algun fallo..
esta en basic:
si hay que cambiar algo, diganmelo porfavor, gracias..
ahora presento seguidamente donde esta el problema:
utilizo el MicroCode Studio + PBP244, y me da el error con eso , y me dice lo siguiente:
"
warning line 46: bad token "."
error line 46: expected '['. (CERRADURA ELECTRONICA CON CLAVE EN MEMORIA EEPROM Y CAMBIO DE CLAVE.bas)
"
es la primera vez que hago una programacion asi, y por lo que he visto, en lo demas no da falla.. mañana acabare de hacer el diagrama y lo subo, y me dicen tambien si esta bien...
si necesitan mas informacion, solo diganmelo
saludos
hoy he estado programando un cerrojo con calve en la memoria EEPROM y poder cambiar la clave (y que no se borre cuando se resetea el PIC)
les paso el codigo, para que vean como es, y si habria algun fallo..
esta en basic:
PHP:
'****************************************************************
'* Name : CERRADURA ELECTRONICA.BAS *
'* Author : Mulinee..46 *
'* Notice : Copyright (c) 2010 Mulinee..46 *
'* : All Rights Reserved *
'* Date : 27/07/2010 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
cmcon = 7 ;cambiar a modo digital todo el puerto A
NUMERO VAR BYTE ;variable numero para almacenar la tecla pulsada
R VAR BYTE ;variable r para hacer repeticiones
BIP VAR PORTA.0 ;el portA.0 Bip (conectar chicharra activa)
LEDVERDE VAR PORTA.1 ;el portA.1 se llamara LEDVERDE
LEDROJO VAR PORTA.3 ;el portA.3 se llamara LEDROJO
LEDAMARILLO VAR PORTA.4 ;el portA.4 se llamara LEDAMARILLO
LEDBLOQUEADO var PORTA.5 ;el portA.5 se llamara LEDBLOQUEADO
DOOR var PORTA.2 ;el portA.2 conectar rele para la cerradura
A var PORTB.0 ;nombres para los pines de las filas
B VAR PORTB.1
C VAR PORTB.2
D VAR PORTB.3
UNO VAR PORTB.4 ;nombres para los pines de las columnas
DOS VAR PORTB.5
TRES VAR PORTB.6
CUATRO VAR PORTB.7
SETPRIME VAR BYTE ;variable para almacenar la 1era clave
SETSEGUN VAR BYTE ;variable para almacenar la 2da clave
SETERCER VAR BYTE ;variable para almacenar la 3ra clave
SETCUART VAR BYTE ;variable para almacenar la 4ta clave
INICIANDO: ;programa del led para saber si esta funcionando
FOR R = 1 TO 2
high LEDVERDE : HIGH BIP
PAUSE 1000
LOW LEDVERDE : LOW BIP
PAUSE 150
NEXT
;******************GUARDA LA CLAVE DE FABRICA**********************
EEPROM 0.[1,2,3,4] ;cargar la memoria EEPROM desde la direccion 0 en adelante
;******************************************************************
RESET:
FOR R = 1 TO 3
HIGH LEDAMARILLO : HIGH BIP
PAUSE 50
LOW LEDAMARILLO : LOW BIP
PAUSE 50
IF (CUATRO=0) AND (UNO=0) THEN RESET ;corresponden a las teclas 7 y C
NEXT
READ 0,SETPRIME ;leer el dato de la EEPROM 0 y guardar en setprime
READ 1,SETSEGUN ;leer el dato de la EEPROM 1 y guardar en setsegun
read 2,SETERCER ;leer el dato de la EEPROM 2 y guardar en setercer
read 3,SETCUART ;leer el dato de la EEPROM 3 y guardar en setcuart
goto TECLAUNO ;ir a comparar claves
GRABAUNO: ;programa para cambiar clave
GOSUB PTECLA : HIGH LEDROJO : HIGH LEDVERDE ;espera a que suelte las teclas
GOSUB BARRIDO : GOSUB PTECLA ;ir a barrido y retorna a un antirrebote
HIGH LEDROJO : HIGH LEDVERDE ;mantener encendido el LED
WRITE 0,NUMERO ;guardar en la EEPROM 0 el valor de numero
GRABADOS: ;programa para cambiar clave
gosub BARRIDO : GOSUB PTECLA ;ir a barrido y retorna a un antirrebote
high LEDROJO : HIGH LEDVERDE ;mantener encendido el LED
WRITE 1,NUMERO ;guardar en la EEPROM 1 el valor de numero
GRABATRES: ;programa para cambiar clave
gosub BARRIDO : GOSUB PTECLA ;ir a barrido y retorna a un antirrebote
high LEDVERDE : HIGH LEDROJO ;mantener encendido el LED
write 3,NUMERO ;guardar en la EEPROM 3 el valor de numero
GRABACUATRO: ;programa para cambiar clave
high LEDROJO : HIGH LEDVERDE ;mantener encendido el LED
write 4,NUMERO ;guardar en la EEPROM 4 el valor de numero
goto RESET ;ir a reset para cargar el nuevo valor en las variables
BARRIDO:
low A ;sensar la fila A
if UNO = 0 THEN NUMERO = 1 : RETURN ;tecla pulsada retorne cargada con 1
IF DOS = 0 THEN NUMERO = 2 : RETURN ;tecla pulsada retorne cargada con 2
IF TRES = 0 THEN NUMERO = 3 : RETURN ;tecla pulsada retorne cargada con 3
IF CUATRO = 0 THEN NUMERO = 10 : RETURN ;tecla pulsada retorne cargada con 10
HIGH A
LOW B ;sensar la fila B
IF UNO = 0 THEN NUMERO = 4 : RETURN ;tecla pulsada retorne cargada con 4
if DOS = 0 then NUMERO = 5 : return ;tecla pulsada retorne cargada con 5
IF TRES = 0 then NUMERO = 6 : return ;tecla pulsada retorne cargada con 6
if CUATRO = 0 then NUMERO = 11 : return ;tecla pulsada retorna cargada con 11
high B
low C ;sensar la fila C
if UNO = 0 then NUMERO = 7 : return ;tecla pulsada retorne cargada con 7
if DOS = 0 THEN NUMERO = 8 : RETURN ;tecla pulsada retorne cargada con 8
if TRES = 0 then NUMERO = 9 : return ;tecla pulsada retorne cargada con 9
if CUATRO = 0 Then NUMERO = 12 : return ;tecla pulsada retorne cargada con 12
high C
low D ;sensar la fila D
If UNO = 0 then NUMERO = 14 : return ;tecla pulsada retorne cargada con 14
if DOS = 0 then NUMERO = 0 : return ;tecla pulsada retorne cargada con 0
if TRES = 0 then NUMERO = 15 : return ;tecla pulsada retorne cargada con 15
if CUATRO = 0 then NUMERO = 13 : return ;tecla pulsada retorne cargada con 13
high D
pause 10
GOTO BARRIDO
;*********************PROGRAMA ANTIRREBOTE DE TECLAS****************
PTECLA:
high LEDVERDE : high BIP ;genera sonido cada vez que se pulsa tecla
pause 100 ;duracion 100 milisegundos
low LEDVERDE : low BIP ;apagar sonido y led
ESPACIO: ;programa antirrebote de teclas
if UNO = 0 then ESPACIO ;si la tecla sigue pulsada ir espacio
IF DOS = 0 then ESPACIO ;si la tecla sigue pulsada ir a espacio
IF TRES = 0 THEN ESPACIO ;si la tecla sigue pulsada ir a espacio
IF CUATRO = 0 then ESPACIO ;si la tecla sigue pulsada ir a espacio
pause 25
return ;retorna si suelta las teclas
;******************************************************************
;**********************COMPARACION DE CLAVES***********************
TECLAUNO:
GOSUB BARRIDO ;ir a barrido y retornar con un valor
GOSUB PTECLA ;envia a un programa antirrebote para soltar tecla
if NUMERO = SETPRIME then TECLADOS ;si el numero es igual a SETPRIME ir a TECLADOS
goto FALSO ;caso contrario ir a lazo falso
TECLADOS:
gosub BARRIDO ;ir a barrido y retornar con un valor
GOSUB PTECLA ;envia a un programa antirrebote para soltar tecla
if NUMERO = SETSEGUN THEN TECLATRES ;si el numero es igual a SETSEGUN ir a TECLATRES
goto FALSO1 ;caso contrario ir a lazo falso
TECLATRES:
GOSUB BARRIDO ;ir a barrido y retornar con un valor
GOSUB PTECLA ;envia a un programa antirrebote para soltar tecla
if NUMERO = SETERCER THEN TECLACUATRO ;si el numero es igual a SETERCER ir a TECLACUATRO
goto FALSO2 ;caso contrario ir a lazo falso
TECLACUATRO:
GOSUB BARRIDO ;ir a barrido y retornar con un valor
GOSUB PTECLA ;envia a un programa antirrebote para soltar tecla
if NUMERO = SETCUART THEN OPENGE ;si el numero es igual a SETCUART conectar rele
GOTO FALSO3 ;caso contrario ir a lazo falso
OPENGE:
FOR R = 1 to 2 ;2 pitos indica clave correcta
pause 100
high LEDAMARILLO : high BIP : HIGH LEDVERDE
pause 100
low LEDAMARILLO : LOW LEDVERDE : LOW BIP
next
high DOOR ;se conecta rele (abrir puerta)
PAUSE 1500 ;esperar 1,5 segundos
low DOOR ;desconectar rele
HIGH A : HIGH B : HIGH C : LOW D ;sensar solo la fila D
IF CUATRO = 0 THEN GRABAUNO ;corresponde a la tecla D para ir a GRABAR
GOTO TECLAUNO ;ir nuevamente a comparar las claves
;******************************************************************
;****************LAZOS FALSOS TECLAS ERRONEAS**********************
FALSO:
gosub BARRIDO : GOSUB PTECLA ;estas teclas no comparan ninguna
FALSO1: ;clave solo espera que termine de
GOSUB BARRIDO : GOSUB PTECLA ;pulsar las 4 teclas y no hacer nada
FALSO2:
GOSUB BARRIDO : GOSUB PTECLA
FALSO3:
for R = 1 to 15 ;30 pitos indica calve incorrecta
pause 150
high LEDROJO : HIGH BIP
pause 150
low LEDROJO : LOW BIP
high A : HIGH B : HIGH D : LOW C ;sensar solo la fila C
if (CUATRO = 0) AND (UNO = 0) then RESET ;corresponden a las teclas 7 y C para resetear
next
PANICO:
high LEDBLOQUEADO
pause 500
low LEDBLOQUEADO
pause 500
HIGH A : HIGH B : HIGH D : LOW C ;sensar solo la fila C
IF (CUATRO = 0) AND (UNO = 0) THEN RESET ;corresponden a las teclas 7 y C para resetear
GOTO PANICO ;queda en este lazo para siempre
;******************************************************************
end
ahora presento seguidamente donde esta el problema:
PHP:
;******************GUARDA LA CLAVE DE FABRICA**********************
EEPROM 0.[1,2,3,4] ;cargar la memoria EEPROM desde la direccion 0 en adelante
;******************************************************************
"
warning line 46: bad token "."
error line 46: expected '['. (CERRADURA ELECTRONICA CON CLAVE EN MEMORIA EEPROM Y CAMBIO DE CLAVE.bas)
"
es la primera vez que hago una programacion asi, y por lo que he visto, en lo demas no da falla.. mañana acabare de hacer el diagrama y lo subo, y me dicen tambien si esta bien...
si necesitan mas informacion, solo diganmelo
saludos