بسم الله الرحمن الرحيم
Eng.Mannoun
نعم كلهم يبدؤن من صفر
وهذا الميكرو ينفع نعم 16f877a
الارقام من 0 الى 128 او من 0 الى 255
دى ارقام بايتت كاملة
يعنى الرقم 0 مثلا فى الذاكرة
دة رقم بايت كامل يعنى تقدر تخزن فية قيمة تصل الى 255
او تخزن فية قيمة 8 بت فى المرة الواحدة
والرقم الذى يلية 1 مثلة وهكذا
يعنى كل رقم فى الذاكرة يحتوى على بايت كامل اى يمكن حفظ 8 بت بالمكان الواحد
يعنى من 0 الى 128 هذا يحتوى على مساحة 129 بايت
ومن 0 الى 255 هذا يحتوى على مساحة 256 بايت
ارجوا ان تكون وضحت ان شاء الله
وان لم تتضح فلا مانع من السؤال
waeltealeb
فى البداية يجب معرفة انه يوجد فى كل ميكرو مساحة متروكة للمستخدم
يمكنك حفظ بعض البيانات فيها
وهذه المساحة لها نظام للكتابة عليها ولها مواضع للكتابة يجب تحديدها
مثلا فى بعض الميكروهات مواضع المساحة دى
يقع بين 0 الى 128 فيمكن حفظ بايت كامل فى كل مكان
يعنى 0 يحفظ بة بايت وال 1 يحفظ بة بايت اخر وال 2 يحفظ بايت اخر وهكذا
والبايت 8 بت ويمكن حفظ ارقام بة من 0 الى 255
ولهذا تختار مثلا اى مكان فى الذاكرة وتحفظ فية الرقم بتاعك
وهذا امر الكتابة على الذاكرة
كود:
EEPROM_Write(60, 5);
الخانة الاولى والى مكتوب فيها 60 تحفظ فيها الرقم بتاعك وممكن تحفظ متغير بردوة عادى
الخانة الثانية والى مكتوب فيها 5 دة مكان الموضع الى عايز تحفظ فية القيمة داخل الذاكرة
وهذا امر القراءة من الذاكرة
كود:
take = EEPROM_Read(5);
المتغير take هيتم حفظ فية الناتج الى تم تخزينة فى الموضع 5 فى الذاكرة
.................................................. .................................................. ..........
لنفترض اننا عندنا متغير اسمة x
وهذا المتغير نريد ان يزداد قيمتة عند الضغط على الزر متصل ب PORTA.f0
اى الطرف الاول من البورت A
وبعد ان يزيد يتم حفظة فى ذاكرة الميكرو الثابتة حتى لا يمسح عند فصل الكهرباء
ويتم الحفظ فى الموضع 5 فى الذاكرة
فهذا يتم هكذا
كود:
char x;
void main(){
TRISA=255;
while(1){
if (PORTA.f0==1){x++;EEPROM_Write(x, 5);}
}
}
كما ترى فى الخانة الاولى كتبت اسم المتغير الى عايز احفظة وهو x
وفى الخانة الثانية المكان الى عايز احفظ فية فى الذاكرة الى هو 5
.................................................. .................................................. ........
واذا ضغطنا على زر اخر متصل بالطرف PORTA.f1
اى الطرف الثانى من البورت A
يتم قراءة القيمة الى حفظناها فى الموضع 5 من الذاكرة
وحفظها فى متغير اسمة ss
فيتم ذلك هكذا
كود:
if (PORTA.f1==1){ss = EEPROM_Read(5);}
والكود كامل هكذا
كود:
char x;
char ss;
void main(){
TRISA=255;
while(1){
if (PORTA.f0==1){x++;EEPROM_Write(x, 5);}
if (PORTA.f1==1){ss = EEPROM_Read(5);}
}
}
اذا كان فى اى استفسار انا تحت امرك ان شاء الله