Advertisements

video

Games

video

الجمعة، 4 أكتوبر 2019

كتابة البرنامج


 كتابة البرنامج :

بمجرد اكتمال مخطط الانسياب ، يجب عليك تحميل "قالب برنامج الميكروكونترولر PIC" على جهاز الكمبيوتر ( سوف نتناول ذلك قريبا) وكتابة البرنامج الخاص بك به . كل هذا يمكن القيام به ببرنامج نصوص بسيط مثل المفكرةNotepad والذى يأتى مع النوافذ (أو أى حزمة تطوير أخرى مناسبة) 
الخطوة التالية : التجميع (الترجمة) :
عندما تنتهى من كتابة البرنامج ، يكون جاهزا للترجمة . وهذا يعنى تحويل ما كتبته ( والذى يتكون فى الغالب من الكلمات) إلى سلسلة من الأعداد التى يفهمها الكمبيوتر وسوف تكون قادرة على الاستخدام للتحميل على الميكروكونترولر PIC . هذا الشكل الجديد للبرنامج يتكون فقط من الأعداد وهو يسمى الكود السداسى عشر hex code أو الملف السداسى عشر hex file ويكون له الامتداد (.hex) .
فى الأساس ، لغة الميكروكونترولر PIC "المعقدة" التى سوف تتعلمها قريبا هى هنا ببساطة لجعل كتابة البرنامج أكثر سهولة . جميع البرامج الأولية تتكون من أعداد ( بعض الأشخاص يكتب البرامج فعليا باستخدام الأعداد فقط ولكن ذلك بالتأكيد ليس من المستحسن كما أن إصلاح المشاكل يكون مثل الكابوس ) . لذلك فإن المجمع (المترجم) أو الأسمبلر ، وهو قطعة من البرمجيات تقوم بترجمة كلماتك إلى أعداد . إذا فشلت فى التعرف على أحد كلماتك فسوف تسجل خطأ (الخطأ الأكيد) . وقد تسجل تحذير للأخطاء المحتملة ( أشياء بالتأكيد غير عادية ولكن ليس بالضرورة غير صحيحة) . الشىء الآخر الذى قد تعطيه لك هو "رسالة" message ( شىء لايكون خطأ ، ولكن عند الترجمة كان غير مألوف .
لا تقلق إذا كنت مرتبكا نتيجة للغة الأسمبلى ، فكل شىء سوف يكون واضحا كلما تقدمت فى البرمجة الفعلية .
فأنت الأن يجب أن تكون على استعداد لبدء كتابة البرنامج الأول الخاص بك .....





سجلات الملف The file registers :
"
مفتاح" الميكروكونترولر PIC هو "سجلات الملف" file registers الخاصة به . إذا فهمتها تكون قد قطعت نصف الطريق . تخيل أن الميكروكونترولرPIC كأنه "خزانة ملفات" (مثل الشانون) ، به العديد من الأدراج ، كل درج يحتوى على عدد ذو 8 بت ( بايت) . هذه الأدراج هى سجلات الملف . بالإضافة إلى سجلات الملف هذه يوجد "السجل العامل" working register . هذا السجل يكون مختلف لأنه ليس جزءا من خزانة الملفات . هذا السجل ضرورى لأنه لا يمكن إلا فتح درج واحد فقط (أى سجل ملف واحد فقط) فى نفس الوقت . لذلك ، تخيل نقل عدد من أحد الأدراج إلى درج آخر . أولا ، تقوم بفتح الدرج الأول ، وأخذ العدد خارجه ثم إغلاقه ، والآن ... أين يكون العدد ؟ الإجابة تكون أنه فى "السجل العامل" ، كنوع من الجسرbridge (قنطرة عبور) بين اثنين من سجلات الملف ( فكر فيه على أنه العامل الذى يقف أمام خزانة الملفات لخدمتها) . يتم حفظ العدد مؤقتا فى السجل العامل حتى يتم فتح الدرج الثانى ، حيث يتم وضع العدد بهذا الدرج .



وكما ترى من الشكل أعلاه ، يتم تخصيص (تعيين) رقم معين لكل سجل ملف . يجب عليك استدعاء سجلات الملف بأسمائها الفعلية عند كتابة البرنامج ( لأن ذلك يكون أسهل بكثير فى المتابعة) ، ومن ثم فإن المترجم (الأسمبلر) سوف يترجم هذه الأسماء إلى أرقام مرة أخرى عند إنشاء الملف السداسى عشر .
لا تقلق بشأن أسماء ووظائف سجلات الملف هذه ، فسوف يتم مناقشتها فى وقت لاحق .
ومع ذلك ، يمكن تلخيصها فيما يلى :
السجلات "00" إلى "06" لها وظائف محددة "أغراض خاصة" .
والسجلات من "07" إلى "1F" هى سجلات "أغراض عامة" ، والتى يكون لك السيطرة الكاملة
عليها . يمكنك استخدام سجلات ملف الأغراض العامة لتخزين الأرقام ويمكن أن تعطى لها الاسم الذى تريده . وبطبيعة الحال سوف تحتاج إلى إخبار المترجم كيف يترجم الأسماء الخاصة بك إلى أرقام .
على سبيل المثال ، إذا كنت تريد استخدام سجل الملف "0C" لتخزين عدد الساعات التى مرت ، فربما كنت تريد أن تسميها باسم مثل "الساعات" Hours . لكن ، عندما يعمل المترجم خلال البرنامج الخاص بك ، فإنه لن يفهم ما قصدته بكلمة ‘Hours’ إلا إذا كنت قد أعلنته أولا . سوف تعرف كيف وأين تعلن سجلات الملف الخاصة بك قريبا ، عندما ننظر فى قالب البرنامج .
قبل ذلك ، نحتاج لمقدمة موجزة للسجلات "05" و "06" :
المنافذ ports هى الوصلات بين الميكروكونترولر PIC والعالم الخارجى ، فهى مدخلاته inputs ومخرجاته outputs . المنفذ الأول ، Port A ، لديه أربعة بتات فقط ، أى أنه يحتفظ بنبل nibble بدلا من بايت كامل ، وهو السجل الوحيد الذى يفعل ذلك . كل بت bit تقابل طرف دخل / خرج خاص ، لذلك فإن البت bit 0 بالمنفذ Port A تقابل الطرف المسمى RA0 ( الطرف 17 فى PIC16F54 والطرف 6 فى PIC16F57 كما فى الشكل أدناه (

ولذلك عندما تكتب عدد 8-bit إلى المنفذ Port A ، يتم تجاهل الأربعة بتات ذات القيمة الأعلى ، وكذلك عندما تقرأ عدد 8-bit من المنفذ Port A ، يتم قراءة الأربعة بتات ذات القيمة الأعلى كأصفار "0" .
على سبيل المثال ، دعنا نقول أن RA0, RA1, RA2 , RA3 تعمل كمداخل inputs ، وهناك مفتاح ضاغط بين كل دخل والجهد (+5 V) . إذا تم الضغط على جميع هذه المفاتيح الضاغطة ، فإن العدد العشرى "15" ( العدد الثنائى "1111") سوف يكون فى المنفذ Port A .
وعلى العكس ، إذا كانت الأطراف تعمل كمخارج وتم توصيلها جميعا إلى ليدات كما فى الشكل أدناه ، فإن تحريك (نقل) العدد "15" إلى المنفذ Port A سوف يؤدى إلى تشغيل الليدات الأربعة .



تمرين :
باعتبار الترتيب الموجود بالشكل إعلاه ، فمن أجل إنشاء أضواء متحركة (جراى) chase مكونة من أربعة ليدات ( كما بالشكل أدناه) ، يجب نقل سلسلة من الأعداد إلى المنفذ Port A واحد تلو الآخر . فما هى هذه الأعداد (مطلوب الإجابة بالثنائى والعشرى والسداسى عشر) ؟

المنفذ Port B ( والمنفذ Port C بالميكروكونترولر PIC16F57 ) هو ببساطة منفذ دخل / خرج آخر ، تماما مثل المنفذ Port A فى جميع النواحى ما عدا أن لديه 8 بتات ( أى يحفظ بايت) . المنفذ Port C بالميكروكونترولر PIC16F57 هو السجل "07" ، لذلك لاحظ أن سجلات الأغراض العامة فى هذا الجهاز تبدأ من "08" فصاعدا .


ليست هناك تعليقات:
Write Comments

Interested for our works and services?
Get more of our update !