Advanced Search

عرض المشاركات

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


مواضيع - dark_eng

صفحات: [1]
1
تحكم و حاسبات / درس فى برمجة PIC16F84A مع الشرح
« في: سبتمبر 12, 2008, 05:56:27 مساءاً »
بسم الله الرحمن الرحيم

السلام  عليكم

سأقوم بوضع برنامج لجعل البن الاول فى البورت A يضئ مع شرح الاوامر
CODE

1.   processor    p=16F84a

2.   include "P16F84A.INC" #

3.   ORG H'0'
4.   GOTO MAIN
5.   ORG H'04'
6.   GOTO MAIN

7.   MAIN
8.   BSF H'03' , 5
9.   MOVLW H'00'
10.   MOVWF H'85'
11.   BCF H'03' , 5
12.   MOVLW H'01'
13.   MOVWF  H'05'
14.   GOTO MAIN
15.   END


شرح البرنامج
السطر الاول لتعريف المترجم باننا نستخد المعالج  PIC16F84A
2 - الملف  pic16f84a.inc يحتوى على قائمة بعنواين البورتات والسجلات داخل المعالج لهذا يمكننا بدل كتابة عنوان مسجل الحالة status والذى هو H'03' بامكاننا كتابه كلمة STATUS بدلا عنه ويقوم المترجم بتضمين العنوان الموازى للكلمة اثناء الترجمة شرط كتابتها بالاحرف الكبيرة وان يكون للكلمة عنوان موازى فى الملف pic16f84a.inc
3- هذا الامر ليعرف المعالج العنوان الذى سيبدأ منه فى حاله حدوث تصفير للمعالج اى  RESET
4-ليرسله الى العنوان MAIN بعد عملية التصفير
5- هذا الامر  ليعرف المعالج العنوان الذى سيعود منه فى حاله حدوث مقاطعة اثناء تنفيذ البرنامج
6-ليرسله الى العنوان MAIN بعد اكتمال دورة المقاطعة
8- جعل البت الخامس مساويا للواحد اى SET  ...هذا البت المسؤول عن اختيار البنك داخل المعالج .. وبما اننا نريد الوصول الى المسجل  TRISA الموجود فى البنك 1 .. علينا وضع القيمة 1 فى البت الخامس لمسجل الحالة STATUSوعنوانه  H03
9- بعد الانتقال الى البنك 1 الموجود فيه المسجل   TRISAالمسؤول عن تحديد اى سن فى البورت A المكون من خمس اسنان يكون للدخل واى سن يكون خرج وذلك بوضع 0 مقابل السن المراد ان تكون خرج و1 مقابل السن المراد ان تكون للدخل
مثلا لو قلنا اننا نريد ان نجعل السن الاول دخل والباقى خرج علينا كتابة القيمة  'b'00001
,لاننا نريد ان يكون البورت كله للخرج وضعنا   'b'00000 والتى تساوى  'h'0 بالهكسا.
وبما انه لا يمكننا وضع القيم مباشرتا فى البورت نستخدم الوسيط وهو مسج ل العمل w
10- بعد وضع القيمة فى المسجلW تم نقلها TRISAالى والذى عنوانه 'H'85
11- لوضع اى قيمة فى البورت علينا العودة مجددا الى البنك 0 لان البورتات موجودة فى هذا البنك ,
فقمنا بتصفير البت الخامس من مسجل الحالة مجداا.
12- نستخدم الوسيط المسجل W لوضع القيمة المراد اخراجها على البورتA فى هذا المسجل.
13 - ننقل قيمة الخرج من المسجل W والذى يسمى مسجل العمل الى البورت A
وعند توصيل الدائرة نلاحظ وتوصيل LED الى السن الاول فى البورت نلاحظ ان اللد يضئ .
وان شاء الله ان جاهز لاى استفسار

وانتظروا المزيد وادعو لى و التوفيق
وصلى الله على سيدنا محمد

صفحات: [1]