|
بعد تنفيذ البرنامج و الوصول الى goto start ماهى القيمة التى تكون موجودة فىW هل هى قيمةL أم سيكون فارغ
|
w يحمل آخر قيمة L (الموضوعة في PORTB) فلم يحدث بعد اي تغيير
|
و هل يمكن جعل البرنامج ينفذ الجدول بالتتابع أى ينفذ أوامر RTLW واحد تلو الأخر كماكنت أظن فى البداية
|
نعم يمكن ذلك:
1- تخصص سجلا في منطقة الذاكرة تسميه بما تشاء ctr مثلا ..
2- تجعله يؤدي وظيفة عداد بواسطة التعليمة INCFSZ : INCrement F, Skip if Zero داخل حلقة. عداد يعد من 0 الى n مع n = عدد اسطر جدول تعليمات Retlw
مع ادخال توقيت مناسب لك يؤدي وظيفة الحركة الدائرية
ولا تنسى ان اكبر قيمة لسجل واحد هي 255 عشري FF هيكس، لكن يمكنك اضافة عداد اخر ان شئت
3- في البرنامج الكلي تستبدل PORTA ب ctr
ويمكنك الاحتفاظ ب PORTA ووضع محتوى ctr به ..
|
وياريت لو تحدث باستفاضة عن عداد البرمج لأن وجدت الشرح عنة قليل
|
عداد البرنامج الكامل
PC او Program Counter سجل يتألف من 13 بيت .
وبما ان السجلات في البيك لا تتعدى 8 بيت فقد خصصت له ميكروشيب سجلين اثنين: احدهما ب8 بيت سمته PC Low او
PCL والثاني ب 5 بيت سمته
PCLATH او PC LATch counter High
PCLATH + PCL = PC
اغلب البرامج تحتاج فقط PCL لان محتواه من 0 الى 255 كاف لاغلب التطبيقات..
ربما مع بيك به اكثر من صفحتين مثل 16F876او 16F877 تحتاج لاستعمال
PCLATH اذا كان البرنامج يستعمل الذاكرة بشكل جد موسع..
|
ولى أستفسار أخ لماذا حتى الأن لايتم شرح برنامج MPLAB لاأقصد الأسمبلى ولاكن وجه البرنامج أستخدام المحاكة و الواجة وهكذا
|
لا بالعكس ابحث بواسطة جوجل تحت اسم مثل Mplab tuto تجد الكثير او اذهب مباشرة الى موقع Microchip ..
الا اذا كنت تقصد الشرح بالعربي ..
بعض الروابط الاجنبية:
http://wwwdsa.uqac.ca/~rbeguena/Systemes_Microprocesseurs/Version2008/Cours/MPLAB%20tutorial%20(v6.62).pdf
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=64
كلمة اخيرة .. الاسمبلي جيد ومفيد ما في ذلك شك.. لكنه يحتاج الى نفس طويل وتفرغ..
من اجل ذلك تحول الكثيرون الى لغات لا يحتاجون معها التدقيق في كيفية عمل سجلات الميكروكونترولر..مثل
Mikrobasic
Picbasicpro
وبعض البرامج ذات الواجهة الرسومية مثل FLOWCODE
او حتى لغة C
ارجو لك التوفيق ..