إنتل MCS-51

النواة The Core

سوف نقوم باستعراض محتويات قلب المعالج وهي النواة وما تحتويه من أقسام هامة في عملية معالجة المعطيات نذكر منها وحدة المعالجة المركزية ووحدة الحساب والمنطق –الذاكرة
شكل يوضح البنية العامة للمتحكم 8051.

أولاً – وحدة المعالجة المركزية CPU ووحدة الحساب والمنطق ALU

تعتبر وحدة المعالجة المركزية مسؤولة عن وضع التعليمات المخزنة في ذاكرة البرنامج قيد التنفيذ وذلك للتحكم بعمل مجمل الشريحة بما يتوافق والعملية التقنية.وإن العديد من هذه التعليمات تنفذ على محتويات ذاكرة المعطيات ونحتاج غالباً لتنفيذ هذه التعليمات إلى وحدة الحساب والمنطق ALU والتي تقوم بالإضافة إلى إنجاز العمليات الحسابية والمقارنة المنطقية بتحديث خانات الحالة الموجودة في مسجل الحالة PSW حيث أن تنفيذ العمليات الحسابية والمنطقية سيغير خانات الحالة تبعاً لنتيجة هذه التعليمات.

وحدة الحساب والمنطق ALU

يمتلك المتحكم 8051 وحدة حساب ومنطق ثمانية بت بالإضافة إلى المراكم A
المراكم : هو مسجل ثماني الخانة يستخدم في العمليات التي تنفذها وحدة الحساب والمنطق.
وظائف وحدة الحساب والمنطقALU والأعلام:
تتمكن الوحدة ALU من تنفيذ عمليات الجمع والطرح وعمليات الإزاحة والمقارنة المنطقية XOR,AND,OR.
غالباً ما تكون العمليات الرياضية والمنطقية ذات طرفين وفي بعض الأحيان ذات طرف وحيد.
تقوم الوحدة ALU بالتأثير على الأعلام OV,AC,C الموجودة في مسجل الحالة. (Program Status Word) PSW

ثانياً- ذاكرة المتحكم

مقدمة : يوجد في المتحكم قسمان أساسيان في الذاكرة هما ذاكرة البرنامج Program memory وذاكرة المعطيات data memory ولكل قسم ممر bus خاص به لذلك من الممكن الوصول إليها خلال نفس دورة التعليمة وهذا ما تعرفنا عليه في بنية هارفاردHarvard architecture
تنظيم ذاكرة البرنامج:
تتألف ذاكرة البرنامج في هذا المتحكم من 4 Kbyte داخل المتحكم ومن الممكن توسعتها حتى 64 Kbyte بإضافة ذاكرة خارج المتحكم والواقع هناك أنواع لذاكرة البرنامج فقد تكون نوع ROM وفي هذه الحالة لا نستطيع أن ندخل البرنامج إلى الشريحة بأنفسنا وإنما علينا أن نعطي برنامجنا للمصنع ليصنعوا لنا المتحكم وفي داخله البرنامج الذي قمنا بكتابته موجود على الذاكرة الداخلية ROM فهي كما نعلم تبرمج لمرة واحدة فقط لأنها قابلة للقراءة فقط.
وعملياً من الممكن الحصول على متحكم ذو ذاكرة برنامج من النوع EPROM أي قابلة للقراءة فقط وقابلة للبرمجة كهربائياً Electrical Programmable ROM ولمرة واحدة.
ومن الممكن الحصول على متحكم ذو ذاكرة برنامج من النوع EEPROM وهي ذاكرة ROM قابل للبرمجة والمحي كهربائياً Programmable ROM Electrical Erasable
وهي مفيدة جداً في عمليات اختبار عمل البرنامج فنحن عملياً نقوم بالعمل على متحكمات ذات ذاكرة EEPROM كي نتمكن من اختبار برنامجنا إن كان يحقق الغرض المطلوب منه أم لا، فهنا من الممكن أن نغير البرنامج ونعيد إرساله إلى المتحكم عبر المبرمجة المخصصة له وهكذا حتى يحقق الهدف المرجو من استخدام المتحكم.

المبرمجة

هي عبارة عن دارة إلكترونية تقوم بتمرير البرنامج الذي قمنا بكتابته لها بعد تحويله إلى الصيغة الست عشرية وعادةً يدعى ملف الهكسا Hexa File.

عداد البرنامج PC

و عبارة عن مسجل خاص مستقل عن ذاكرة المعطيات الخاصة بالمتحكم وهو ذو عرض 16bit ويعنون حجرات ذاكرة البرنامج وبما أن عرضه 16bit فهو قادر على عنونة 64 Kbyte من ذاكرة البرنامج.
وعند استخدام تعليمتي push & pop فأن هذا المسجل يخزن في المكدس...................
ما هي مراحل تخزين المكدس ؟................
و كذلك لا بد من تخزين قيمة عداد البرنامج PC عند حدوث مقاطعة كي يعرف المعالج العنوان الذي عليه العودة إليه عند انتهاء تنفيذ روتين خدمة المقاطعة.

المكدس Stack Pointer

وهو عبارة عن منطقة من ذاكرة المعطيات الداخلية في المتحكم وبالتالي فهو بعرض 8bit ويعمل حسب الآلية التي تدعى (Last In Fist out : LIFO) حيث أنه من الممكن مسك قيمة عداد البرنامج PC عند حدوث لعملية استدعاء لروتين فرعي أو روتين خدمة مقاطعة كما يمكن تخزين واستعادة المعطيات خاصةً مسجل الحالة PSW بواسطة تعليمات POP، PUSH.
وعند الحديث عن المكدس لا بد من التذكير بمؤشر المكدس Stack Pointer وهو عبارة عن مؤشر يشير إلى قمة المكدس والقيمة الافتراضية له هي 7 بعد حدوث عملية تصفير للشريحة power on reset، أي إجراء عملية push الأولى فإن القيمة تخزن بدءاً من العنوان 8 ويزداد مؤشر المكدس بمقدار1.
وكذلك أعظم قيمة يستطيع الوصول إليها هي 127 لأنه من المعلوم أن ذاكرة المعطيات بطول 128 بايت طبعاً منطقة الذاكرة التي تدعى SFR لا يمكنه الوصول إليها أبداً فهي مخصصة لوظائف خاصة ومعرفة مسبقاً من الشركة المصنعة للشريحة.
وكذلك يجب الانتباه عند التعامل مع حيز ذاكرة المعطيات GPRs والمكدس معاً كي لا نضيع المعطيات الموجودة في تلك الحجرات الذاكرية وذلك باختيار البنك المناسب (أي يجب علينا الانتباه لاختيار بنوك الذاكرة عند استخدام تعليمة push في هذه المنطقة من الذاكرة).

المسجل Data Pointer DPTR

هو عبارة عن مسجل ممكن الوصول إليه كبايتين معاً (16 bit) وهو مؤلف من قسمين DPH &DPL
ويستخدم كي يشير إلى المعطيات مع بعض التعليمات الخاصة من أجل الوصول الذاكرة الخارجية التي يمكن ربطها مع المتحكم حيث يحمل عنوان الحجرة المراد الوصول إليها في المسجل DPTR
كما يمكن أن يخزن قيمة بطول Word........ في برنامجنا إذا لم يكن نستخدم ذاكرة خارجية مربوطة مع المتحكم.

المسجل المساعد B

وهو عبارة عن مسجل وظائف خاصة يستخدم كطرف ثاني في عمليات الضرب والقسمة حيث يكون الطرف الأول هو المراكم.

المؤقتات Timers

لدينا مؤقتين في المتحكم وهما Timer0 وTimer1 :

مواصفاته

1.المؤقتات تعد بشكل تصاعدي.
2.لكل مؤقت مسجلين طول كل منها بايت واحد.

شرح أقطاب المتحكم (PIN Description)

ترتيب الأقطاب (PIN Configurations)
1.Vcc : جهد التغذية.
2.GND : الأرضي.
3.النافذة P0 :
تمتلك النافذة P0 ثمانية أقطاب ثنائية الاتجاه تستخدم كأقطاب دخل \ خرج ذات مصرف مفتوح عند استخدامها كنافذة خرج فإن كل قطب من أقطاب هذه النافذة يستطيع قيادة ثمانية مداخل TTL. تتم الكتابة على أقطاب النافذة P0 خلال الدورة الأولى، حيث تستطيع استخدام أقطاب هذه النافذة كمداخل ذات ممانعة عالية.
و يمكن ترتيب عمل هذه النافذة P0 كي تقوم بوظيفة مضاعفة كخطوط عنوان \ معطيات سفلية خلال الولوج لذاكرة البرنامج الخارجية وذاكرة المعطيات الخارجية، تمتلك أقطاب النافذة P0 مقاومة رفع داخلية (PULL-UP) فقط في هذا النمط.
الشكل التالي يوضح البنية الإلكترونية الداخلية لأقطاب النافذة P0.
4.النافذة P1 :
تمتلك النافذة P1 ثمانية أقطاب ثنائية الاتجاه تستخدم كأقطاب دخل \ خرج مزودة بـ (Pull-ups)
داخلي. وعند استخدام هذه النافذة كنافذة خرج فإنها تستطيع قيادة أربعة مداخل TTL.
تتم الكتابة على أقطاب النافذة P1 خلال الدورة الأولى، حيث تسحب أقطابها إلى المنطق العالي بسبب وجود مقاومة الرفع الداخلية (PULL-UP). ويمكن استخدامها كنافذة دخل وعند استخدام النافذة P1 كنافذة دخل فإن أقطاب النافذة P1 المسحوبة خارجيا" إلى المنطق المنخفض سوف تولد تيارا" (IIL) بسبب وجود مقاومة الرفع الداخلية (PULL-UP).
الشكل التالي يوضح البنية الإلكترونية الداخلية لأقطاب النافذة P1.
5.النافذة P2 :
تمتلك النافذة P2 ثمانية أقطاب ثنائية الاتجاه تستخدم كأقطاب دخل \ خرج مزودة بـ (Pull-ups)
داخلي. وعند استخدام هذه النافذة كنافذة خرج فإنها تستطيع قيادة أربعة مداخل TTL.
تتم الكتابة على أقطاب النافذة P2 خلال الدورة الأولى، حيث تسحب أقطابها إلى المنطق العالي بسبب وجود مقاومة الرفع الداخلية (PULL-UP).
و يمكن استخدامها كنافذة دخل وعند استخدام النافذة P2 كنافذة دخل فإن أقطابها التي تكون في البداية مسحوبة إلى المنطق المنخفض خارجيا" سوف تولد تيارا" (IIL) بسبب وجود مقاومة الرفع الداخلية (PULL-UP).
ترسل النافذة P2 بايت العنوان العالي خلال الإحضار من ذاكرة البرنامج الخارجية وخلال الولوج إلى ذاكرة المعطيات الخارجية التي تستخدم عنوان بطول 16 bit من البرنامج.
الشكل التالي يوضح البنية الإلكترونية الداخلية لأقطاب النافذة P2.
6.النافذة P3 :
تمتلك النافذة P3 ثمانية أقطاب ثنائية الاتجاه تستخدم كأقطاب دخل \ خرج مزودة بـ (Pull-ups)
داخلي. وعند استخدام أقطاب هذه النافذة كأقطاب خرج فإنها تستطيع قيادة أربعة مداخل TTL
تتم عملية الكتابة على النافذة P3 خلال الدورة الأولى، حيث تسحب أقطاب هذه النافذة إلى المنطق العالي بسبب وجود الـ(PULL-UP) الداخلي.
و يمكن استخدامها كنافذة دخل وعند استخدام النافذة P3 كنافذة دخل فإن أقطاب النافذة P1 المسحوبة خارجيا" إلى المنطق المنخفض سوف تولد تيارا" (IIL) بسبب وجود
الـ (PULL-UP) الداخلي.
الشكل التالي يوضح البنية الإلكترونية الداخلية لأقطاب النافذة P3.
ملاحظة هامة :
في هذا المتحكم لا داعي لتعريف وظيفة كل قطب من أقطاب النافذة قيد الاستخدام هل هي كدخل أم كخرج وإنما تتم عملية الكتابة مباشرةً إلى القطب من هذه النافذة وكذلك من الممكن أن تتم عملية القراءة من هذا القطب بعد تنفيذ تعليمة الكتابة إليه ولكن يجب الانتباه إلى أن زمن مسح البرنامج سريع جدا" (أقل بكثير من 1ms لبرنامج مؤلف من ألف تعليمة) ولا بد من إعطاء القطب زمن كي تستقر حالة الخرج عليه قبل استخدامه كدخل مرة أخرى (هذا في حال استخدامه كدخل وخرج معا")، وإلا فإننا نحصل على خطأ في قراءة القطب لأننا عندها سوف نقرأ القيمة التي قمنا بكتابتها إليه.
7.قطب التصفير RST :
يؤدي المنطق العالي على هذا القطب لمدة دورتي آلة مع استمرار عمل الهزاز إلى تصفير (RESET) المتحكم أي العودة إلى بداية البرنامج وبدء التنفيذ من أول تعليمة فيه.
8.ALE / PROG :
يستخدم هذا القطب كنبضة خرج لتمكين ماسك العنوان من أجل مسك بايت العنوان المنخفض خلال الولوج لذاكرة البرنامج الخارجية، كما يستخدم هذا القطب أيضا"دخل لنبضة البرنامج (PROG) خلال برمجة ذاكرة البرنامج الوميضية.
إن العمل الطبيعي للقطب ALE هو إرسال معدل ثابت من النبضات مقداره 1/6 من تردد الهزاز المستخدم، ويمكن استخدامه من أجل عمليات التزامن الخارجية لأهداف التواقت.
و ما يجب ذكره أننا نحصل على نبضة على نبضة ALE واحدة خلال كل ولوج لذاكرة المعطيات الخارجية.
أما إذا أردنا إيقاف عمل القطب ALE فإننا نقوم بتفعيل الخانة bit0 من حيز مسجلات الوظائف الخاصة عند الموقع 8Eh، فعند تفعيل هذه الخانة فإن القطب ALE يمكّن (يفعّل) فقط خلال تنفيذ التعليمة MOVX أو التعليمة MOVC.
و في كل الحالات الأخرى يسحب القطب ALE إلى المنطق العالي، ولا تؤثر الخانة bit0 على عمل المتحكم إذا كان في نمط التنفيذ الخارجي.
9.PSEN :
و هو عبارة عن قطب تمكين تخزين البرنامج يعطي نبضة قراءة لذاكرة البرنامج الخارجية.
عندما ينفذ المتحكم AT80C51 من ذاكرة البرنامج الخارجية, فإن القطب PSEN يفعّل مرتين لكل دورة آلة.
10.EA / VPP :
هو قطب تمكين الولوج الخارجي، ويجب ربط القطب EA إلى الأرضي GND لتمكين المتحكم من إحضار شيفرات التعليمات من ذاكرة البرنامج الخارجية التي تبدأ من العنوان
0000h إلى العنوان FFFFh.
و ما يجب ملاحظته أنه يوجد خانة قفل مبرمجة سوف تمسك القطب EA داخليا" إلى الصفر.
و عندما نربط القطب EA إلى جهد التغذية VCC فإن المتحكم ينفذ البرنامج من الذاكرة الداخلية الوميضية.
كما يستقبل هذا القطب أيضا" جهد تمكين البرمجة 12V (VPP) خلال عملية برمجة ذاكرة المتحكم الوميضية.
11.XLAT1 :
مدخل لاستقبال نبضات الساعة من الهزاز الخارجي، وهو مدخل دارة نبضات الساعة الداخلية.
12.XLAT2 :
و هو مخرج مضخم الهزاز العاكس.
ملاحظة:
في حال استخدام هزازة لتوليد نبضات الساعة للمتحكم فإننا نضعها بين القطبين ((XLAT1 & XLAT2.

وحدات الإدخال

أشهر وحدات الإدخال :
1.لوحة المفاتيح Keypad.
2.الحساسات الحرارية.