المعهد التقني المتوسط الاول
اهلا وسهلا بكم في المنتدى

انضم إلى المنتدى ، فالأمر سريع وسهل

المعهد التقني المتوسط الاول
اهلا وسهلا بكم في المنتدى
المعهد التقني المتوسط الاول
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

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

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

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

مُساهمة من طرف أيمن الإبراهيم الثلاثاء فبراير 11, 2014 1:12 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 وبالتالي السطر الذي تكون جملة التكرار بالشكل التالي
-----------------------------------


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

عدد المساهمات : 63
نقاط : 7706
تاريخ التسجيل : 06/01/2014
العمر : 30
الموقع : دمشق

https://reno.syriaforums.net

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

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

- مواضيع مماثلة

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