التجربة الثالثة في برمجة الماكروكنترولر
صفحة 1 من اصل 1 • شاطر
التجربة الثالثة في برمجة الماكروكنترولر
اهلا وسهلا بكم في منتدى مصر التقني
-------------------------------------------
في هذه التجربة الامر سيصبح اكثر اثارة ومتعة فالهدف من التجربة هو اضاء الليدات الموصلة بالرجول من B0 الى B7 ثم اطفاءهم ثم تكرار هذه العملية باستمرار
توصيل الدارة
لعلك استنتجت من التجربتين السابقتين ان الفرق بين اي تجربة واخرى هو توصيل الدارة والكود او البرنامج لذلك في هذه التجربة سنكتب البرنامج مباشرة والخطوات الاخرى معروفة
كتابة البرنامج
من المعلوم لديك اننا في هذه التجربة سنجعل جميع الرجول التي في PORTB والتي هي من B0 الى B7 كخرج للماكروكنترولر عن طريق استخدام TRISB وبما انهم كلهم خرج اذن سنكتب السطر التالي
الرمز:
وبما اننا سنضيء جميع الليدات ثم نغلقها الامرين التالين
الامر الاول الذي سيخرج جهد خمسة فولت على الرجل كلها PORTB=0B11111111 او PORTB=0XFF
والامر الثاني الذي سيوصل سالب البطارية PORTB=0
ولكن اذا كتبنا الامرين وراء بعض مباشرة سيتم تنفيذ الامرين بسرعة كبيرة لدرجة اننا لن نستطيع ان نرى الليدات وهب تعمل وسنجدها مغلقة دائما مع اننا كتبنا الامر الذي يشغلها
من المعلوم ان البك سينفذ الاوامر التي كتبناها امروراء امر وهيرة جدا كذا ولكن هل تعلم ان مده تنفيذ لامر صغيرة جدا حيث ستكون اقل من 5 ملي ثانية على حسب المؤقت الذي نستخدمه
لذلك عندما ينفذ الامر سيجعل الليدات تضيء سينفذ بعده مباشرة الامر الذي يليه وهو اطفاء جميع الليدات كل هذا في منتهى السرعة
فبذلك لن ترى الليدات تضيء انظر للبرنامج وتخيل الامر
[ltr]ولكن ماذا سيحث اذا غيرنا ترتيب البرنامج اي جعلنا الامر
[/ltr]
[ltr]PORTB=0 قبل PORTB=0XFF[/ltr]
[ltr]ما الذي سيحدث يا ترى ؟؟[/ltr]
[ltr]بما ان الامر الذي يطفئ جميع الليدات هو الاول اذن سينفذ البك هذا الامر اولا [/ltr]
[ltr]وبمنتهى السرعة سينفذ الامر الذي يليه وهو تشغيل اي اننا لن نرى الليدات قد اطفئت اساسا بل بمجرد توصيلنا للدارة سنجد الليدات كلها مشيئة[/ltr]
اذن ما الحل
الحل في هذه المشكلة هو ان نعطي اللبك امر يجعله ينتظر قليلا فنجعل امر الانتظار البك زمن مقداره نصف ثانية تقريبا أي (500 ملي ثانية ) سنكتب الامر التالي
الرمز:
واذا اردنا جعل زمن الانتظار يساوي ربع ثانية تقريبا سنكتب الامر التالي
الرمز:
أي اننا نكتب بين القوسين السابقين مدة الانتظار بالملي ثانية اذا سنعدل البرنامج ويصبح الشكل التالي
ملحوظة لا تكتب الامر delay_ms(500);
بحروف كبيرة
الان لنتابع ماذا سيحدث في هذا الكود سيقوم البك بتوظيف الرجول المرادة على انها خرج ثم يقوم بتشغيل الليدات ثم سينتظر ثانية ثم يطفئ الليدات .....
جميل لقد تم حل المشكلة السرعة ... ولكن انتظر هناك مشكلة أخرى وهي ان البك سيضيء الليدات ثم ينتظر ثم يطفيها مرة واحدة فقط ولن يكرر هذه العملية باستمرار اذن ما هو الحل ؟؟؟
الحل هو جعل البك ينفذ هذه الأوامر وبعد الانتهاء من تنفيذها ينفذها مرة أخرى وهكذا وكيف سنكتب الكود ؟؟؟؟اذا اردت تكرر مجموعة من الأوامر باستمرار كل ما عليك فعله هو جعل هذه الأوامر بين امرين كما بالشكل التالي
تابع معي
اذن سيكون الكود النهائي على الشكل التالي
وهكذا الكود السابق يكون هو صورة النهائية للبرنامج الذي سيشغل جميع الليدات ثم ينتظر ثم يطفئها ثم ينتظر ويكرر هذه العملية باستمرار
--------------------------------------
ملحوظة مهمة : لعلك لاحظت انني كتبت بعد السطر البرمجي PORTB=0; كتبت بعده امر الانتظار لانه في حالة عدم كتابته سيقوم البك بتشغيل الليدات ثم ينتظر ثم يطفيهم ثم يضيء من جديد بسرعة دون ان نلاحظ عملية الإطفاء .... أي اننا كل ما سنلاحظه هو ان الليدات جميعا مضيئة ولا تنطفئ
ملحوظة أخرى : يمكنك جعل العنوان باسم اخر ... فمثلا نسميه ahmd وبالتالي السطر الذي تكون جملة التكرار بالشكل التالي
-----------------------------------
الى اللقاء في دروس جديدة واتمنى ان اكون افدتكم في الشرح
_________________
بتوفيق لجميع
العلم نور
-------------------------------------------
في هذه التجربة الامر سيصبح اكثر اثارة ومتعة فالهدف من التجربة هو اضاء الليدات الموصلة بالرجول من B0 الى B7 ثم اطفاءهم ثم تكرار هذه العملية باستمرار
توصيل الدارة
لعلك استنتجت من التجربتين السابقتين ان الفرق بين اي تجربة واخرى هو توصيل الدارة والكود او البرنامج لذلك في هذه التجربة سنكتب البرنامج مباشرة والخطوات الاخرى معروفة
كتابة البرنامج
من المعلوم لديك اننا في هذه التجربة سنجعل جميع الرجول التي في PORTB والتي هي من B0 الى B7 كخرج للماكروكنترولر عن طريق استخدام TRISB وبما انهم كلهم خرج اذن سنكتب السطر التالي
الرمز:
- الكود:
TRISB0=0;
وبما اننا سنضيء جميع الليدات ثم نغلقها الامرين التالين
الامر الاول الذي سيخرج جهد خمسة فولت على الرجل كلها PORTB=0B11111111 او PORTB=0XFF
والامر الثاني الذي سيوصل سالب البطارية PORTB=0
ولكن اذا كتبنا الامرين وراء بعض مباشرة سيتم تنفيذ الامرين بسرعة كبيرة لدرجة اننا لن نستطيع ان نرى الليدات وهب تعمل وسنجدها مغلقة دائما مع اننا كتبنا الامر الذي يشغلها
من المعلوم ان البك سينفذ الاوامر التي كتبناها امروراء امر وهيرة جدا كذا ولكن هل تعلم ان مده تنفيذ لامر صغيرة جدا حيث ستكون اقل من 5 ملي ثانية على حسب المؤقت الذي نستخدمه
لذلك عندما ينفذ الامر سيجعل الليدات تضيء سينفذ بعده مباشرة الامر الذي يليه وهو اطفاء جميع الليدات كل هذا في منتهى السرعة
فبذلك لن ترى الليدات تضيء انظر للبرنامج وتخيل الامر
[ltr]ولكن ماذا سيحث اذا غيرنا ترتيب البرنامج اي جعلنا الامر
[/ltr]
[ltr]PORTB=0 قبل PORTB=0XFF[/ltr]
[ltr]ما الذي سيحدث يا ترى ؟؟[/ltr]
[ltr]بما ان الامر الذي يطفئ جميع الليدات هو الاول اذن سينفذ البك هذا الامر اولا [/ltr]
[ltr]وبمنتهى السرعة سينفذ الامر الذي يليه وهو تشغيل اي اننا لن نرى الليدات قد اطفئت اساسا بل بمجرد توصيلنا للدارة سنجد الليدات كلها مشيئة[/ltr]
اذن ما الحل
الحل في هذه المشكلة هو ان نعطي اللبك امر يجعله ينتظر قليلا فنجعل امر الانتظار البك زمن مقداره نصف ثانية تقريبا أي (500 ملي ثانية ) سنكتب الامر التالي
الرمز:
- الكود:
delay_ms(500);
واذا اردنا جعل زمن الانتظار يساوي ربع ثانية تقريبا سنكتب الامر التالي
الرمز:
- الكود:
delay_ms(250);
أي اننا نكتب بين القوسين السابقين مدة الانتظار بالملي ثانية اذا سنعدل البرنامج ويصبح الشكل التالي
ملحوظة لا تكتب الامر delay_ms(500);
بحروف كبيرة
الان لنتابع ماذا سيحدث في هذا الكود سيقوم البك بتوظيف الرجول المرادة على انها خرج ثم يقوم بتشغيل الليدات ثم سينتظر ثانية ثم يطفئ الليدات .....
جميل لقد تم حل المشكلة السرعة ... ولكن انتظر هناك مشكلة أخرى وهي ان البك سيضيء الليدات ثم ينتظر ثم يطفيها مرة واحدة فقط ولن يكرر هذه العملية باستمرار اذن ما هو الحل ؟؟؟
الحل هو جعل البك ينفذ هذه الأوامر وبعد الانتهاء من تنفيذها ينفذها مرة أخرى وهكذا وكيف سنكتب الكود ؟؟؟؟اذا اردت تكرر مجموعة من الأوامر باستمرار كل ما عليك فعله هو جعل هذه الأوامر بين امرين كما بالشكل التالي
تابع معي
اذن سيكون الكود النهائي على الشكل التالي
وهكذا الكود السابق يكون هو صورة النهائية للبرنامج الذي سيشغل جميع الليدات ثم ينتظر ثم يطفئها ثم ينتظر ويكرر هذه العملية باستمرار
--------------------------------------
ملحوظة مهمة : لعلك لاحظت انني كتبت بعد السطر البرمجي PORTB=0; كتبت بعده امر الانتظار لانه في حالة عدم كتابته سيقوم البك بتشغيل الليدات ثم ينتظر ثم يطفيهم ثم يضيء من جديد بسرعة دون ان نلاحظ عملية الإطفاء .... أي اننا كل ما سنلاحظه هو ان الليدات جميعا مضيئة ولا تنطفئ
ملحوظة أخرى : يمكنك جعل العنوان باسم اخر ... فمثلا نسميه ahmd وبالتالي السطر الذي تكون جملة التكرار بالشكل التالي
-----------------------------------
الى اللقاء في دروس جديدة واتمنى ان اكون افدتكم في الشرح
_________________
بتوفيق لجميع
العلم نور
أيمن الإبراهيم- ........
- تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة :
الجنس :
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
الخميس أبريل 25, 2024 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
الخميس أبريل 25, 2024 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft