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

   

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



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

اةةةةة بيسيك MikroBasic ههههههههه وانا عمال اقول اية MikroB دى هههههه

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

بالنسبة لسؤال يا اخ محمد

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

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

انت دائما تبدء من الخانة 0

فى بعض الميكروهات تبدء من 0 الى 128 وفى اخرى من 0 الى 255

وفى البعض الاخر ارقام اكبر من ذلك بكثير
ههههههههههههههههههههههه اه Mikrobasic :P :P
يعني اخوي ال 16f877a او اي نوع pic كلهم ببلشو من 0
وزائد لو بدي أخزن رقم فقط بحتاج ل Bit واحد يعني لو بلشت من 19 الرقم فقط بتخزن ب 19 ولا بتخزن على 19 و 20 و الخ ؟

اعلانات

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


مش فاهم حاجه ..يا ريت لو فى توضيح اكثر واين بالضبط تكتب هذه الأوامر اذا كان هناك الجمله الشرطيه if

انا ايضا محتاج هذا الكود ..بارك الله فيكم

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

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


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

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);}
         }
}
اذا كان فى اى استفسار انا تحت امرك ان شاء الله


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 09-09-2012, 11:12 AM المشاركة 12   
افتراضي


شرح ممتاز و رائع و معلومات جدا قيمة ...


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


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

الله يكرمك يا رب يا بشمهندس حيدر شكرا جزيلا لك


hunter27
:: مهندس جيد ::
تاريخ التسجيل: Jul 2012
الدولة: المغرب
المشاركات: 284
نشاط [ hunter27 ]
قوة السمعة:
قديم 09-09-2012, 04:59 PM المشاركة 14   
افتراضي


شرح رائع و مفصل شكرا لك يا استاذنا
لدي سؤال
هل نستطيع ان نخزن رقم اكبر من 255
اذا كان ممكن كيف يتم ذلك


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


الأخ funky 112233 بجد انا مش عارف اقولك ايه ،، انت فعلا رجل رائع بارك الله فيك شرح ممتاز و جميل جدا جدا جدا .....

لى سؤال لو سمحت ،، هل يمكن ان اغير قيمة المتغير x فى نفس الموضع 5 .. اى عندما اضع قيمه لهذا المتغير فى البرنامج ثم اقوم بتخزينها فى الموضع 5 بعد سأضغط على بن آخر سيغير من قيمة المتغير x ، فهل يمكن ان اكتب القيمه الجديده فى نفس الموضع 5 ؟ وهكذا


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


سؤال آخر معلش ،، و كيف يمكن التحقق من ثبوت قيمة المتغير داخل الأبروم على برنامج بروتس ؟؟ هل عندما اضغط stop ثم play يبقى انا كده عملت ريستات ولا على بروتس الوضع مختلف ؟ لأنى جربت stop ثم play مره اخرى فوجدته لا يقرأ القيمه من الأبروم .... هل انا برمجت خطأ ام ماذا ؟



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