التجربة الثالثة في برمجة الماكروكنترولر
صفحة 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 وبالتالي السطر الذي تكون جملة التكرار بالشكل التالي
-----------------------------------
الى اللقاء في دروس جديدة واتمنى ان اكون افدتكم في الشرح
مواضيع مماثلة
» التجربة الثانية في برمجة الماكروكنترولر
» التجربة الرابعة في برمجة الماكروكنترولر
» اول تجربة في برمجة الماكروكنترولر
» دارات مبرمجة الماكروكنترولر
» الأشياء التي ستحتاجها لإحتراف برمجة المايكروكنترولر:-
» التجربة الرابعة في برمجة الماكروكنترولر
» اول تجربة في برمجة الماكروكنترولر
» دارات مبرمجة الماكروكنترولر
» الأشياء التي ستحتاجها لإحتراف برمجة المايكروكنترولر:-
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
الجمعة يونيو 05, 2015 4:22 am من طرف hazeem
» دارة كاميرا تصوير وارسال الصور عن طريق واي فاي
الثلاثاء أبريل 28, 2015 10:39 pm من طرف luay.alkanaan
» مقاومات Resistor
الأحد مارس 02, 2014 10:22 pm من طرف أيمن الإبراهيم
» مسجلات الازاحة Shift Register
الأحد مارس 02, 2014 9:20 pm من طرف أيمن الإبراهيم
» تمارين على تجربة الرابعة
الخميس فبراير 13, 2014 11:47 am من طرف أيمن الإبراهيم
» التجربة الرابعة في برمجة الماكروكنترولر
الأربعاء فبراير 12, 2014 10:39 pm من طرف أيمن الإبراهيم
» دارات مبرمجة الماكروكنترولر
الثلاثاء فبراير 11, 2014 10:52 pm من طرف أيمن الإبراهيم
» التجربة الثالثة في برمجة الماكروكنترولر
الثلاثاء فبراير 11, 2014 1:12 pm من طرف أيمن الإبراهيم
» ماذا تعرف عن الميكروبروسيسور microprocessor
الأحد فبراير 09, 2014 6:30 pm من طرف أيمن الإبراهيم