Autor Tema: almacenar num.de telefono con write y read  (Leído 2344 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
almacenar num.de telefono con write y read
« en: 11 de Enero de 2005, 13:11:00 »
Hola amigos,

Feliz año nuevo a todos los foreros!

Bueno os comento mu duda. Quisiera almacenar un núm de teléfono en la eeprom de mi PIC16F876 y por más que lo intento no hay forma de conseguirlo.

Cuando llega un mensaje SMS por el puerto serie de mi pic tengo lo siguiente:

Una vez que recibo la sarta de caracteres por el puerto serie le indico que se vaya a una subrutina llamada SAVE. (Las variables i y a y demás estan creadas como tipo byte.)
Y luego a LOAD para enviar lo que tengo almacenado.

......
......
......
código de inicio de mi programa
.
.
GOSUB SAVE
SAVE:
For i = 0 to 11
a = i + 10
write a,ntelef
next i
"meto 12 caracteres por que son los 12 números incluido el (+34)
"Imaginaos que quiero almacenar en la variable ntelef el siguiente número de teléfono para luego enviarlo por serie:
+34677323232
LOAD:
For i = 0 to 11
a = i + 10
read a,ntelef
next i
serout2 pinout,188,[str ntelef11,10,13]

pero no me saca nada, qué tengo mal o puede estar mal.

Necesito vuestra ayuda por favor.
Muchas gracias.




Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: almacenar num.de telefono con write y read
« Respuesta #1 en: 11 de Enero de 2005, 13:48:00 »
Que onda Egds,
Analizandosolo la escritura en la eeprom:
SAVE:
For i = 0 to 11
a = i + 10
write a,ntelef
next i

Me sale la duda de por que no usar la variable i en lugar de a de forma directa, y para que poner   a = i + 10  , si en el for solo se va a ir incrementando:
For i = 0 to 11   ´graba en 12 posiciones de eeprom
write i,ntelef
next i

Si en las posiciones primeras ya tiens guarddo algo  entonces:
For i = 12 to 24   ´graba en 12 posiciones de eeprom
write i,ntelef
next i
y guardar el flag i para ver donde se quedo  para posteriormente guardar mas numeros.
Prueba primero guardando y leyendo de la memoria , si te funciona entonces lo incluyes en tu codigo completo.
Asi como lo tienes deberia de funcionar correctamente, aunque tu problema por otro lado puede ser de hardware(no se si uses lcd para verlo que guardaste) o en otro punto de tu codigo, recuerda que  si usas serout configurarlo adecuadamente, o usar en su defecto el Include "modedefs.bas"  con el estandar definido , etc.. Pero en si tu forma de grabar en la eeprom interna esta bien.
Prueba  imprimiendo con serout desde el principio un valor como encendido o algo asi para ver que la rutina de impresion este trabajando. ahora si dices que son 12 numeros deberia de ser la variable ntelef un ARRAY de 12 bytes, .. en fin hay varias pruebas que puedes realizar para comprobar que efectivamente este grabando asi como esta .Si estas usando pbp no puedes meter mas de 2 bytes(por la limitacion de pbp a words slamente, almenos que hayas hecho tus propias rutinas para acomodar mas valores y demas...) si usas proton tambien estaria mal ya que solo soporta 4 bytes.. asi que desde un principio debe ser array de 12 bytes o de los que vasyas a usar, y cada array cambiaria conforme cambia la direccion.
For i = 0 to 11  ´graba en 12 posiciones de eeprom
write i,ntelef(i)  "array de 12 bytes  ntelef var byte[12]
next i
Salu2 pana

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: almacenar num.de telefono con write y read
« Respuesta #2 en: 12 de Enero de 2005, 07:18:00 »
For i = 0 to 11 ´graba en 12 posiciones de eeprom
write i,ntelef(i) "array de 12 bytes ntelef var byte[12]
next i

Creo que ahi esta la respuesta del amigo Lager. ntelef deve ser un arreglo de 12 bytes. En el programa que hicistes estavas guardando el valor de la variable ntelef una y otra vez  en esas posisiones

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: almacenar num.de telefono con write y read
« Respuesta #3 en: 13 de Enero de 2005, 23:30:00 »
Egds...
Recuerda que los caracteres que te entran por el puerto serie, son valores ascii no decimales.
yo lo pasé muy mal haciendo un proyecto parecido al que comentas, y todo por culpa de pensar en decimal.

aqui va la tabla de correspondencias ascii
http://www.ascii.cl/es/

No se si será tu error, si no es así, espero que lo soluciones pronto.