TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Enigma en 27 de Mayo de 2009, 16:31:23

Título: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 27 de Mayo de 2009, 16:31:23
Hola muchachos que tal? he venido a ustedes porque de verdad que necesito ayuda para escribir y leer en la memoria EEPROM interna del PIC 18F4550... se que hay instrucciones pero de verdadno entiendo.... Siempre he tenido problemas a la hora de programar memorias d cualquier tipo :( .... Por ejemplo, si yo quisiera hacer una pequeña lista de palabras y guardarlas en memoria, por ejemplo:

Ingredientes         Tipo

Azucar                     A
Harina                      B
Huevos                     A
.... etc.

y así sucesivamente y luego leer cada una de esas palabras... como haría, alguien e puede ayudar, explicar???? necesito un empujonsito...................


Y disculpen la molestia........

Atte: Enigma... La llanerita de Guayana :-)
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: darck_khronos en 27 de Mayo de 2009, 19:42:00
Podrias nadams direccionar a la memoria con un #define y ya
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: MLO__ en 28 de Mayo de 2009, 01:03:23
Podria servirte esta:

Código: CSS
  1. void EscribirNumeroEEPROM(int8 Dir, int8 Lenght)//.............................................Escribo numero en la EEPROM
  2. {
  3.         int8 i=0;
  4.  
  5.         for(i=Dir; i<Dir+Lenght; i++)
  6.                 write_eeprom(i,BuferData[i-Dir]);
  7. }

Y antes del main, defines las direcciones de lo que quieras guardar con #defines, tal como lo dijo darck:

Código: CSS
  1. #define DirEEContrasena                 0

Saludos
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 28 de Mayo de 2009, 09:57:28
Hola, agradezco sus respuestas....

haber, mlo_ una pregunta...

cuando tengo esto:

void EscribirNumeroEEPROM(int8 Dir, int8 Lenght)

el int8 lenght seria para escibir una palabra???

y por ejemplo:

write_eeprom(i,BuferData[i-Dir]);
como?, como escrbiria por ejemplo harina??? no entiendo mucho... estoy  más enredada que un papagayo!!!!!! estoy vuelta un 8... :z)

Atte: Enigma... La llanerita de Guayana :-)
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: MLO__ en 28 de Mayo de 2009, 10:06:40
 :D :D

Lenght es el tamaño del string que vas a escribir en la EEPROM, puede ser 1,2,3 ...... etc hasta 255 ....

Ejemplo:
Vamos a escribir "harina":

Lo primero es enviar ese string a nuestro bufer de datos BuferData[], eso se puede hacer mediante un strcpy(); y listo. Luego vamos a pasarlo a la EEPROM:

Código: [Seleccionar]
EscribirNumeroEEPROM(DirEEString1,6);
En donde previamente he definido que
Código: [Seleccionar]
#define DirEEString1     0
Por lo tanto el string "harina" se va a guardar desde la posicion 0. El tamaño del string es 6, este valor lo puedes ingrsar directamente o lo puedes calcular tambien ... todo depende de como quieras el programa.

Saludos
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 28 de Mayo de 2009, 12:16:52
Um gracias por tu respuesta mlo_ Pero ya va, lento por favor, que esto se me hace un poco dificil..

No entiendo algo.... Como yo le digo al pic:


Mira pic, escribe Harina en tu memoriz y al lado de la palabra harina escribe tipo A..??? con que instrucción mando hariana y tipo A?


Atte: Enigma... La llanerita de Guayana :-) y disculpa mi brutalidad..... :-) :-)
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: MLO__ en 28 de Mayo de 2009, 13:02:06
Hola.

Escribes despues del string harina el tipo y listo, en este caso se escribiria:

Código: [Seleccionar]
EscribirNumeroEEPROM(7,1);
Ya que como harina tiene 6 bytes, hay que escribirlo despues del ultimo byte y como solo es una A, entonces el lenght es 1.

Antes de usar la funcion EscribirNumeroEEPROM(); bebes copiar lo que quieres enviar a la variable BuferData[].
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 28 de Mayo de 2009, 15:08:10
Aja... entendiendo más o menos... rayos tengo que buscar más información acerca de esto... tengo una nube de polvo frente  mis ojos!!!!!!!!!! :(


Atte: Enigma... La llanerita de Guayana :-)
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: PalitroqueZ en 28 de Mayo de 2009, 17:08:00
la escritura a una memoria siempre va de la mano con la tabla de direcciones, antes de leer/escribir se debe asignar la dirección de memoria donde se aloja el dato.

Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 04 de Junio de 2009, 22:34:36
Hola.... miren este código.... que estoy haciendo mal... No se me escribe nada en la memoria o por lo menos no se muestra en el hyperterminal.... Index es el puntero que se mueve por cada dirección de memoria para escribir un dato n la dirección a la que apunte el puntero index...

#include <18F4550.h>
#fuses NOPROTECT,NOCPD,NOLVP,NOMCLR,XT
#use fast_io (A)
#use fast_io (B)
#use fast_io (C)
#use fast_io (D)
#use fast_io (E)
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)           // Habilita las funciones RS232, velocidad a 9600 baudios
#byte portd= 0xF83
#byte portb= 0xF81
#byte portc= 0xF82
#byte porta= 0xF80


int seccionador,index,datos,j;
void main(void)
   {
         set_tris_d(0x00);                                // Puerto D, como b'00000000 (salida)
         set_tris_b(0x00);                                // Puerto B, como b'00000000 (salida)
         set_tris_a(0xFF);                                // Puerto A, como b'11111111 (entrada)
         set_tris_c(0xFF);                                // Puerto c, como b'11111111 (entrada)
         setup_adc(ADC_OFF);                              // Deshabilito el conversor A/D
         setup_adc_ports(NO_ANALOGS);                     // Deshabilito las entradas análogicas
         output_b(0);                                     // Limpio el puerto B
         output_d(0);                                     // Limpio el puerto D
         output_a(0);                                     // Limpio el puerto A
         output_c(0);                                     // Limpio el puerto C
         delay_ms(10);                                    // Una demorita de 10 mS
         while(true)
            {
/////////////////////Enciende los leds cuando los seccionadores están en "1" lógico/////////////////////

            index= read_EEPROM(0x00);                     // Leo la memoria interna
            if(index==255)                                // Si la memoria interna está en la posición
            {index=0;}                                    // Entonces la mando a escribir desde el principio
            while(input(PIN_E0)==1)
               {
               if(input(PIN_A0)==1)                       // Seccionador 1
                  {
                     output_high(PIN_D0);                 // Enciendo un led de indicación
                     seccionador= 1;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
               else
                  {
                     output_low(PIN_D0);                  // Apago el led de indicación
                  }
               if(input(PIN_A1)==1)                       // Seccionador 2
                  {
                     output_high(PIN_D1);                 // Enciendo un led de indicación
                     seccionador= 2;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D1);                  // Apago el led de indicación
                  }
               if(input(PIN_A2)==1)                       // Seccionador 3
                  {
                     output_high(PIN_D2);                 // Enciendo un led de indicación
                     seccionador= 3;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D2);                  // Apago el led de indicación
                  }
               if(input(PIN_A3)==1)                       // Seccionador 4
                  {
                     output_high(PIN_D3);                 // Enciendo un led de indicación
                     seccionador= 4;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D3);                  // Apago el led de indicación
                  }
               if(input(PIN_A4)==1)                       // Seccionador 5
                  {
                     output_high(PIN_D4);                 // Enciendo un led de indicación
                     seccionador= 5;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D4);                  // Apago el led de indicación
                  }
               if(input(PIN_A5)==1)                       // Seccionador 6
                  {
                     output_high(PIN_D5);                 // Enciendo un led de indicación
                     seccionador= 6;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D5);                  // Apago el led de indicación
                  }
               if(input(PIN_C0)==1)                       // Seccionador 7
                  {
                     output_high(PIN_D6);                 // Enciendo un led de indicación
                     seccionador= 7;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D6);                  // Apago el led de indicación
                  }
               if(input(PIN_C1)==1)                       // Seccionador 8
                  {
                     output_high(PIN_D7);                 // Enciendo un led de indicación
                     seccionador= 8;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D7);                  // Apago el led de indicación
                  }
               if(input(PIN_C2)==1)                       // Seccionador 9
                  {
                     output_high(PIN_B0);                 // Enciendo un led de indicación
                     seccionador= 9;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_B0);                  // Apago el led de indicación
                  }
               if(input(PIN_C4)==1)                       // Seccionador 10
                  {
                     output_high(PIN_B1);                 // Enciendo un led de indicación
                     seccionador= 10;                     // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_B1);                  // Apago el led de indicación
                  }
               }
/////////////////////Enciende los leds cuando los seccionadores están en "0" lógico/////////////////////

              if(input(PIN_A0)==0)                       // Seccionador 1
                  {
                     output_high(PIN_D0);                 // Enciendo un led de indicación
                     seccionador= 1;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }

               else
                  {
                     output_low(PIN_D0);                  // Apago el led de indicación
                  }
               if(input(PIN_A1)==0)                       // Seccionador 2
                  {
                     output_high(PIN_D1);                 // Enciendo un led de indicación
                     seccionador= 2;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D1);                  // Apago el led de indicación
                  }
               if(input(PIN_A2)==0)                       // Seccionador 3
                  {
                     output_high(PIN_D2);                 // Enciendo un led de indicación
                     seccionador= 3;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D2);                  // Apago el led de indicación
                  }
               if(input(PIN_A3)==0)                       // Seccionador 4
                  {
                     output_high(PIN_D3);                 // Enciendo un led de indicación
                     seccionador= 4;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D3);                  // Apago el led de indicación
                  }
               if(input(PIN_A4)==0)                       // Seccionador 5
                  {
                     output_high(PIN_D4);                 // Enciendo un led de indicación
                     seccionador= 5;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D4);                  // Apago el led de indicación
                  }
               if(input(PIN_A5)==0)                       // Seccionador 6
                  {
                     output_high(PIN_D5);                 // Enciendo un led de indicación
                     seccionador= 6;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D5);                  // Apago el led de indicación
                  }
               if(input(PIN_C0)==0)                       // Seccionador 7
                  {
                     output_high(PIN_D6);                 // Enciendo un led de indicación
                     seccionador= 7;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D6);                  // Apago el led de indicación
                  }
               if(input(PIN_C1)==0)                       // Seccionador 8
                  {
                     output_high(PIN_D7);                 // Enciendo un led de indicación
                     seccionador= 8;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_D7);                  // Apago el led de indicación
                  }
               if(input(PIN_C2)==0)                       // Seccionador 9
                  {
                     output_high(PIN_B0);                 // Enciendo un led de indicación
                     seccionador= 9;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_B0);                  // Apago el led de indicación
                  }
               if(input(PIN_C4)==0)                       // Seccionador 10
                  {
                     output_high(PIN_B1);                 // Enciendo un led de indicación
                     seccionador= 10;                      // Asigno el número del seccionador encendido
                     index++;
                     write_EEPROM(index,seccionador);     // Escribo el seccionador encendido
                  }
                else
                  {
                     output_low(PIN_B1);                  // Apago el led de indicación
                  }
                  delay_ms(3000);
                 for(j=1;j<=index;j++)
                 { datos= read_EEPROM(j);
                   printf("%d",datos);
                   delay_ms(5000);
                 }
            }
}

Atte: Enigma... La llanerita de Guayana :D
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 04 de Junio de 2009, 23:10:05
Rayos no entiendo!!!!  ayyyyy pinche memoria interna!!!!!!!! :x  :x  :x  :x  :x  :x  :x  :x  :x

Atte: Enigma... La llanerita de Guayana :x
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 05 de Junio de 2009, 00:41:30
Bueno hice otro intento de escribir y leer en la memoria interna: Este si muestra algo en el hyperterminal... pero siempre me muestra un 1, siempre.... Será que en realidad estoy escribiendo y leyendo en la memoria, o solo estaré imprimiendo el dato así nada más.... Pero si solo estuviera imprimiendo, porque entonces no incrementa al contador "dato", y en vez de eso mustra puros 1.... Miren el programa... Ay Dios ayudenme!!  :?

#include <18f4550.h>
#fuses NOPROTECT,NOCPD,NOLVP,WDT64,XT,NOMCLR
#use fast_io (A)
#use fast_io (B)
#use fast_io (C)
#use fast_io (D)
#use delay(clock=4000000)                               // El micro trabaja a una frecuencia de 4Mhz (1us por cada instrucción)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)          // Habilita las funciones RS232, velocidad a 9600 baudios

//::::::::::::::::::::::::::Declaración de variables:::::::::::::::::::::::::::::::::::::
float valorc;
int puntero=0,index,dato;
int8 i;


void main(void)
{
while(true)
{
               dato++;
               if(puntero>250)                         // Si el puntero (indicador) pasa de 250 posiciones de memoria, no sigo escribiendo (reescribo)
                   {
                      puntero=0;                        // Si llega a 250 pues reseteo al puntero y reescribo la memoria
                   }

                for(i = 1; i < puntero; ++i)                  // Bucle que escribe los datos en la EEPROM interna del pic
                   {
                      write_eeprom(puntero + i, *((int8 *)(&dato) + i));   // Escribo el voltaje en memoria
                   }
                puntero=puntero+1;                      // Lo incremento en 4 porque el float se toma 4 bytes en memoria por cada dato
                delay_ms(1);                           // Una demorita por si acaso


    while(index<=puntero)
       {
          for(i = 1; i <puntero; ++i)                                   // Bucle que escribe los datos en la EEPROM interna del pic
             {
                *((int8 *)(&dato) + i) = read_eeprom(index + i);   // Leo el voltaje desde la memoria
             }
          //index=index+1;                                           // Lo incremento en 4 porque el float se toma 4 bytes en memoria por cada dato
          printf("     Voltaje=  %2d V",dato);                   // Mando a mostrar el valor del voltaje en el hyperterminal
          delay_ms(1000);                                             // Una demorita por si acaso
          //output_low(PIN_A2);                                      // Apago el led de prueba


                   }
}
          }

Atte: Enigma... La llanerita de Guayana :?
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 05 de Junio de 2009, 14:48:39
Hola muchachos después de tantos intentos logreo por lo menos eso creo, leer y escribir en la memoria... Ustedes dirán pero es demasiado fácil hacer eso... pero para mi fue peluo porque primera vez que lo hago... en fin... Aquí está un programa y les voy a colocar una imagen del hyperterminal... pero tengo un detallito.... ya les explico... Primero aquí está el programa:


#include <18f4550.h>
#fuses NOPROTECT,NOCPD,NOLVP,WDT64,XT,NOMCLR
#use fast_io (B)
#use delay(clock=4000000)                               // El micro trabaja a una frecuencia de 4Mhz (1us por cada instrucción)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)          // Habilita las funciones RS232, velocidad a 9600 baudios

//::::::::::::::::::::::::::Declaración de variables:::::::::::::::::::::::::::::::::::::

int8 i=0,j=0;
int puntero=1,index,dato=0,valor;

void main(void)
{
               set_tris_b (0x00);                              // Configura puerto d como salida
while(true)
{
                dato++;
                puntero++;
               if(puntero>=20)                         // Si el puntero (indicador) pasa de 250 posiciones de memoria, no sigo escribiendo (reescribo)
                   {
                      puntero=1;                        // Si llega a 250 pues reseteo al puntero y reescribo la memoria
                   }

               //else
               //{

                output_high(PIN_B2);                      // Enciendo un led de prueba
                delay_ms(500);

                for(j = 0; j < puntero; ++j)                  // Bucle que escribe los datos en la EEPROM interna del pic
                   {
                      write_eeprom(puntero + j, *((int8 *)(&dato) +j ));   // Escribo el voltaje en memoria
                      output_low(PIN_B2);                                  // Enciendo un led de prueba
                   }
                //puntero=puntero+1;                      // Lo incremento en 4 porque el float se toma 4 bytes en memoria por cada dato
                delay_ms(1);                           // Una demorita por si acaso



//while(index<=puntero)
      // {
          for(i = 1; i <puntero; ++i)                                   // Bucle que escribe los datos en la EEPROM interna del pic
             {
                //*((int8 *)(&dato) + i) = read_eeprom(index + i);   // Leo el voltaje desde la memoria
                valor=read_eeprom(i);

             }
          //puntero=puntero+1;                                           // Lo incremento en 4 porque el float se toma 4 bytes en memoria por cada dato
   //}

          printf("     Voltaje=%d V",valor);                   // Mando a mostrar el valor del voltaje en el hyperterminal
          //delay_ms(1000);                                             // Una demorita por si acaso
          printf("\n\r ");
          printf("                    Puntero=  %d V",puntero);
           printf("\n\r ");
           printf("                                    Dato=  %d V",dato);
           printf("\n\r ");
          //output_low(PIN_A2);                                      // Apago el led de prueba


               //    }
}
          }




Ahora aquí les coloco la primera imagen del hyperterminal....

Fijense... valor es el valor que estoy sacando o más bien leyendo de la memoria; Dato es el valor que escribo en la memoria y Puntero es la variable que me desplaza al programa por las distintas posiciones de la memoria.... Muy bien..  El detalle está en que cuando leo el primer valor de la memoria, siempre me marca 19... :shock: y no se porque, ya que supuestamente la memoria empieza desde la primera dirección 0x00 hasta la 20, y de allí se tiene que devolver a 0x00... y supuestamente según yo en la primera posición estoy escribiendo a dato el cual contiene el número 1 no 19..... Ahora no entiendo porque siempre el 1er valor me marca 19....

(http://img192.imageshack.us/img192/6420/todopic.jpg)



Segunda imagen....


(http://img192.imageshack.us/img192/2488/todopic1.jpg)


Atte: Enigma... La llanerita de Guayana :lol:

Título: Señores por favor.... Resolvi un problema pero ahora tengo otro pequeñito! Help
Publicado por: Enigma en 05 de Junio de 2009, 23:28:10
Hola muchachos, les comento que logré resolver los otros problemas que expuse anteriormente..... Gracias a Dios.... Pero ahora tengo uno pequeñito, he estado toda la tarde tratandolo de resolver pero de verdad que no doy con la solución.... Por favor no sean malos y ayudenme... :(

La cuestión es la siguiente:

Tengo un programa el cual enciende un led cuando paso un contacto de un dipswitch, algo muy sencillo en realidad... Las entradas del dipswitch son 10, desde RA0 a RA6 y desde RC0 a RC4... Y por cada bit de un dipswitch se enciende un correspondiente led los cuales están ubicados en el puerto D y puerto B... Adicionalmente con un switch1 (SW1) puedo cambiar una bandera que hace que los leds se enciendan cuando el dipswitch este a 1 lógico o si el mismo este a 0 lógico... Es decir, con el SW1 en 1, los Leds encienden cuando el dipswitch en el puerto A y C está en 1 lógico; pero si SW1 está a 0, pues os Leds encienden cuando el dipswitch en el puerto A y C está en 0 lógico.... Todo bien por aquí  :lol:

Otra cosa que tiene el programa es que por cada bit del dipswitch que se encienda debe quedar registrado en memoria interna eeprom... Con el SW2, habilito para que toda la memoria se vacie sobre el hyperterminal imprimiendo los bits del dipswitch que se encendieron en un determinado tiempo...

Ahora el problema....

El problema está que todo funciona muy bien, pero a la hora de imprimir lo que se encuentra en memoria siempre se guarda en ella un solo bit del dipswitch, es decir, si tengo habilitados el bit 1,5,7,10 por ejemplo, siempre se me guarda el 10 y a los demás no les para ni pelotas... Si por ejemplo tengo habilitados el bit 1,5,7, siempre se guarda en  memoria el 7; Si por ejemplo tengo habilitados el bit 1,5, siempre se guarda en  memoria el 5... Y así sucesivamente.... Y de verdad ni entiendo porque.... POr favor ayudenme, llevo toda la tarde en esto y nada!

Por cierto hasta los momentos, la parte que guarda en memoria es la que dice:

/////////////////////Enciende los leds cuando los seccionadores están en "1" lógico/////////////////////

Pues aqui les dejo el programa y el ISIS a ver si me echan una ayudita please!!!!!

Atte: Enigma... La llanerita de Guayana :D
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 06 de Junio de 2009, 00:05:41
Ayyy Dios estoy pariendo... Berro, ya no doy para más... Por fa no me dejen morior por favor amigos!!!! :(

Atte: Enigma... La llanerita de Guayana :? :z)
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 06 de Junio de 2009, 00:24:56
Ummm si de verdad que ya estoy loca y el cerebro me está disvariando :z)  Ya se porque siempre se me repite el último número.... Umm!! estaba mostrando la variable que me da el bit del dipswitch prendido, en vez de mostrar la variable que me guarda lo leido en la memoria  :z)  Estoy loquita...

Una preguntica... Hay alguna instrucción que me permita blanquear la memoria, directamente???

Atte: Enigma... La llanerita de Guayana :z)
Título: Re: Por fa una ayudita para escribir en la memoria interna del PIC18F4550
Publicado por: Enigma en 06 de Junio de 2009, 02:07:42
Ehh bueno hasta ahora he logrado solucionar los problemitas que se me presentaron.... espero que no se me presente otro más!!! saludos! por mientras tanto!

Atte: Enigma... La llanerita de Guayana :D