Autor Tema: Arreglos en pic  (Leído 3271 veces)

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

Desconectado ingeniero18

  • PIC10
  • *
  • Mensajes: 20
Arreglos en pic
« en: 20 de Marzo de 2014, 01:14:10 »
Cómo andan? Acabo de retomar mis estudios en pic y estoy estudiando el tema del uso de la EEprom en ellos.
Haciendo programas de prueba, me encontré con un inconveniente: pretendo cargar una serie de datos en la eeprom a lo largo de diez direcciones consecutivas dentro de la misma, por lo que propuse el siguiente programa usando un arreglo o vector:

#include <18F452.h>
#FUSES xt,NOWDT
#use delay(clock=4M)

void main()
{
int v[ ];
int x,i;
i=0;
for(x=0;x<=9;x++)
   {
   write_eeprom((v
  • ),i);

   i=i+1;
   }
while(1)
{}
}

Al simularlo en Proteus, me di cuenta que, no sólo no se llenan las diez posiciones de la eeprom, sino que se van grabando sólamente la posición 0 y la 2 y en forma errática sin seguir el ritmo que tendría que imponer el "for".

Me podrían decir qué estoy haciendo mal???

Uso compilador c ccs versión 4.1 y Proteus 7
Muchas gracias

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Arreglos en pic
« Respuesta #1 en: 20 de Marzo de 2014, 07:24:18 »
lo que no entiendo es porque pones v[ x ] en el write_eeprom, si lo que quieres hacer es escribir consecutivamente desde la direccion 0 hasta la direccion 9 y dentro de ello escribir numeros del 0 al 9 tendrias que hacerlo asi:


write_eeprom(x,x);

Desconectado ingeniero18

  • PIC10
  • *
  • Mensajes: 20
Re: Arreglos en pic
« Respuesta #2 en: 20 de Marzo de 2014, 09:43:42 »
lo que no entiendo es porque pones v[ x ] en el write_eeprom, si lo que quieres hacer es escribir consecutivamente desde la direccion 0 hasta la direccion 9 y dentro de ello escribir numeros del 0 al 9 tendrias que hacerlo asi:


write_eeprom(x,x);

Gracias por tu respuesta MerLiNz!!! Entiendo lo que me planteáa y seguro anda, pero suponiendo que lo quiero hacer con un vector me gustaría saber por qué es que no anda más allá de que después no lo use. Además pregunto: está bien declarada la variable del arreglo? Puedo limitar a un número el tamaño del vector poniéndolo entre corchetes?

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Arreglos en pic
« Respuesta #3 en: 20 de Marzo de 2014, 11:57:28 »
yo creo que el error es tu declaración de la variable, estas declarando un vector, pero no estas reservando memoria. tendría que ser algo así

int v[]={1,2,3,4,5,6,7,8,9,10}

con esto ya tienen valores tus elementos del vector, porque como lo tienes ahorita no sabes que valor esta tomando al hacer un v[0].
"Nada es imposible, no si puedes imaginarlo"

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Arreglos en pic
« Respuesta #4 en: 20 de Marzo de 2014, 16:22:16 »
declaras un vector pero no le dices que valores tener asi que siempre tendras un valor 0, por eso te dije que no le veo sentido.

Desconectado ingeniero18

  • PIC10
  • *
  • Mensajes: 20
Re: Arreglos en pic
« Respuesta #5 en: 20 de Marzo de 2014, 18:43:07 »
Probé con lo que me dijeron de declarar valores iniciales y funcionó!!! Gracias a todos.
Ahora pregunto: siempre que se declare un arreglo hay que darle valores iniciales aunque después les guarde otros valores?

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Arreglos en pic
« Respuesta #6 en: 20 de Marzo de 2014, 19:31:16 »
Probé con lo que me dijeron de declarar valores iniciales y funcionó!!! Gracias a todos.
Ahora pregunto: siempre que se declare un arreglo hay que darle valores iniciales aunque después les guarde otros valores?
si lo inicializas puedes cambiar los valores posteriormente, sin embargo, no es necesario que
le des valores, pero si tienes que especificar el tamaño del vector, por ejemplo
int v[10];
"Nada es imposible, no si puedes imaginarlo"