 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
29-04-2014, 03:50 AM
المشاركة 17
|
|
الجزء الرابع :
كود:
;===========
; Subroutines:
Init clrf porta ; resets input/output ports
clrf portb
(clrf portc)
movlw b’xxxx’ ; sets up which pins are inputs and which
tris porta ; are outputs
movlw b’xxxxxxxx’
tris portb
(movlw b’xxxxxxxx’
tris portc)
retlw 0
;=============
هذا الجزء من القالب يحتوى على "الروتينات الفرعية" subroutines . وهى معقدة جدا وسيتم مناقشتها فى مرحلة لاحقة ، كل ما تحتاج أن تعرفه فى هذه اللحظة هو أن القسم المسمى (المعنون) "التهيئة" Init هو روتين فرعى ، ويتم الوصول إليه باستخدام تعليمة "الاستدعاء" call . يجب استخدام الروتين الفرعى Init لتهيئة كل ما يخص الميكروكونترولر PIC . مع شرائح الميكروكونترولر PIC16F5x ، فإن هذا ينطوى أساسا على اختيار أى أطراف الميكروكونترولر PIC يقوم بالعمل كمداخل inputs ، وأيها يقوم بالعمل كمخارج outputs . فى حالات أخرى مع أنواع PIC الأكثر تعقيدا ، سوف يتطلب تهيئة أكثر . لاحظ أن هذه التهيئة تم وضعها فى الروتين الفرعى Init فقط لجعله خارج طريق الجسم الرئيسى للبرنامج وبالتالى جعله أكثر إتقانا وأكثر سهولة فى القراءة .
• فى البداية يتم استخدام التعليمة :
هذه التعليمة "تمسح" clear ( تجعل بأصفار) العدد الموجود فى سجل ملف . يتم استخدام هذه التعليمة فى بداية الروتين الفرعى للتهيئة للتأكد من أن المنافذ يتم إعادة تعيينها reset عند بداية البرنامج .
• التعليمة الثانية :
هذه التعليمة تحرك (تنقل) "حرفى" literal ( العدد الذى يلى التعليمة ) ، وهو فى الحالة الأولى b’xxxx’ ) إلى "السجل العامل" .
• بعد ذلك تأتى التعليمة : tris لتأخذ العدد الموجود بالسجل العامل وتستخدمه لتحديد أى بتات المنفذ تعمل كمداخل وأيها يعمل كمخارج . الواحد "1" الثنائى سوف يناظر المدخل والصفر "0" الثنائى يناظر الخرج . الأطراف التى لا تستخدم من الأفضل أن تجعلها مخارج .
مثال :
باستخدام PIC16F54 ، وتوصيل الأطراف RA0, RA1,RA3 إلى مفاتيح ضاغطة ، وتوصيل شاشة سفن سيجمنت إلى الأطراف RB0 إلى RB6 ، وتوصيل الأطراف RA2 و RB7 إلى أجهزة تنبيه buzzers . ما الذى يجب أن تكتب لتحديد أطراف الدخل / الخرج بشكل صحيح ؟
كود:
movlw b’1011’
tris porta
movlw b’00000000’
tris portb
retlw 0
يوجد ملاحظتان :
أولا : ليس هناك مواصفات للمنفذ Port C ( وهذا طبيعى لأن PIC16F54 لا يملك هذا المنفذ ) .
ثانيا : تذكير بأن ترقيم البت يذهب من اليمين إلى اليسار .
تمرين :
باستخدام PIC16F57 ، وتوصيل الأطراف RA1 و RA2 لتشغيل ليدات ، وتوصيل الأطراف RA0 و RA3 بحساسات لدرجة الحرارة ؟، والأطراف من RB0 إلى RB6 تتحكم فى شريحة منفصلة ، والطرف RB7 متصل بمفتاح ضاغط . والأطراف من RC1 إلى RC5 تحمل إشارات إلى الميكروكونترولر PIC من الكمبيوتر ، وباقى الأطراف الأخرى غير متصلة . ما الذى يجب أن تكتب فى قسم التهيئة Init من البرنامج ؟
يتم وضع التعليمة retlw فى نهاية الروتين الفرعى ، عادة مع صفر "0" بعدها .
|