#include <main.h>
//--------------- veri yapimiz
typedef struct
{
char c;
int16 i16;
int32 i32;
float f;
char s[16];
}TestStructTipi;
//---------------- union içinde gömülmüş veri
typedef union
{
TestStructTipi Data;
char bytes[ sizeof(TestStructTipi) ]; // Data'ya byte olarak ulasmak icin
}TestUnionTipi;
//---------------- degiskenleri tanımla
TestUnionTipi Yazilan,Okunan;
int16 i=0;
char rec;
//--------------------------------//
void main()
{
mcu_init(); // donanımları init yap
delay_ms(400);
printf("test basliyor!\n\r");
// yazilacak veri icerigini doldur
Yazilan.data.c ='T';
Yazilan.data.i16 = 65000;
Yazilan.data.i32 = 1200000;
Yazilan.data.f = 3.14;
sprintf(Yazilan.data.s,"*String veri!*");
// okunacak veri icerigini sifirla
Okunan.data.c=0;
Okunan.data.f=0;
Okunan.data.i16=0;
Okunan.data.i32=0;
Okunan.data.s[0]=0;
//------------------//
while(1)
{
printf("\n\r\n\rVerileri EE'dan oku/yaz ? (R/W)");
rec=getc();
putc(rec);
if(rec=='R')
{
i=0;
// Verileri oku
while(i<sizeof(TestStructTipi)) {
Okunan.bytes[i]= read_ext_eeprom(i);
i++;
}
//okunan verileri yaz
printf("\n\rOkunan char :%c",Okunan.Data.c);
printf("\n\rOkunan int16 :%lu",Okunan.Data.i16);
printf("\n\rOkunan int32 :%lu",Okunan.Data.i32);
printf("\n\rOkunan Float :%f",Okunan.Data.f);
Okunan.Data.s[15]=0;//Bos okumada 0xff okunur bu nedenle sfirliyoruz.
printf("\n\rOkunan String :%s",Okunan.Data.s);
}
else if(rec=='W')
{
i=0;
// Verileri yaz
while(i<sizeof(TestStructTipi)) {
write_ext_eeprom(i, Yazilan.bytes[i]);
i++;
}
//okunan verileri yaz
printf("\n\rYazilan char :%c",Yazilan.Data.c);
printf("\n\rYazilan int16 :%lu",Yazilan.Data.i16);
printf("\n\rYazilan int32 :%lu",Yazilan.Data.i32);
printf("\n\rYazilan Float :%f",Yazilan.Data.f);
printf("\n\rYazilan String :%s",Yazilan.Data.s);
}
}//while
}//main