 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
27-10-2010, 12:39 AM
المشاركة 18
|
|
سادسا : البرنامج الفعلى:
البرنامج مكون من سبع تعليمات وكلها تتعامل مع بيانات على شكل بايت أو بت فيما عدا تعليمة تفرع واحدة وهذه التعليمات تم التعرف عليها.
يبدأ البرنامج بالتهيئة أو الاستهلال أو البداية أو التجهيز وتسمى initialization
فى هذا الجزء يتم ضبط وتحديد اتجاه كل خانة من خانات المنافذ التى سوف تستخدم كمخارج أو كمداخل وهذا يتطلب الوصول إلى سجلات التحكم فى المنافذ TRISA و TRISB , وحيث أنها تقع فى البنك 1 من ذاكرة RAM فمن الضرورى أولا وقبل كل شىء جعل الخانة 5 بسجل الحالة 1وهذايتم فى السطر الأول من البرنامج الفعلى باستخدام اللافتة أو العنوان start والتعليمة bsf وإمكانية استخدام الاسم status بدلا من عنوانه لأنه قد تم تعريفه .
لمعرفة أى الاطراف دخل وأيها خرج يجب الرجوع إلى الدائرةالكهربية أى جزء hardware
نفترض أن هناك زران ضاغطان متصلان بالخانة رقم 3 والخانة رقم 4 بالمنفذ A وبالتالى يجب تعريفهماعلى أنهمادخلان .
ونفترض أن الثلاث خانات المتبقيةمن المنفذ A متصلة بدايودات مشعة , فيجب تعريفها على أنها مخارج.
ونفترض أن المنفذ B كله متصل بدايودات مشعة أو بسفن سجمنت .
وللتذكرة لجعل طرف من المنفذ مخرج نضع 0 فى مكانه فى سجل التحكم فى المنفذ TRIS ولجعل طرف مدخل نضع مكان خانته 1 . لذلك يجب إرسال الكلمة 00011000 إلى السجل TRISA
ملحوظة هامة :
السجل TRISA هو موقع فى الذاكرة ذات 8-bit على الرغم من أن المنفذ Port A به 5خانات فقط فهما مختلفان.
لذلك فمن الضرورى تحديد ال8 خانات بالكامل ككلمة واحدة لأرسالها وحتى الخانات الغير مطلوبة .
نظرا لأنه لاتوجد تعليمة تسمح لنا بنقل بايت من البيانات مباشرة من البرنامج الى موقع فى الذاكرة لذلك يجب استخدام سطرين من الشفرة أو الكود .
أولا توضع الكلمة المطلوبة 00011000 فى السجل W باستخدام التعليمة movlw ونفعل ذلك مستخدمين الأساس الثنائى فى الأرقام بدلا من الأساس السداسى عشر وهو الوضع الافتراضى لتكون الصورة أوضح .
ثم نقل أو نسخ محتويات السجل W إلى السجل trisa باستخدام التعليمة movwf
ونفس الطريقة تتبع لضبط المنفذ B وكله مخارج لذلك فان الكلمة المرسلة إلىtrisb هى 00h
قسم الإعداد أو البدء يجب أن ينتهى باختيار البنك0 باستخدام سجل الحالة .
ومنذ هذه اللحظةنتعامل مع المنافذ نفسها لأنها هى الموجودة بالبنك 0 .
ملحوظة هامة :
كل الاجزاء السابقة تتكررفى معظم البرامج ولذلك يجب معرفتها جيدا .
نصل إلى الجزء النهائى وهو البرنامج الفعلى نفسه وهو خمس سطور فقط !
البرنامج باستمرار يقرأ قيمةالمنفذ A وينقلها أو يترجمها إلى المنفذB
فإذا ضغطنا على كلا الزران يظهر ذلك على الدايودات المشعة المتصلة بالخانة 3 والخانة 4 للمنفذB
للطبيعة الخاصة للمنفذ A فى hardware يلزم أولا مسح أو تصفير جميع خانات المنفذA فى البرنامج باستخدام التعليمة clrf
الانتقال الفعلى للبيانات فى البرنامج يتم باستخدام التعليمة movf لإزاحة قيمة المنفذA إلى السجلW يتبعها (يليها) التعليمة movwf لنقل قيمة السجل W إلى المنفذB
التعليمة goto تنشأ (تقوم بعمل) حلقة loop مستمرة باستخدام اللافتة أو العنوان المعرف سابقاباسم loop
ملاحظة هامة :
يجدر بنا أن نلاحظ أن قيم العناوين أواللافتات label تعين بطريقتان .
بعضها مثل porta و portb تعين بقيمة محددةبمعرفة المبرمج باستخدام الموجه equ , والأخرى مثل loop توضع فى البرنامج ويتعرف عليها الأسمبلر ويتعامل معها .
البرنامج ينتهى بموجه لغة الاسمبلى end
ويصبح الشكل النهائى كما يلى
القادم إن شاء الله
جزء HARDWARE للمثال
التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 27-10-2010 الساعة 12:48 AM
|