سلام
شما چرا برای دسترسی به حافظه eeprom از حافظه اصلی خودتون استفاده نمی کنید ؟
منظورم اینه که نیازی به بار کردن کدی تو حافظه eeprom نیست .
براحتی می تونید با استفاده از تعریف متغییر هایی که با استفاده از دستور eeprom char این کار رو انجام بدین .
روند کار خیلی آسونتر از اونی هست که شما فکرش رو می کنید . !
مراحل به صورت زیر هستش :
1-تعریف متغییر در حافظه eeprom
2- ذخیره کردن دیتای وردی در متغییر تعریف شده در حافظه eeprom
3- همین !
مثالش هم به صورت زیر میشه :
کد:
#include <mega64.h>
#include <mem.h>
eeprom char x;
void write_eeprom(unsigned char y)
{
x=y;
}
void main(void)
{
int i;
i=25;
write_eeprom(i);
}
تو این مثال روند خیلی ساده هستش ( البته مطمئن هستم که خودتون متوجه شدین) مقدار متغییر i در متغییر y ذخیره شده و ادامه این مقدار در حافظه eeprom (متغییر x) ذخیره میشه .
فقط یه بار اول کاری حافظه eeprom رو پاکش کنید و بزارید سیستم کار خودش رو انجام بده که نهایتاً نتیجه این میشه که هر نوع مقداری رو به متغییر i بدین در متغییر x واقع در لوکیشن eeprom ذخیره میشه .
می تونید براحتی دیتای i رو از محیط بیرون (از طریق یکی از اینترفیس ها) به میکرو بدین .
برنامه ای که شما نوشتین در بحث لایبری های دینامیک خروجی از حافظه eeprom کاربرد داره . یکی از کاربردهاش هم درایور نویسی lcd های خاص هستش(که البته الان فکر نکنم دیگه کسی از این شیوه استفاده کنه) .
موفق باشید .