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

   

أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:
قديم 26-11-2016, 12:59 AM المشاركة 1   
ha حفظ و قراءة 16 بت ؟



السلام عليكم
لدي سؤال
كيف يمكن ان حفظ واقرأ 16 بت على انترنل ايبروم للميكرو ,وايضا اعمل انكريمنت و دكريمنت على القيمة دي واحفظها مجددا........
اتمنى يكون سؤال واضح
شكرا

اعلانات

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 26-11-2016, 01:48 AM المشاركة 2   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


السلام عليكم
لدي سؤال
كيف يمكن ان حفظ واقرأ 16 بت على انترنل ايبروم للميكرو ,وايضا اعمل انكريمنت و دكريمنت على القيمة دي واحفظها مجددا........
اتمنى يكون سؤال واضح
شكرا
وعليكم السلام ورحمه الله...


اولا يجب عمل تهيئة للأبروم .. من خلال الأمر دة
كود:
    eeprom_write(0,0);
  eeprom_write(1,0);
  eeprom_write(2,0);
  eeprom_write(3,0);
  eeprom_write(4,0);
  eeprom_write(5,0);
  eeprom_write(6,0);
  eeprom_write(7,0);
لاجظ تم اسناد قيمه "0 " لذاكرة الإبروم .. من عنوان " 1" الى عنوان " 7 "

وبعد ذالك يجب الغاء كود التهيئة هذا بعد عمل ترجمة للبرنامج لأول مرة ..

أو وضعة فى تعليق .. مثل
كود:
  /*eeprom_write(0,0);
  eeprom_write(1,0);
  eeprom_write(2,0);
  eeprom_write(3,0);
  eeprom_write(4,0);
  eeprom_write(5,0);
  eeprom_write(6,0);
  eeprom_write(7,0);*/

وبعد ذالك يمكنك حفظ ما تشاء فى ذواكر الإبروم من خلال هذا الكود ..
كود:
   eeprom_write(1,10)
تم اسناد رقم " 10 " الى ذاكرة الإبروم فى السطر الأول ..

وللسطر الثانى ..
كود:
  eeprom_write(2,10)
لاحظ الفرق ..


وللقرأة من ذاكرة الإبروم استخدم هذا الأمر ..
كود:
   a1 = eeprom_read(0);
      m1 = eeprom_read(1);
      e1 = eeprom_read(2);
      w1 = eeprom_read(3);
      k1 = eeprom_read(4);
لاحظ يوجد عدد من المتغيرات اسمهم "" m1 "" e1 "" w1 "" واسندنا قرأة البينات المحفوظه فى ذاكرة الإبروم الى هذة المتغيرات .. لاحظ
كود:
   m1 = eeprom_read(1);
تم اسناد قرأة البينات الموجودة فى ذاكرة الإبروم من العنوان " 1" الى المتغير " m1 "

بالتوفيق لك أخى


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 26-11-2016 الساعة 01:57 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 26-11-2016, 08:51 AM المشاركة 3   
sun


فتح الله عليك اخ عبد الله , لكن الاخ يسأل عن 16 بت اما ما شرحته ينطبق على 8 بت .

كنت اود ان الاخ يبين اى ميكرو يستعمله او اى مترجم ,
لكن بشكل عام عند تسجيل 16 بت يتم تقسيمهم الى 2 بايت علوى high واخر سفلى low , ثم يسجل العلوى اولا ثم السفلى بعده , و عند القراءة يتم دمجهم ليعطو 16بت.



احمد شهيد جواد
:: مهندس متميز ::
تاريخ التسجيل: Apr 2015
الدولة: العراق
المشاركات: 322
نشاط [ احمد شهيد جواد ]
قوة السمعة:
قديم 26-11-2016, 09:31 AM المشاركة 4   
افتراضي


السلام عليكم ....
قسم القيمة الى جزئين واحفظ كل جزء في عنوان معين من الايبروم
هكذا
كود:
   eeprom_write(0,x/100);
   eeprom_write(1,x%100);
وعند القراءه قم بجمع القيمه من جديد
هكذا

كود:
   
 m=(eeprom_read(0)*100)+eeprom_read(1);
ايضاً لاتنسى بوضع delay بين الكتابة واقراءه مدته 20ms

اما الشق الثاني من السؤال والمتضمن اعادة تحديث البيانات
يمكنك ذلك بسهولة من خلال اعادة الكتابة ع الايبروم والقراءه تبقى نفسها

هكذا

كود:
(if(sw1 is 1
}
;++x
eeprom_write(1,x);
{


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 26-11-2016, 11:50 AM المشاركة 5   
sun


السلام عليكم ....
قسم القيمة الى جزئين واحفظ كل جزء في عنوان معين من الايبروم
هكذا
كود:
   eeprom_write(0,x/100);
   eeprom_write(1,x%100);
تعديل مهم بسيط القسمة تكون على 255 , لان البايت يخزن 255 , و ليس 100 .



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