التجربة الثالثة في برمجة الماكروكنترولر

اذهب الى الأسفل

التجربة الثالثة في برمجة الماكروكنترولر Empty التجربة الثالثة في برمجة الماكروكنترولر

مُساهمة من طرف أيمن الإبراهيم في الثلاثاء فبراير 11, 2014 10:23 pm

اهلا وسهلا بكم في منتدى مصر التقني
-------------------------------------------
في هذه التجربة الامر سيصبح اكثر اثارة ومتعة   فالهدف من التجربة هو اضاء الليدات الموصلة بالرجول من B0 الى B7 ثم اطفاءهم ثم تكرار هذه العملية باستمرار
توصيل الدارة
التجربة الثالثة في برمجة الماكروكنترولر Egy-tech13921236571
لعلك استنتجت من التجربتين السابقتين ان الفرق بين اي تجربة واخرى هو توصيل الدارة والكود او البرنامج لذلك في هذه التجربة سنكتب البرنامج مباشرة والخطوات الاخرى معروفة
كتابة البرنامج
من المعلوم لديك اننا في هذه التجربة سنجعل جميع الرجول التي في PORTB والتي هي من B0 الى B7 كخرج للماكروكنترولر عن طريق استخدام TRISB وبما انهم كلهم خرج اذن سنكتب السطر التالي


الرمز:
الكود:
TRISB0=0;



وبما اننا سنضيء جميع الليدات ثم نغلقها الامرين التالين
الامر الاول الذي سيخرج جهد خمسة فولت على الرجل كلها   PORTB=0B11111111 او PORTB=0XFF 
والامر الثاني الذي سيوصل سالب البطارية PORTB=0
ولكن اذا كتبنا الامرين وراء بعض مباشرة سيتم تنفيذ الامرين بسرعة كبيرة لدرجة اننا لن نستطيع ان نرى الليدات وهب تعمل وسنجدها مغلقة دائما مع اننا كتبنا الامر الذي يشغلها
من المعلوم ان البك سينفذ الاوامر التي كتبناها امروراء امر وهيرة جدا كذا   ولكن هل تعلم ان مده تنفيذ لامر صغيرة جدا حيث ستكون اقل من 5 ملي ثانية على حسب المؤقت الذي نستخدمه 
لذلك عندما ينفذ الامر سيجعل الليدات تضيء سينفذ بعده مباشرة الامر الذي يليه وهو اطفاء جميع الليدات كل هذا في منتهى السرعة
فبذلك لن ترى الليدات تضيء   انظر للبرنامج وتخيل الامر التجربة الثالثة في برمجة الماكروكنترولر Egy-tech13921228891

[ltr]ولكن ماذا سيحث اذا غيرنا ترتيب البرنامج اي جعلنا الامر  
[/ltr]
[ltr]PORTB=0  قبل  PORTB=0XFF[/ltr]
[ltr]ما الذي سيحدث يا ترى ؟؟[/ltr]
[ltr]بما ان الامر الذي يطفئ جميع الليدات هو الاول اذن سينفذ البك هذا الامر اولا [/ltr]
[ltr]وبمنتهى السرعة سينفذ الامر الذي يليه وهو تشغيل اي اننا لن نرى الليدات قد اطفئت اساسا بل بمجرد توصيلنا للدارة سنجد الليدات كلها مشيئة[/ltr]
اذن ما الحل
 

الحل في  هذه المشكلة هو ان نعطي اللبك امر يجعله ينتظر قليلا فنجعل امر الانتظار البك زمن مقداره نصف ثانية تقريبا أي (500 ملي ثانية ) سنكتب الامر التالي

الرمز:
الكود:
delay_ms(500);


واذا اردنا جعل زمن الانتظار يساوي ربع ثانية تقريبا سنكتب الامر التالي

الرمز:
الكود:
delay_ms(250);


أي اننا نكتب بين القوسين السابقين مدة الانتظار بالملي ثانية اذا سنعدل البرنامج ويصبح الشكل التالي
التجربة الثالثة في برمجة الماكروكنترولر Egy-tech13921538601

ملحوظة لا تكتب الامر  delay_ms(500);
بحروف كبيرة
الان لنتابع ماذا سيحدث في هذا الكود سيقوم البك بتوظيف الرجول المرادة على انها خرج ثم يقوم بتشغيل الليدات ثم سينتظر ثانية ثم يطفئ الليدات .....
جميل  لقد تم حل المشكلة السرعة  ... ولكن انتظر هناك مشكلة أخرى وهي ان البك سيضيء الليدات ثم ينتظر ثم يطفيها مرة واحدة فقط ولن يكرر هذه العملية باستمرار اذن ما هو الحل ؟؟؟
الحل هو جعل البك ينفذ هذه الأوامر وبعد الانتهاء من تنفيذها ينفذها مرة أخرى وهكذا   وكيف سنكتب الكود ؟؟؟؟اذا اردت تكرر مجموعة من الأوامر باستمرار كل ما عليك فعله هو جعل هذه الأوامر بين امرين كما  بالشكل التالي
تابع معي
التجربة الثالثة في برمجة الماكروكنترولر Egy-tech13921539631

اذن سيكون الكود النهائي على الشكل التالي التجربة الثالثة في برمجة الماكروكنترولر Egy-tech13921540631




وهكذا الكود السابق يكون هو صورة النهائية للبرنامج الذي سيشغل جميع الليدات ثم ينتظر ثم يطفئها ثم ينتظر ويكرر هذه العملية باستمرار

--------------------------------------


ملحوظة مهمة : لعلك لاحظت انني كتبت بعد السطر البرمجي PORTB=0;   كتبت بعده امر الانتظار لانه في حالة عدم كتابته سيقوم البك بتشغيل الليدات ثم ينتظر ثم يطفيهم ثم يضيء من جديد  بسرعة دون ان نلاحظ عملية الإطفاء .... أي اننا كل ما سنلاحظه هو ان الليدات جميعا مضيئة ولا تنطفئ
 
ملحوظة أخرى : يمكنك جعل العنوان باسم اخر ... فمثلا نسميه ahmd وبالتالي السطر الذي تكون جملة التكرار بالشكل التالي
-----------------------------------


الى اللقاء في دروس جديدة واتمنى ان اكون افدتكم في الشرح

_________________
بتوفيق لجميع
العلم نور
أيمن الإبراهيم
أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى