EEPROM

Este programa puede escribir y leer registros en la memoria EEPROM. Los datos serán ingresados mediante el teclado, donde la tecla de # se encarga de escribir el dato en el registro, y la tecla * se encarga de la lectura del dato que haya en el registro ingresado.
  • Código:
#include <clase10.h>
#include <KBD.C>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c>
#include <string.h>
#include <stdlib.h>
int tecla, i,dato[4],dir[4];
char a[1],b[1],c[1];
void main()
{
   kbd_init();
   lcd_init();
   lcd_gotoxy(1,1);
   lcd_putc("Susana Lopez");
   lcd_gotoxy(1,2);
   lcd_putc("A="); //numero de registro
   lcd_gotoxy(8,2);
   lcd_putc("D=");   //dato que esta en el registro
   tecla='\0';
   //prueba
   //dir[3]=125;
   //dato[3]=0x18;
  
   while(TRUE)
   {
      while(tecla=='\0')
            tecla=kbd_getc();
      if (tecla!='#' && tecla!='*')
      {for (i=0;i<=2;i++)
      {
         while(tecla=='\0')
            tecla=kbd_getc();
           
        lcd_gotoxy(i+3,2);
        lcd_putc(tecla); 
        dir[i]=tecla-48; //para que el vector sea un numero de mas de 1 cifra
        tecla='\0';
      }
     
      sprintf(a,"%d",dir[0]);
      sprintf(b,"%d",dir[1]);
      sprintf(c,"%d",dir[2]);
      strcat(a,b);
      dir[3]=atoi(a);
      /*
      lcd_gotoxy(14,2);
      printf(lcd_putc,"%d",dir[3]);*/
     
      while(tecla=='\0')
            tecla=kbd_getc();
      if (tecla!='#' && tecla!='*')
      {
      for (i=0;i<=2;i++)
      {
         while(tecla=='\0')
            tecla=kbd_getc();
           
        lcd_gotoxy(i+10,2);
        lcd_putc(tecla); 
        dato[i]=tecla-48;
       
        tecla='\0';
      }
      }}
      sprintf(a,"%d",dato[0]);
      sprintf(b,"%d",dato[1]);
      sprintf(c,"%d",dato[2]);
      strcat(a,b);
      dato[3]=atoi(a);
      /*prueba
      lcd_gotoxy(14,1);
      printf(lcd_putc,"%d",dato[3]);*/
 
     
      while(tecla=='\0')
            tecla=kbd_getc();
      if (tecla=='*')
      {
        dato[3]=read_EEPROM(dir[3]); //lee el dato especificado en dir pos 3
        lcd_gotoxy(10,2);
        printf(lcd_putc,"%3X",dato[3]); //imprime valor en hexadecimal
        tecla='\0';
      }
     
      if (tecla=='#')
      {
        dato[3]=write_EEPROM(dir[3],dato[3]); //escribe el dato en direccion indicada (direccion, dato)
        tecla='\0';
      }
     
   }
}

  • Simulación en Proteus:
  • Armado y ejecución:

“En el registro 010 se escribió el dato 052.”

No hay comentarios:

Publicar un comentario

Ultima entrada ingresada

SISTEMA DE RIEGO AUTOMÁTICO CON MÚSICA

El objetivo era hacer un programa que pueda activar una bomba de agua en la noche, y que por las mañanas reproduzca música para las plantas....