قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية avip
avip
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
المشاركات: 199
نشاط [ avip ]
قوة السمعة:0
قديم 10-02-2013, 11:49 PM المشاركة 1   
ha كيف احفظ متغير Twitter FaceBook Google+



الاخوة الكرام السلام عليكم ورحمة الله وبركاته

قمت بعمل مشروع بيه 15 متغير احتاج لعمل كود لمفتاح عند الضغط عليه يقوم بحفظهم في ذاكرة البيك حتي لو انقطعت الكهرباء ومفتاح اخر يقوم باستدعائهم من الذاكرة

ولك جزيل الشكر

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 11-02-2013, 04:13 AM المشاركة 2   
افتراضي


بعض الميكرو به ذاكرة فلاش يمكنها الإحتفاظ ببيانات عند انقطاع التيار
أو استخدام فلاش خارجى مثل 24C04 أو 24C08 الخ

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية avip
avip
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
المشاركات: 199
نشاط [ avip ]
قوة السمعة:0
قديم 11-02-2013, 08:42 PM المشاركة 3   
افتراضي


كيف يتم ذلك اخي الفاضل مع العلم اني استخدم pic16f628


الصورة الرمزية EPE.Ahmed
EPE.Ahmed
:: مهندس ::
تاريخ التسجيل: Dec 2011
الدولة: Giza-Egypt
المشاركات: 12
نشاط [ EPE.Ahmed ]
قوة السمعة:0
قديم 12-02-2013, 04:12 AM المشاركة 4   
افتراضي


كيف يتم ذلك اخي الفاضل مع العلم اني استخدم pic16f628
هذا الميكرو يوجد به ذاكرة 128 بايت من نوع EEPROM لا تفقد محتوياتها ويمكنك قرائتها وكتابتها
اذا كنت تستخدم لغة السي فستجد مكتبة خاصة بالتعامل مع هذه الذاكرة اسمها
EEPROM liberary وبها امران :
EEPROM_Read
EEPROM_Write


الصورة الرمزية avip
avip
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
المشاركات: 199
نشاط [ avip ]
قوة السمعة:0
قديم 12-02-2013, 09:48 PM المشاركة 5   
افتراضي


اخي الفاضل ممكن شرح لطريقة استخدام هذين الامرين


الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 13-02-2013, 12:41 AM المشاركة 6   
افتراضي


اخي الفاضل ممكن شرح لطريقة استخدام هذين الامرين
i = EEPROM_Read(0x00);
EEPROM_Write(0x00, i);


i المتغير المراد حفظه
(
0x00) العنوان المراد الحفظ فيه
لكل متغير غير العنوان (0x01) وهكذا حسب عدد المتغيرات

كتابت كود
EEPROM_Write(0x00, i);

اسفل الجزء الخاص بكل متغير ليحفظ اخر تغير له

ارجو ان تكون الفكره واضحه




الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 13-02-2013, 11:07 AM المشاركة 7   
افتراضي


بسم الله الرحمن الرحيم

جزاك الله كل خير يا بشمهندس احمدمعاطى على التوضيح

وهذا توضيح اخر وان شاء الله يفيدك

فى البداية يجب معرفة انه يوجد فى كل ميكرو مساحة متروكة للمستخدم
يمكنك حفظ بعض البيانات فيها

وهذه المساحة لها نظام للكتابة عليها ولها مواضع للكتابة يجب تحديدها

مثلا فى بعض الميكروهات مواضع المساحة دى

يقع بين 0 الى 128 فيمكن حفظ بايت كامل فى كل مكان
يعنى 0 يحفظ بة بايت وال 1 يحفظ بة بايت اخر وال 2 يحفظ بايت اخر وهكذا

والبايت 8 بت ويمكن حفظ ارقام بة من 0 الى 255
ولهذا تختار مثلا اى مكان فى الذاكرة وتحفظ فية الرقم بتاعك

وهذا امر الكتابة على الذاكرة
كود:
EEPROM_Write(5, 60);
الخانة الاولى والى مكتوب فيها 5 دة مكان الموضع الى عايز تحفظ فية القيمة داخل الذاكرة

الخانة الثانية والى مكتوب فيها 60 تحفظ فيها الرقم بتاعك وممكن تحفظ متغير بردوة عادى اى 60 تعنى الداتا البايت المراد حفظة

وهذا امر القراءة من الذاكرة
كود:
take = EEPROM_Read(5);
المتغير take هيتم حفظ فية الناتج الى تم تخزينة فى الموضع 5 فى الذاكرة والى فى المثال = 60
.................................................. .................................................. ..........

لنفترض اننا عندنا متغير اسمة x
وهذا المتغير نريد ان يزداد قيمتة عند الضغط على الزر متصل ب PORTA.f0
اى الطرف الاول من البورت A

وبعد ان يزيد يتم حفظة فى ذاكرة الميكرو الثابتة حتى لا يمسح عند فصل الكهرباء
ويتم الحفظ فى الموضع 5 فى الذاكرة

فهذا يتم هكذا

كود:
char x;

void main(){

TRISA=255;

while(1){

if (PORTA.f0==1){x++;EEPROM_Write(5, x);}
        
         }
}

كما ترى فى الخانة الاولى المكان الى عايز احفظ فية فى الذاكرة الى هو 5
وفى الخانة الثانية كتبت اسم المتغير الى عايز احفظة وهو x اى القيمة الداتا
.................................................. .................................................. ........

واذا ضغطنا على زر اخر متصل بالطرف 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(5, x);}
if (PORTA.f1==1){ss = EEPROM_Read(5);}
         }
}
اذا كان فى اى استفسار انا تحت امرك ان شاء الله

بالتوفيق ان شاء الله


الصورة الرمزية avip
avip
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
المشاركات: 199
نشاط [ avip ]
قوة السمعة:0
قديم 13-02-2013, 02:24 PM المشاركة 8   
افتراضي


جزاكم الله خيرا وبارك لكم
وشكرا لكم علي المساعده

جعله الله في ميزان حسناتك

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 12:05 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025