CODIGO
#define LCD_DATA_PORT PORTD
#define LCD_TYPE 2
#ifndef EEPROM_SDA
#define EEPROM_SDA PIN_B6
#define EEPROM_SCL PIN_B7
#endif
#include <lcd.c>
#include <kbd.c>
#include <stdlib.h> //Para que funcione atoi, atof,...
#include <2464.c>
void get_string(char * s,int max) //Permite obtener valores del teclado
{
int len;
char c;
max--;
len=0;
c=0;
do
{
c=kbd_getc();
if ((c>= ' ')&&(c<='~')&&(c!='#'))
if (len<max)
{
s[len++]=c;
lcd_putc(c);
}
}
while (c!='#');
s[len]=0;
c=0;
}
void main()
{
int8 out,in,a,r;
char d,dir[4],dat[8];
lcd_init();
init_ext_eeprom();
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
while (true)
{
if (r==0)
{
lcd_gotoxy(3,1);
printf(lcd_putc,"PROYECTO"); //Inicio, muestra nombre y materia
lcd_gotoxy(2,2);
printf(lcd_putc,"
senaforo
");
delay_ms(3000);
printf(lcd_putc,"\f"); //Limpia pantalla
}
r=1;
if (r==1)
{
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"read 1) write 2)"); //Muestra menu de inicio
do
{
d=kbd_getc(); //Obtiene instruccion
if(d=='1')
a=1;
if(d=='2')
a=2;
}
while((d!='1')&&(d!='2')); //Mensaje de error
lcd_gotoxy(1,2);
printf(lcd_putc,"%d",a);
delay_ms(3000);
switch(a)
{
case (1): //Eleccion lectura
printf(lcd_putc,"\f"); //Limpia pantalla
lcd_gotoxy(1,1);
printf(lcd_putc,"Direccion=");
get_string(dir,4); //Obtiene direccion para leer
lcd_gotoxy(1,2);
in=read_ext_eeprom(dir); //Lectura a la memoria
printf(lcd_putc,"Dato=%u",in); //Imrime dato contenido en direccion
delay_ms(1000);
break;
case (2):
printf(lcd_putc,"\f"); //Eleccion escritura
lcd_gotoxy(1,1);
printf(lcd_putc,"Direccion=");
get_string(dir,4); //Obtiene direccion a ser escrita
lcd_gotoxy(1,2);
printf(lcd_putc,"Dato=");
get_string(dat,8); //Otiene valor de dato
out=atoi(dat);
write_ext_eeprom(dir,out); //Escritura a la memoria
delay_ms(10);
break;
}
}
}
}