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

   

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 664
نشاط [ funky112233 ]
قوة السمعة:
قديم 10-09-2012, 01:29 AM المشاركة 17   
افتراضي



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

اخى hunter27

نعم يمكن تخزين عدد اكبر ولكن يجب تقسيمة الاول
الى بايتات اى كل جزء لا يزيد عن 255

واذا احتجت الى حفظ قيم اكبر من 255 فى المرة الواحدة دون تقسيم
فعندها سوف تستخدم ميكروهات من العائلة PIC18f
فهذه العائلة تسمح بحفظ قيم اكبر من 255 فى المرة الواحدة

اخى waeltealeb

شكرا جزيلا لك على كلامك لى

بالنسبة لسؤالك عن تخزين ارقام جديدة فى نفس الموضع

بالطبع نعم اذا كنت خزنت قيمة فى الموضع 4 مثلا
وحدث بعد ذلك تغير فى القيمة الى انت بتحفظها
وقمت بحفظ القيمة الجديدة فى نفس الموضوع والى هو 4
هيتم مسح القيمة القديمة ويتم حفظ الجيددة لا مشكلة

اما بالنسبة للتجربة على البروتوس
فابلطبع لن يعمل
لان لو اشتغل زى الحقيقة دة معناه انوا هيعدل فى الهكس بتاعك وفى الكود
ودة مينفعش طبعا
فعلشان كدة هو مبيشتغلش
وكمان انت لما بتفل البروتوس انت كدة خليتة يبدء من جديد تمام
كانك لسة مشغلوة خالص ولا فى اى تعديل

واى استفسار اخر انا تحت امرك ان شاء الله

اعلانات

waeltealeb
:: مهندس متميز ::
تاريخ التسجيل: Jul 2007
المشاركات: 360
نشاط [ waeltealeb ]
قوة السمعة:
قديم 10-09-2012, 01:58 AM المشاركة 18   
افتراضي


الف شكر .. تماما كما توقعت .. جزاك الله خيرا

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

wanted
:: مهندس ::
تاريخ التسجيل: Nov 2010
المشاركات: 15
نشاط [ wanted ]
قوة السمعة:
قديم 10-09-2012, 03:43 PM المشاركة 19   
افتراضي


dear friends how are you
me too i was asked here about storage the data on eeprom of pic 16f877
i wan to know how to storage int value not char
because i have this number i want to storage on eeprom 56452

thanks


almoflehy
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
الدولة: YEMEN
المشاركات: 252
نشاط [ almoflehy ]
قوة السمعة:
قديم 10-09-2012, 07:30 PM المشاركة 20   
افتراضي


اما بالنسبة للتجربة على البروتوس
فابلطبع لن يعمل
لان لو اشتغل زى الحقيقة دة معناه انوا هيعدل فى الهكس بتاعك وفى الكود
ودة مينفعش طبعا
فعلشان كدة هو مبيشتغلش
وكمان انت لما بتفل البروتوس انت كدة خليتة يبدء من جديد تمام
كانك لسة مشغلوة خالص ولا فى اى تعديل

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


dear friends how are you
me too i was asked here about storage the data on eeprom of pic 16f877
i wan to know how to storage int value not char
because i have this number i want to storage on eeprom 56452

thanks
نفس الطريقة لحفظ char او int مافي اي فرق
ولكي تحفظ الرقم 56452 يجب تجزيئه لانه رقم اكبر من 255
وفي طريقة اقوم بها وهي تجزئة الرقم كل على حدى
مثلا الرقم 56452 اقوم بتجزئته ويكون هكذا
5 و 6 و 4 و 5 و 2
واقوم بحفظ كل رقم على حدى
ومن ثم اقوم بتجميعهم مرة اخرى


Eng.Mannoun
:: مهندس ::
تاريخ التسجيل: Aug 2012
المشاركات: 23
نشاط [ Eng.Mannoun ]
قوة السمعة:
قديم 11-09-2012, 05:19 PM المشاركة 21   
افتراضي


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

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);}
         }
}
اذا كان فى اى استفسار انا تحت امرك ان شاء الله
شرح رااااااااااااااااااااااااااااااااااااااااااااااائع أخوي وفهمت الموضوع 100% بجد
مشكوووووووووور مشكوووووور وما قصرت <3
يعني هلا بنختار مثلا الموقع 19 من الذاكرة لاننا ضامنين اننو ب الموقع 19 ما في شي مخزن بس اذا إخترنا الموقع 0 او 1 او 2 ممكن ان يكون مخزن عليه معلومات لذلك نختار موقع ذو رقم كبير صح ?


waeltealeb
:: مهندس متميز ::
تاريخ التسجيل: Jul 2007
المشاركات: 360
نشاط [ waeltealeb ]
قوة السمعة:
قديم 11-09-2012, 10:46 PM المشاركة 22   
افتراضي


السلام عليكم ،، كتبت كود و لم يتم حفظ قيمة المتغير فى الأبروم ، فما المشكله ؟ هل لازم أفعل خاصيه معينه فى اعدادات الميكروسى الخاص بالمشروع ؟
كيف ارفع الكود فى هذا الرد؟؟


التعديل الأخير تم بواسطة : waeltealeb بتاريخ 11-09-2012 الساعة 10:52 PM

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 664
نشاط [ funky112233 ]
قوة السمعة:
قديم 11-09-2012, 10:55 PM المشاركة 23   
افتراضي


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

اخى Eng.Mannoun شكرا جزيلا لك وفقك الله لما يحب ويرضى

لا يا اخى يمكنك اختيار اى موضع يقع بين 0 الى 128

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

اخى waeltealeb

اضغط ملف المشروع وقم برفعه على اى موقع للرفع
وضع لنا الرابط


waeltealeb
:: مهندس متميز ::
تاريخ التسجيل: Jul 2007
المشاركات: 360
نشاط [ waeltealeb ]
قوة السمعة:
قديم 11-09-2012, 11:15 PM المشاركة 24   
افتراضي


الأخ funky السلام عليكم ....

تفضل يا اخى رابط لمف المشروع
http://www.almlf.com/get-9-2012-alml...pka9bsik3r.rar



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