# برمجة الحاكم الدقيق (الدرس الاول من 13)



## sockets (1 سبتمبر 2006)

*بسم الله الرحمن الرحيم *​​*(1) المسجلات *​ 
*يعتبر المسجل مكان بداخل المتحكم الدقيق حيث بامكانك الكتابه عليه او القراءه منه او كلاهما , فلنعتبر المسجل كقطعه من الورق*

*التى من خلالها يمكنك الإطلاع عليها و قراءة محتوياتها او الكتابه على هذه الورقة , الصوره التاليه توضح المسجلات التى يحويها*

*المتحكم الدقيق ** PIC16F84 لا تقلق إذا كنت لا تعلم عن هذه المسجلات شيء فهذه فقط لعرض عناوين هذه المسجلات داخل *


*المتحكم الدقيق , و كما ترون فى الصوره أن خريطة المسجلات تم قسمها إلى قسمين البنك 0 و البنك 1 او المنطقة صفر وواحد*

*حيث يستخدم البنك 1 لتعريف المتحكم ايا من المنافذ نحتاجها لكى تكون خرج و اى من المنافذ من المتحكم نحتاجها لتكون دخل *

*اما البنك 0 فهو يستخدم للتعامل مع البيانات, **كمثال اذا كنا نريد ان نجعل احدى بتات المنفذ **A** عالى (خرج واحد رقمى) اذا فأولا*

*نقوم بالذهاب إلى البنك 1 لتوصيف هذا البت فى المنفذ **A** كخرج ثم نعود ثانية الى البنك 0 الخاص بالتعامل مع البيانات ثم نعطى*

*المتحكم امر بأخراج واحد بت الى هذا البت ليصبح عالى ,,,, و من اهم المسجلات التى سنقوم بالتعامل معها فى البنك 1 هى *

*STATUS , TRISA ( Tri-state register for A) , TRISB (Tri-state register for B) فالمسجل الاول يمكنا*

*من الانتقال بين المسجلات **TRISA ** و **TRISB** والمسجل **TRISA** يمكننا من تحديد اى من البتات من المنفذ ** A ** ستكون *

*خرج و ايهما سيكون دخل , و كذالك أيضا بالنذبه للمسجل **TRISB** . و المسجل **STATUS** فى البنك 0 يمكننا من الانتقال الى *

*البنك 1 . *
​*نظره اشمل على هذه المسجلات *​​ 
*1- **المسجل **STATUS ** :*


*يستخدم فى الانتقال من البنك 0 الى البنك 1 , و يمكننا القيام بذالك عن طريق جعل قيمة البت الخامس من هذا المسجل *

*STATUS ** بواحد رقمى , و يمكننا ايضا من العوده الى البنك 0 عن طريق جعل البت الخامس بصفر رقمى و للعلم *

*عنوان المسجل **STATUS ** فى البنك 0 ب **03H ** هكسا فنظام العنونه بنظام السادس عشر .*

*2- **المسجل **TRISA** و **TRISB** :*

*و هما موجودون بالعناوين **85H** و **86H ** على التوالى , لبرمجة اى بت من المنفذ **A** او المنفذ **B** ليكون دخل او *

*خرج نحن نرسل واحد او صفر رقمى لهذا المسجل مناظرة لبت المنفذ فكمثال اذا كنا نريد ان نجعل البت الثالث من *

*المنفذ **A** دخل نرسل واحد رقمى الى البت الثالث من المسجل **TRISA ** و هذا ايضا ينطبق على المنفذ **B** حيث يتم*

*خيارات التصنيف الى المسجل **TRISB ** ,,, اما اذا كنت تريد ان تجعل هذا البت كخرج فانك تقوم بإرسال صفر رقمى *

*الى البت المناظر فى **TRISA ** او **TRISB** . *


*مثال عام** : اذا كنا نريد ان نجعل **RA0 , RA3 ** و **RA4** خوارج و **RA2 ** و **RA1 ** كمدخلات سنقوم اولا كما قلنا *

*من قبل بالانتقال الى البنك 0 عن طريق **STATUS ** و ذلك بجعل البت الخامس منه واحد رقمى ثم نقوم بإرسال القيمه*

*0 0 1 1 0 ** الى المسجل **TRISA و بذلك جعلنا **البت واحد و اثنين مدخلات بأعطاء المسجل **TRISA ** و احد و و احد *

*رقمى و جعلنا البت رقم صفر و ثلاثه و اربعه كمخرجات . و ينطبق هذا ايضا على المسجل **TRISB** .*


*3- **المسجل **PORTA ** و **PORTB : *

*المسجلات **PORTA ** و **PORTB ** هما المنافذ **A** و **B** و لجعل و احد من بتات هذه الاطراف واحد رقمى او صفر رقمى *

*يجب اولا اعداده كمخرج من مسجل **TRISA** او **TRISB ثم اخراج البيانات التى تريدها الى المنفذ مع العلم ان اى نوع*

*من البيانات التى يتم إرسالها لهذان المنفذان يجب ان يمروا اولا بالمركم (**W REGISTER)* * و يعتبر هذا المركم هو *

*مسجل عام , حيث يمكنك وضع اى بيانات فيه و يمكنك أيضا جمع قيمة الموجود بالمركم لاى شىء آخر و يمكنك أيضا نقل*

*الموجود به الى اى مسجل آخر ,,, مع العلم إذا قمت باذاحة بيانات لهذا المسجل ستمسح البيانات القديمه التى كانت موجوده *

*بها .*


*مثال عام على ما تم شرحه*​ 

*1- **الكود الخاص بالتنقل من البنك 0 الى البنك 1 و ذالك كما قلنا بجعل البت الخامس من المسجل **status ** بواحد رقمى *

*حيث ان عنوان هذا المسجل **03h * 

*BSF 03H, 5*​​*BSF ** تعتبر اختصار ل**bit set f ** و معناه ** إرسال واحد رقمى الى البيت رقم 5 من العنوان **03h ** و هو المسجل **status* 

*و ذالك طبعا للانتقال للبنك 1 . الان نحن فى بنك 1 ,,,*


*2- **الكود الثانى هو تصنيف البتات , مخرجات و مدخلات فكما قلنا فى المثال اللذى شرحناه فى المسجلات*

*TRISA,TRISB** وضعنا **0 0 1 1 0 ** فى مسجل ال** TRISA **و لكن قلنا انه يجب ان يمر على المركم اولا *

*لانه لا يمكن ارساله الى المسجل **TRISA ** مباشرة و الامر هو : *


*MOVLW 00110*​ 
*و لقد قمنا بكتابه القيمه بالنظام الثنائى ** و يقصد بالامر **Move Literal To W register * *, اى قم باذاحة القيمه *

*المزكوره الى المركم . و الامر الذى سياتى بعد ذالك هو اذاحة القيمه التى اذيحت الى المركم الى **ال **TRISA** و الكود*

*هو *
*MOVWF 85H*​​*و بذالك تم تصنيف بتات المنفذ **PORTA** من حيث المدخلات و المخرجات . الان نريد ان نرجع مرة اخرى الى البنك *

*0 لانه هو الذى يتولى القيام بالعممليات و الكود هو .... *

​*BCF 03H,5*​​*والامر يعنى **Bit Clear F ** بمعنى أخلى البت الخامس من العنوان **03h ** و هو عنوان المسجل **STATUS ** و بذلك*

*قمنا بالرجوع الى البنك 0 و بأمكاننا القيام بالعمليات العاديه *


*الكود الاخير هو *
*BSF 03H,5*​*MOVLW 00110(06H)*​*MOVWF 85H*​*BCF 03H,5*​​*حتى الان انتهينا من اربعة اوامر فقط من 35 امر من طاقم اوامر المتحكم ** PIC16F84** تابع معى الدرس الثانى *

*و هو الكتابه الى المنافذ *

*ولا تبخلوا علينا بدعاء*​*لاى استفسار المراسله على ال***** *​​*Die_another_day69**************​


----------



## m_jammal (2 سبتمبر 2006)

الله يعطيك الف عافيه و ننتظر جديدك .............


----------



## الباحث1980 (10 أكتوبر 2006)

أخي الكريم .. لم أجد الصورة على الصفحة.. ممكن تضعها مرة أخرى حتى تكون عندي الصورة أوضح... 
شكرا جزيلا


----------



## Think (11 أكتوبر 2006)

يعطيك العافية أخوي بس الصور مو موجودة للتوضيح ليسهل الفهم


----------



## روند احسان (29 أبريل 2007)

ارجو المواصلة في هذه الدروس لانها مفيدة جدا 
والله يجزيكم خيرا
اخوكم روند من العراق


----------



## profshimo (30 أبريل 2007)

جزاك الله خيرا ونرجو استكمال الدروس فى أقرب وقت


----------



## Apprentice_1 (13 مايو 2007)

جزاك الله خيرا


----------



## ادور (13 يناير 2008)

مشكوررررررررررررر


----------

