كود تفعيل العضوية - الابلاغ عن روابط لاتعمل - صيانة التلفزيون - الحاسبة - الأعضاء المتميزين - البرامج و المخططات - بث مباشر للقنوات الفضائية - إذاعة - تردد القنوات - بحث
|
التسجيل | اجعل كافة المشاركات مقروءة |
منتدى الإلكترونيات قسم الالكترونكس لمناقشة الافكار والمعلومات المتعلقة بالهندسة الالكترونية للمبتدئين والهواة والفنيين - Electronics |
![]() |
|
أدوات الموضوع |
![]() |
#1 |
مهندس متواجد
![]() الدولة: Jeddah
المشاركات: 67
معدل تقييم المستوى: 0
|
![]() بسم الله الرحمن الرحيم طرحت قبل كم أسبوع استفتاء للأعضاء عن اهتمامهم بتعلم لغة التجميع (Assembly) ووجدت اقبال كبير على ذلك... لذا سأحاول جاهداً أن أشرحها لأحد أشهر أنواع المتحكمات (PIC16F84A) ببساطة يستطيع الكل فهمها وأرجو أن أوفق في ذلك.. كما نعلم لغة التجميع هي مجموعة أوامر (Instruction Set) تتكون من رمز عملية (Operation Code) و وجهة (Operand) وكل أمر يرمز لرقم ثنائي طويل يختلف طوله بين معالج ومعالج أو متحكم ومتحكم فيصل إلى 8 بت و 14 بت و 16 بت و 24 وحتى 32 بت في معالجات بعض الحواسب الآلية، وهذه الأرقام هي اللغة الوحيدة التي يفهمها الحاسب ويسمونها بـ (Machine Lang.) أو لغة الآلة. أما لغة التجميع فهي كما ذكرنا ترميز لكل رقم ثنائي بحروف تعني الأمر الذي ينفذه هذا الرقم، وهي موضوعة من قبل الشركة المصنعة بحيث يأتي مع المعالج أو المتحكم مجمِّع يستطيع تحويل هذه الأوامر لأرقام ست عشرية والتي بالتالي تحوَّل إلى ثنائية من قبل البرنامج المبرمِج لذلك المعالج أو المتحكم. لذلك نرى أن تعلم أساسيات لغة التجميع لأحد المعالجات تجعل من الإنسان قادر على التعامل مع لغة التجميع لأي معالج آخر مجرد اطلاعه على الـ (Data sheet) تبعه. يتكون الـ (Op Code) تبع المتحكم (PIC16F84A) من 14 رقم ثنائية (14 بت). يشكل الجزء الأول من اليسار نوع العملية (Op Code) والآخر الوجهة أو المصدر أو الإثنين معاً (Operand). الصورة التالية مأخوذة من الـ (Data Sheet) تبع هذا المتحكم: ![]() سنعرف فيما بعد كيف نتعامل مع هذه الأوامر ولكن فقط للتوضيح نرى الرقم الطويل المكون من 14 بت يحوي في بدايته من اليسار رقم يفهم من خلاله المتحكم نوع العملية مثلاً "جمع" ثم "d" وهي وجهة العملية أهي في الـ (W) أو في الـ (f) ثم مصدرها وهو رقم طويل من 7 بت يمثل رقم المسجل المصدر الذي سنجمعه على الـ "W". سنعرف ماهي الـ"f" و الـ "W" فيما بعد بس المهم انه نعرف الآن ماهية الأوامر.. بعد ما عرفنا ماهية أوامر لغة التجميع ننتقل للتعرف على هذه الأوامر واحدة واحدة بعد أن نستعرض خصائص المتحكم (PIC 16F84A) ، أولاً صورة المتحكم كما يلي: دائرة الإستخدام المعتادة كما يلي: 1- (PORTA) من "RA0" إلى "RA4" و (PORTB) من "RB0" إلى "RB7": منافذ ذات اتجاهين حيث بالإمكان أن تجعلها مداخل أو مخارج. 2- (VSS) و (VDD): يوصل إليها مصدر الطاقة حيث الموجب عند "VDD". 3- (OSC1/CLK IN) و (OSC2/CLKOUT): خاصة بضبط ساعة المتحكم ولها دائرة معتادة موضحة في الشكل أعلاه.4- (MCLR): خاصة بمسح ذاكرة المتحكم، في الإستخدام المعتاد توصل بجهد موجب مثل الـ (VDD).التعديل الأخير تم بواسطة : Blu Ray بتاريخ 23-08-2006 الساعة 05:23 PM. |
![]() |
![]() |
اعلانات |
![]() |
#2 |
مهندس متواجد
![]() الدولة: Jeddah
المشاركات: 67
معدل تقييم المستوى: 0
|
![]() قواعد البرمجة القياسية: 1- التهميش:لكتابة هامش أو شرح داخل البرنامج تضع فاصلة منقوطة (Semicolomn) والتي هي بين علامتي التنصيص ";" ثم تكتب ماتريد وسيعتبر البرنامج المجمع كل مابعد الفاصلة المنقوطة إلى آخر السطر غير ذا قيمة في البرنامج المجمَّع. مثال: ; Author : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Date : ; ; Version: ; ; Title: ; ; ; ; Description: ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2- المسجلات (Rigesters): المسجل هو عبارة عن حيز للتخزين المؤقت داخل المتحكم بالإمكان القراءة منه والكتابة عليه أثناء عمل المتحكم.الشكل التالي يوضح المسجلات الخاصة بالمتحكم تبعنا مأخوذة من الـ (Data Sheet) تبعه: أول شيء حتلاحظه هو وجود عمودين متوازيين يطلق على أحدهما (Bank 0) والآخر (Bank 1). تتحكم مسجلات (Bank 1) بإعدادات المتحكم الداخلية، فمثلاً لتحدد كون أحد منافذ (PORTA) مدخل أو مخرج تستخدم المسجل الموازي له من (Bank 1) وهو (TRISA). أما مسجلات (Bank 0) فهي تستخدم في التعامل وإجراء العمليات على بياناتها، فمثلاً إذا كان أحد منافذ (PORTA) يحمل قيمة منطقية معينة وأردت أن أختبرها فإن المسجل (PORTA) في الـ (Bank 0) هو الذي يمكنني من ذلك. |
![]() |
![]() |
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها ) | |||
|
![]() |
#3 |
مهندس متواجد
![]() الدولة: Jeddah
المشاركات: 67
معدل تقييم المستوى: 0
|
![]() لنبدأ الآن بأخذ فكرة أقرب عن المسجلات:
1- (STATUS): هذا المسجل يحوي 5 بت وهي كما يلي:بت 0 (C or Carry): تحوي هذه الخانة القيمة 1 في حالة وجود زيادة في أعلى الأعداد قيمة من ناتج العملية الحسابية الجمعية السابقة (Carry) أو 0 في حالة عدم وجود زيادة. كما تحمل القيمة 0 في حالة وجود اقتراض في أعلى الأعداد قيمة من ناتج العملية الحسابية الطرحية السابقة (Borrow) أو 1 في حالة عدم وجود قرض. وتستخدم لتحديد الزيادة أو القرض في حالة جمع أو طرح رقمين من أكثر من بت. بت 1 (DC or Digit Carry): تحوي هذه الخانة القيمة 1 في حالة وجود زيادة في أقل الأعداد قيمة من ناتج العملية الحسابية الجمعية السابقة (Carry) أو 0 في حالة عدم وجود زيادة. كما تحمل القيمة 0 في حالة وجود اقتراض في أقل الأعداد قيمة من ناتج العملية الحسابية الطرحية السابقة (Borrow) أو 1 في حالة عدم وجود قرض.وتستخدم لتعيين الزيادة أو القرض في حالة جمع أو طرح رقمين من 1 بت فقط. بت 2 (Z or Zero): تحوي هذه الخانة القيمة المنطقية "1" في حالة أن ناتج العملية الحسابية السابق يساوي صفراً أو تحمل القيمة "0" في حالة أن الناتج ليس بصفراً. بت 3 (PD or Power-down): تحوي هذه الخانة القيمة المنطقية "1" مع بداية تشغيل المتحكم أو بعد تنفيذ الأمر "CLRWDT"، أو تحمل القيمة "0" في حالة تنفيذ الأمر "SLEEP". بت 4 (TO or Time out): تحوي هذه الخانة القيمة المنطقية "1" مع بداية تشغيل المتحكم أو بعد تنفيذ الأمر "CLRWDT"، أو بعد تنفيذ الأمر "SLEEP"، وتحمل القيمة "0" في حالة انتهاء العداد (WDT) والذي سنتحدث عنه لاحقاً ويرمز لـ (Watch Dog Timer) ويستخدم في عمل (Sleep) للمتحكم بعد طول فترة انتظار. بت 5 (RP0): تستخدم هذه البت في اختيار البنك المستخدم ويمكن القراءة منها والكتابة عليها، ففي حالة "1" نكون في بنك 1 وفي حالة "0" نكون في بنك 0. 2- (Option): هذا المسجل يحوي 7 بت كلها خاصة بتزامن المتحكم مع ساعة خارجية أو مع ساعة الـ (WDT) ولا أظن أن أغلبكم سيفهم أو حتى يحتاجها ولكن سأشرحها لمن لهم اهتمام بمسائل التزامن، وهي كما يلي:بت 0-2 (PS0-PS2): قيمتها تحمل سرعة الساعة الخارجية أو ساعة (WDT) بالنسبة لسرعة ساعة المتحكم وهي كما يلي: بت 3 (PSA): يحدد نوع الساعة التي ستستخدمها للـ (TMR0) أهي (WDT) أم خارجية ففي الحالة "1" هي الأولى وفي الحالة "0" هي الثانية، حيث توصل الساعة الخارجية عند استخدامها بالمنفذ T0CKI والذي هو نفسه RA4. بت 4 (T0SE): تضعه بالقيمة المنطقية "1" إذا أردت أخذ الزيادة في الساعة TMR0 عند حصول الإنتقال من الصفر إلى الواحد ، أو بالقيمة "0" إذا أردت عند الإنتقال من الواحد إلى الصفر. بت 5 (T0CS): يحدد إذا كنت ستستخدم ساعة المتحكم الأصلية للـ (TMR0) وحينها يحمل القيمة المنطقية "0"، أو القيمة "1" في حالة استخدامك لساعة خارجية. أما بت 6 و 7 فهي لا تحتاج للشرح كما يلي: إلى الآن لم نناقش مجموعة الأوامر، سنكمل في الدرس القادم إنشاء الله مصفوفة المسجلات ثم نبدأ بالأوامر وسنفهم انشاء الله الماهية الحقيقية للمسجلات عند تطبيق الأوامر كل ما أطلبه منك الآن هو حفظ ما سبق وتخزينه في مخك وستعي فائدته مؤخراً وإلى اللقاء في الدرس القادم إنشاء الله.. |
![]() |
![]() |
![]() |
#4 |
موقوف
المشاركات: 124
معدل تقييم المستوى: 0
|
![]() شكراً أخي وجزاك الله عنا كل خير
واصل وتابع والله يوفقك يا رب |
![]() |
![]() |
![]() |
العلامات المرجعية |
أدوات الموضوع | |
|
|