Como grabar en la eeprom de un atmega8 en bascom

muchas gracias por su colaboracion ya me doy por rendido este proyecto esta muy complejo lo intente de todas las formas la arme en pcb y nada, muchas gracias por toda su colaboracion y no les quito mas de su valioso tiempo :abrazo:

Pero darse por vencido no soluciona las cosas, tenés que darle para adelante. Hiciste el circuito que te aparece en el link que te deje más arriba ?
 
pero que mas hago jonathan si ya llevo mas de 8 meses intentado hacer este proyecto y no eh podido eh hecho todas clases de pcb haciendo pruebas en la protoboard, la mayoria vienen para el pic 16f876 o 16f876a como en el caso del link que me pasaste pero en mi ciudad no se encuentra ese pic entonces lo hago con el pic 16f877a . lo intente en lenguaje c y en lenguaje asm cambiandole la directiva include 16f876 por el include 16f877a pero entonces presento problemas con el teclado pedi en el foro opiniones de que cual es el error que estoy cometiendo si al compilar con el 16f876 funciona y al hacerle con el 16f877a me muestra error yo entiendo que ustedes andan ocupados con su trabajos por eso motivo no les quito mas tiempo y darle gracias por que fue el unico que estubo atento a mis preguntas pero lastimosamente no se logro una solucion de antemano muchas gracias por todo jonathan
 
alli te lo pongo la posible solucion donde has puesto una llave cerrada de mas en la progamacion ccs opero igual non corre bien el programa y si lo corriges publicalo.se ve interesante



el problema que tengo es el siguiente :

Código:
#include <16f877a.h>
#fuses hs,nowdt
#use delay(clock=11059200)
#include <lcd.c>
#define use_portb_kbd TRUE
#include <kbd.c>
#rom 0x2100={'1','2','3','4'}
void main()
 {
     int i;
     char tecla=0;
     char datos[4],clave[4];
     lcd_init();
     kbd_init();
     port_b_pullups(true);
ciclo:
     for(i=0;i<=4;i++) clave[i]=read_eeprom(i);
     tecla=0;
  
     while(tecla==0) tecla=kbd_getc();
    
         lcd_putc("\fINTRODUCIR CLAVE\n");
         tecla=0;
         for(i=0;i<4;i++)
         {
            while(tecla==0) tecla=kbd_getc();
            delay_ms(150);
            datos[i]=tecla;
            lcd_putc(" *");
            tecla=0;
         }
          if (tecla=='#')
         if((datos[0]==clave[0])&&(datos[1]==clave[1])&&(datos[2]==clave[2])&&(datos[3]==clave[3]))
         {
            lcd_putc("\fPUERTA ABIERTA");
            output_high(pin_a0);
            delay_ms(3000);
            output_low(pin_a0);
         }
         else
         {
            lcd_putc("\fCLAVE ERRONEA");
            delay_ms(3000);
         }
         goto ciclo;

    ///// } [COLOR="esta llave de mas es el problema [/COLOR]   
  
           if (tecla=='*')  [COLOR="Red"]desde aqui me salen los 100 errores [/COLOR]:cry:
     
  {
         lcd_putc("\f CLAVE  ACTUAL\n");
         tecla=0;
         for(i=0;i<4;i++)
         {
            while(tecla==0) tecla=kbd_getc();
            delay_ms(150);
            datos[i]=tecla;
            lcd_putc("*");
            tecla=0;
         }
         if((datos[0]==clave[0])&&(datos[1]==clave[1])&&(datos[2]==clave[2])&&(datos[3]==clave[3]))
         {
            lcd_putc("\fNUEVA CLAVE\n");
            for(i=0;i<4;i++)
            {
            while(tecla==0) tecla=kbd_getc();
            delay_ms(150);
            write_eeprom(i,tecla);
            lcd_putc("*");
            tecla=0;
            }
            lcd_putc("\fCLAVE MODIFICADA\n");
            delay_ms(1000);
         }
         else
         {
            lcd_putc("\fCLAVE ERRONEA");
            delay_ms(3000);
         }
     }
     goto ciclo;
 }
de antemano muchas gracias por tu colaboracion un saludo :apreton:[/QUOTE]
 
Atrás
Arriba