الحلقة الاولى للميكروكونتروللر 8051

عائلة MCS-51

احدى عائلات الميكروكونتروللر و التى تم تصميمها و انتاجها بواسطة شركة انتل ثم ظهرت بعض الشركات الاخرى لتنتج نفس العائلة مثل :-

Advanced Micro Devices (AMD) 
Siemens
Fujitsu
Philips

و كانوا حاصلين على الترخيص بانتاج هذا الجيل .

تم طرح المنتج المعروف بـ ( 8051 ) كتطوير لهذا الجيل تجارياً و تتلخص خصائصه فى الاتى :

  1. ذاكرة تخزين داخلية ثابتة من النوع ( ROM ) بسعة 4 كيلوبايت مع امكانية الاتصال بذاكرة خارجية من نفس النوع بسعة 64 كيلوبايت كحد اقصى .
  2. ذاكرة تداول داخلية عشوائى من النوع ( RAM ) بسعة 128 بايت مع امكانية التوصل بذاكرة خارجية من نفس النوع بسعة 64 كيلو بايت كحد اقصى
  3. عدد ( 4 ) منافذ توصيل كل منها بسعة 8 بت للادخال و الاخراج .
  4. عدد ( 2 ) مؤقت بقدرة 16 بت .
  5. امكانية الاتصال التسلسلى .
  6. معالج منطقى ALU
  7. عدد 210 موقع فى الذاكرة يمكن استدعاؤها على مستوى البت .
  8. زمن تنفيذ عملية الضرب او القسمة هو 4 مللى ثانية .

ثم ظهر بعد ذلك عدة اجيال كتطويرات لهذا الجيل تتلخص فى التالى :

8051 -------> 4K ROM , 128B RAM , 2 timer/counter 
8031 -------> 0 ROM , 128B RAM , 2 timer/counter 
8751 -------> 4K EPROM , 128B RAM , 2 timer/counter 
8052 -------> 8K ROM , 256B RAM , 3 timer/counter 
8032 -------> 0 ROM , 256B RAM , 3 timer/counter
8752 -------> 8K EPROM , 256B RAM , 3 timer/counter

التالى هو الرسم التوضيحى (( المبسط )) لمكونات الميكروكونتروللر 8051

, و ان شاء الله الى لقاء قادم مع باقى توصيف الميكروكونتروللر 8051

الله ينور يا أخى

الشكل التالى يوضح توصيف الاطراف الخارجية للميكروكونتروللر 8051

منافذ الادخال و الاخراج للميكروكونتروللر 8051

  • عدد 32 طرف من اجمالى 40 طرف يمثلون منافذ الادخال و الاخراج مقسمين الى نوعين :-
  • عدد 8 طرف ( يمثلون Port 1 ) لهم وظيفة وحيدة و هى الادخال و الاخراج .
  • عدد 24 طرف ( يمثلون Port 0 , Port 2 , Port 3 ) ولهم اكثر من وظيفة ( اطراف ادخال و اخراج – خطوط تحكم – جزء منهم يستخدم للعنونة او نقل البيانات ((( ناقلات عناوين او بيانات ))) .
  • يمكن التعامل مع كل 8 اطراف (تمثل منفذ 8 بت ) على انها وحدة واحدة عند التعامل مع المسارات المتوازية مثل ( الطابعة – محولات الاشارات التناظرية الى رقمية … الخ ) .

و كذلك يمكننا التعامل مع كل طرف ( من الاطراف الثمانية فى كل منفذ ) على حدا (( نعتبرها مفاتيح ببتحكم فى اضاءة LED او كنبضة لتشغيل ثايريستور – ا نبضة لتشغيل موتور Stepper )) .

منافذ الادخال و الاخراج

المنفذ ( 0 ) Port 0

منفذ متعدد الاغراض و يحتل الاطراف ( من 32 الى 29 ) فى الميكروكونتروللر 8051 .
و يتم استخدامه فى الاغراض البسيطة كمنفذ ادخال او اخراج فقط .
اما فى التصميمات المتقدمة فيستخدم كناقل للعناوين او البيانات .

المنفذ ( 1 ) Port 1

يستخدم لغرض وحيد و هو الادخال او الاخراج و يحتل الاطراف ( من 1 الى 8 ) .

المنفذ ( 2 ) –Port 2

منفذ متعدد الاغراض و يحتل الاطراف ( من 21 الى 28 ) فى الميكروكونتروللر 8051 .
و يستخدم بشكل عام فى الادخال و الاخراج .
كما يمكنه استخدامه كناقل للعناويين ( فى حالة الاتصال بذاكرة ROM ) او ( الاتصال بذاكرة RAM اكبر من 256 )

المنفذ ( 3 ) Port 3

منفذ متعدد الاغراض و يحتل الاطراف ( من 10 الى 17 ) فى الميكروكونتروللر 8051
يستخدم بشكل عام فى الادخال و الاخراج

و لكن الوظيفة الاخرى فلها تفصيلات يمكن توضيحها فى الجدول التالى :-

الله ينور يا أخى وشكرا

اليوم مع الجزء الثانى من الحلقة الاولى

التالى بعد نتعرف على اشارات التحكم

PSEN

Program Store Enable

  • يستخدم لاخراج اشارة على الطرف رقم 29 و التى يتم توصيلها على الذاكرة الخارجية (ROM). ((( اذا تم استخدام ذاكرة خارجية ))) ، و هى تعبر عن اشارة التحكم فى الشريحة لجعلها فعالة Enabled او غير فعالة Disabled حيث يتم فعلياً بتوصيلها على الطرف الخاص بالتفعيل ( OE == Output Enable ) للذاكرة الخارجية للسماح بقراء الكود المخزن عليها .

  • هذه الاشارة تعتمد على التفعيل السلبى ( Active Low ) بمعنى اننا نخرج عليها 0 للسماح بعملية القراءة من الذاكرة الخارجية .

  • الكود الثنائى المعبرعن البرنامج ( يسمى Opcode ) يتم قرائته من الذاكرة الخارجية EEPROM و يتم نقله عبر ناقل البيانات و يخزن على الميكروكونتروللر 8051 على مخازن التعليمات instruction register (IR) ليتم اعادة ترجمته decoding و تنفيذه .

ALE

Address Latch Enable

  • اشارة خرج تظهر على الطرف رقم 30
  • تستخدم فى فك التكويد الخاص بناقل البيانات و ناقل العناوين و يتم ذلك كالتالى :-
    عندما يعمل المنفذ رقم 0 كناقل للبيانات تعبر الـ ALE عن الاشارة التى تخزن العنوان على مخزن خارجى خلال النصف الاول من دورة الذاكرة first-half of a memory cycle و بالتالى يكون خطوط المنفذ رقم 0 متاحة لادخال او اخراج البيانات .
    خلال النصف الثانى من دورة الذاكرة second-half of the memory cycle يكون نقل البيانات قد تم .
  • اشارة الـ ALE لها تردد يساوى 1/6 من تردد الميكروكونتروللر و يمكن استخدامها كنبضة عامة لتشغيل باقى الدوائر الرقمية المتصلة بالنظام

EA

External Access

  • اشارة دخل يتم ادخالها على الطرف رقم 31 للميكروكونتروللر 8051
  • تأخذ أحد القيمتين ( 0 أو 1 )
    القيمة ( 1 ) ، تستخدم إذا أردنا تنفيذ الأوامر المخزنة على الذاكرة الداخلية للميكروكونتروللر 8051 ، الذاكرة الداخلية محدودة ( 4/8 كيلو )
  • القيمة ( 0 ) ، و تستخدم إذا أردنا أن ننفذ الأوامر المخزنة على الذاكرة الخارجية فقط ( هنا يجب ان تكون اشارات PSEN منخفضة === 0 )

RST

Reset

  • اشارة دخل يتم ادخالها على الطرف رقم 9 للميكروكونتروللر 8051
  • اذا تم ادخال القيمة ( 1 ) (( 5 فولت )) على هذا الطرف لمدة لا تقل عن زمن تنفيذ دورتين (machine cycles ) يتم تحميل المخازن بالقيم الاولى فى البرنامج (( يقوم الميكرو بانهاء التطبيقات الحالية و البدء من اول خطوة ))
  • فى حالة التشغيل الطبيعية يجب ادخال ( 0 ) على هذا الطرف .

ترتيب الذاكرة

معظم المعالجات تنجز تداول البيانات و اوامر البرنامج من خلال المشاركة السريعة للذاكرة بينهما ، فكل من البيانات و الاوامر البرمجية تكون مقيمة فى الذاكرة العشوائية للميكروكونتروللر RAM بينما نجد دائماً ان اوامر التحكم فى البرنامج تكمن فى الذاكرة الدائمة ROM الذاكرة الداخلية للميكروكونتروللر تحتوى على كل من ROM و RAM

و نجد ان الـ RAM تحتوى على عدد كبير من المخازن المستخدمة فى الاغراض العامة general-purpose storage و بعضها يستخدم كمخازن يمكن استدعاوها على مستوى البت bit addressable storage و البعض الاخر يستخدم كمصفوفة مخازن register banks و هناك مخازن لها وظائف خاصة special function registers. == SFR

الرسم التالى يوضح تقسيم الذاكرة RAM الداخلية

المخازن المستخدمة للاغراض العامة تنقسم كما هو بالشكل

General-Purpose RAM

نلاحظ انه لدينا عدد ( 210 ) موقع فى الذاكرة يتم استدعاؤهم على مستوى البت
210 (128+82) Bit-Addressable RAM

و الفكرة هنا هى امكانية الوصول و التعامل مع كل خانة Bit داخل مجموعة من البايت Bytes كل على حدا من خلال البرنامج ، مما اعطى ميزة قوية جداً للميكروكونتروللر .

و الرسم التالى يوضح اماكن هذه المجموعة داخل الذاكرة :-

توضيح لمنطقة الاغراض العامة و موقع الـ 128 موقع الذين يتم استدعاؤهم على مستوى البت
128 General-Purpose Bit-Addressable Locations

و الان يمكننا وضع قيمة 1 داخل البت رقم 3 داخل البايت ذات العنوان ( 25H ) بالامر التالى :-
SETB 2BH

و الى لقاء مع الجزء الثالث من الحلقة الاولى ان شاء الله تعالى

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

اليوم نكمل الجزء الثالث فى الحلقة الاولى بأمر الله تعالى

لقد قمت برفع الصور عبر موقع آخر و نكمل الجزء الثالث بأمر الله

ترتيب الذاكرة

معظم المعالجات تنجز تداول البيانات و اوامر البرنامج من خلال المشاركة السريعة للذاكرة بينهما ، فكل من البيانات و الاوامر البرمجية تكون مقيمة فى الذاكرة العشوائية للميكروكونتروللر RAM بينما نجد دائماً ان اوامر التحكم فى البرنامج تكمن فى الذاكرة الدائمة ROM
الذاكرة الداخلية للميكروكونتروللر تحتوى على كل من ROM و RAM
و نجد ان الـ RAM تحتوى على عدد كبير من المخازن المستخدمة فى الاغراض العامة general-purpose storage و بعضها يستخدم كمخازن يمكن استدعاوها على مستوى البت bit addressable storage و البعض الاخر يستخدم كمصفوفة مخازن register banks و هناك مخازن لها وظائف خاصة special function registers. == SFR


الرسم التالى يوضح تقسيم الذاكرة RAM الداخلية


المخازن المستخدمة للاغراض العامة تنقسم كما هو بالشكل

General-Purpose RAM

نلاحظ انه لدينا عدد ( 210 ) موقع فى الذاكرة يتم استدعاؤهم على مستوى البت

210 (128+82) Bit-Addressable RAM

و الفكرة هنا هى امكانية الوصول و التعامل مع كل خانة Bit داخل مجموعة من البايت Bytes كل على حدا من خلال البرنامج ، مما اعطى ميزة قوية جداً للميكروكونتروللر .

[CENTER]و الرسم التالى يوضح اماكن هذه المجموعة داخل الذاكرة

توضيح لمنطقة الاغراض العامة و موقع الـ 128 موقع الذين يتم استدعاؤهم على مستوى البت

128 General-Purpose Bit-Addressable Locations

و الان يمكننا وضع قيمة 1 داخل البت رقم 3 داخل البايت ذات العنوان ( 25H ) بالامر التالى :-

SETB 2BH

مصفوفات المخازن

Register Banks

[SIZE=“3”][SIZE=“4”]
يتم التعامل هنا مع المخازن كالتالى :

  • لقراءة محتويات الموقع رقم ( 05H ) ووضع القيمة فى الـ accumulator
    1- استخدام اسم المخزن :-

MOV A, R5

( هذا الامر يأخذ بايت واحد كى يتم التفيذ )
2- استخدام عنوان النخزن :-

MOV A, 05H

( هذا الامر يأخذ 2 بايت كى يتم التنفيذ )

  • حدد الموقع فى الذاكرة الذى سيتم كتابة القيمة المخزنة فى الـ accumulator اليه .

SETB RS1
SETB RS0
MOV R0, A
من الواضح هنا انه تم وضع 1 فى المخازن ذات الاستخدامات الخاصة (RS1 وRS0 ) بالتالى يتم الاشارة الى المصفوفة رقم (3)Bank 3 و التى تبدأ بالعنوان ( 18H )
حيث سيتم وضع قيمة الـ داخل المخزن رقم ( 0 ) فى المصفوفة ( 3 ) اى العنوان ( 18H).
[/size][/size]

و الان نتعرف على مخازن الوظائف الخاصة (SFR)

21 Special Function Registers (SFR)


بوركـــــــــــــــــــــــــــــــــــــــــــت وجعل عملك في ميزان حسناتك

اليوم اقدم لكم بحول الله و قوته و منته علينا الجزء الرابع و الاخير فى الحلقة الاولى
حيث ننهى تعرفنا على التركيب الداخلى للميكروكونتروللر 8051

Special Function Registers

SFR

الجدول التالى يوضح موقع كل من الـ accumulator و المخزن المساعد B

الرسم التالى يوضح موقع ال منفذ ( 1 ) ( port 1 ) العنوان من (90H ) الى (97H )

Program Status Word

PSW

يحتوى الـ PSW على التالى :-
Carry flag

CY

يستخدم اثناء عمليات الجمع او الطرح حيث يخزن فيه 1 اذا ما ظهر لدينا قيمة تنتقل الى خانة اعلى او عند الطرح و ظهور رقم اقل من امطروح منه .
الامثلة التالية تحدد وظيفة الـ Carry :-

1-
MOV A, #FFFH
ADD A, #1

ما هى حالة الـ Cary Flag ؟

FFH+1H=100H

هنا نجدأن:-

A=#00 , CY = 1

2-
[SIZE=“4”]
MOV R5, #55H
MOV A, #0AAH
ADD A, R5
[/SIZE];
ما هى حالة الـ Cary Flag ؟

0AAH+55H = 0FFH

هنا نجد أنه لا يوجد باقى
A=FFH and CY=0 (No Carry)

Auxiliary Carry flag

AC

[SIZE=“4” ]

  • عند التعامل مع نظام التكويد العشرى على هيئة ثنائى ( BCD ) و تحديداً عند عمل إضافة فانه عند الانتقال من الخانة الثالثة الى الخانة الرابعة فانه ( AC ) تحمل الرقم 1 .
  • مثال لتوضيح استخدام ( AC )
    مطلوب معرفة حالة ( AC ) و محتوى المسجل ( Accumulator ) بعد تنفيذ التتابع التالى :-[/size]

MOV R5, #1;
MOV A, #9;
ADD A, R5
;
الاجابة :-
لفهم هذا المثال يلزم مراجعة الانظمة العددية ( ليست مجال الموضوع حالياً )

A=10H (BCD) =1010 = 00010000B , AC=1

Register bank select bit

RS1 and RS0


كيفية اختيار المخزن داخل كل مصفوفة
يتم ذلك من خلال تحديد قيم ( D3 & D4 ) داخل الـ ( PSW )
و ذلك من خلال عمل تكويد بسيط يحمل اربع قيم ( 0 ، 1 ، 2 ، 3 ) و كل فيمة تعبر عن رقم المصفوفة المستخدمة .
(

RS1, RS0 ) à ( 0 , 0 ) à ( Regester Bank 0 is Selected )
( RS1, RS0 ) à ( 0 , 1 ) —> ( Regester Bank 1 is Selected )
( RS1, RS0 ) à ( 1 , 0 ) —> ( Regester Bank 2 is Selected )
( RS1, RS0 ) —> ( 1 , 1 ) à ( Regester Bank 3 is Selected
)
و يتم التحكم فى هذه القيم من خلال الأوامر التالية :-
SETB RS1; CLR RS0

هنا تم ضبط نظام التكويد الى الوضع ( RS1, RS0 ) = ( 1 , 0 ) و من ثم اختيار المصفوفة Regester Bank 2
لاحظ وظيفة الامر SETB و التى يمكن استخدامها مع اسم (( SFR او عنوانها مباشرة

SETB RS1 (= SETB 0D4H)
SETB RS0 (=SETB 0D3H)



Overflow Flag
OV

بما اننا نعمل على ميكرو 8 بت فمن ثم فاننا محددين بقيم فى المدى ( 127 الى –128 ) حيث ان الاعداد المستخدم كقيمة عظمى هى ( 2^8 = 256 ) و يتم توزيعهم كالتالى
( 1 : 127 & 0 & -1 : -128 )
و من ثم فإن اى عملية حسابية يجب ان يكون الرقم الناتج عنها فى نطاق
(-128 < X < 127 ) و اذا كان خلاف ذلك يحمل المخزن ( OV ) القيمة ( 1 ) .
مثال توضيحى :-

MOV R7, #0FFH;
MOV A, #0FH;
ADD A, R7

مطلوب تحديد حالة الـ OV
R7=11111111
لتحويل هذا الرقم الى النظام العشرى:-
راقب الصورة العامة تجدها ( 1xxxxxxx ) و التى تعنى ان الرقم سالب لذلك نحول كل ( 0 ) الى ( 1 ) و كل ( 1 ) الى ( 0 ) ثم اجمع ( 1 ) على الناتج و اكتب الرقم بالشارة السالبة .
(00000000+1= - 00000001 so (( R7 = -1))
A=00001111 (15)
راقب الصورة العامة تجدها ( 0xxxxxxx ) و التى تعنى ان الرقم موجب اى ان A= 15
A=-1+15=14 =0EH< 127 so OV=0 --No overflow)
الموضوع هنا يحتاج الى وقفة :-

اتفقنا ان الاعداد بين (127 : – 128 ) ، إذن كيف يتم التعبير عنها ؟؟؟؟
الرقم ( 0 ) هو ( 00000000 )
الارقام الموجبة تكتب على الصورة ( 0xxxxxxx ) اى من ( 00000001 ) = ( 1 ) الى ( 01111111) = ( 127 ) .
الارقام السالبة تكتب على الصورة (1xxxxxxx ) اى من (10000000) = ( - 128 ) الى ( 11111111 ) = ( - 1 )
A=-1+15=14 =0EH< 127 ------> OV=0 (No overflow)

Parity bit

P

[SIZE=“4”]هذا العلم يستخدم لعمل فحص لعدد الـ ( 1 ) التى تمر ضمن البيانات الى الـ Accumulator و تتغير قيمة هذا العلم كل دورة Machine Cycle ، و يحمل العدد 0 اذا كانت الـ 1s زوجية و يحمل القيمة 1 اذا كانت الـ 1 s فردية اى انها تعبر عن الـ ( ODD Parity Bit ) كالتالى :-

MOV A, #55H

A=01010101B —> numbers of 1-bit = 4 ----> P=0
[/size]

B register or B accumulator

[SIZE=“4”]يستخدم ال( Accumulator ( B كمساعد الـ ( Accumulator ( A
  • فمثلاً عند عملية الضرب ممكن جداً ان يكون الناتج خارج اطال الـ 8 بت و من ثم يتم تقسيم ناتج الضرب الى جزئين ( علوى High و سفلى Low ) بحيث تحمل الـ ( Accumulator ( B القيم العليا بينما يحمل الـ ( Accumulator ( A القسم السفلى
    MUL AB

    Results of low-byte in A and high-byte in B.
  • و كذلك عند عملية القسمة نجد ان خارج القسمة يتجزأ الى جزئين الارقام الصحيحة تخزن فى الـ ( Accumulator ( A … بينما الكسور تخزن فى الــ Accumulator ( B )
    [/size]

Stack Pointer
SP

هو مخزن سعته8 بت عند العنوان 81H و يستخدم عند التعامل مع البرامج او البيانات المخزنة على ذاكرة خارجية ملحقة بالميكروكونتروللر 8051 . و لا يمكن التعامل معه على مستوى الـبت
Data pointer (DPTR)

[SIZE=“4”]
عبارة عن مخزن سعته 16 بت (16-bit register) وو يستخدم فى الاحتفاظ بعناويين البيانات و يمكنه الاشارة الى عناوين حتى 64 كيلو و من ثم يستخدم غالباً عند التعامل مع الذاكرة الخارجية و هومنقسم الى جزئين علوى و سفلى :-

DPH: Data Pointer High-byte----> at 83H
DPL: Data Pointer Low-byte-----> at 82H

و له استخدامات هامة للتعامل مع الذاكرة الخارجية حيث انه يشير الى عناوين البيانات و تصل حجم البيانات الى 16 بت ( 2^16 ) == ( 64 كيلوبت ) و المثال التالى يوضح احد استخداماته :-
MOV A, #55H è A=55H
MOV DPTR, #1000H è DPTR=1000H (16-bit)
MOVX @DPTR, A

—> Move the content of A to the external RAM location whose address is in DPTR==1000H
الامر الاخير يقوم بتحويل القيم المخزنة فى ال ( Accumulator ( A الى العنوان المخزن على الـ Data pointer (( لاحظ انه يشير لعنوان خارج نطاق 4 كيلو و من ثم فانه يشير لبيانات مخزنة فى ذاكرة خارجية )) . [/size]
Port Registers


و الان جاء الدور لنتحدث عن المخازن التى تحمل القيم المارة عبر منافذ الادخال و الاخراج ( Port 0 & 1 & 2 & 3 ) .
نلاحظ ان المنافذ (Port 0 & 2 & 3 ) قد لا تكون لاستخدامات الادخال و الاخراج اثناء التعامل مع الذاكرة الخارجية أو فى حالة استخدام بعض الامكانات الخاصة بالميكروكونتروللر 8051 مثل التعامل مع ( interrupt. Serial port ) و بالرغم من ذلك نجد ان المنفذ ( Port 1 ) مستخدم دائماً و ابداً كمنفذ اخال و اخراج و كذلك يمكننا التعامل معه على مستوى البت , و من ثم يمكن ادارة و ايقاف عدد 8 محركات من خلال اشارة خرج على الاطراف الثمانية المتاحة كالتالى :-

[LEFT]
SETB P1.7 (=SETB 97H)—> might turn the motor ON
CLR P1.7 (=CLR 97H)----> might turn the motor OFF.
[/left]

Timer Registers


يحتوى الميكروكونتروللر 8051 على عدد 2 مؤقت بسعة 16 بت يطلق عليهم ( ( TL0 and TL1.
يتم تشغيل المؤقت من خلال ضبط مخازن الحالة (TMOD) و كذلك مخازن التحكم (TCON) .
و من المعروف ان مخازن التحكم (TCON) يتم التعامل معها على مستوى البت

Serial Port Registers

[SIZE=“4”]
مخازن منفذ التوصيل التسلسلى

  • من المعروف ان الميكروكونتروللر 8051 له منفذ توصيل تسلسلى للاتصال بالجهزة التى تعمل على ارسال و استقبال البانات التسلسلية مثل ( الفأرة – لوحة المفاتيح – الموديم – او حتى الاتصال باى دائرة متكاملة تعتمد على نقل البيانات المتسلسل مثل محولات الاشارات التماثلية Analog الى رقمية Digital و مخازن الترحيل Shift Register و الذاكرة RAM و … … … الخ ) .
  • يتم تخزين البيانات المراد نقلها ( مرسلة او مستقبلة ) داخل مخزن مستقل عند العنوان 99H و يسمى SBUF (serial data buffer) .
  • و يوجد كذلك مخزن للتحكم فى عدة لنواع من الاتصال التسلسلى يسمى SCON (serial port control register).
    المخزن يمكن التعامل معه على مستوى البت[/size]
    Interrupt Registers

[SIZE=“4”]
مسجلات الاعاقة ( الطوارئ )

  • هذه المسجلات تكون غير نشطة عقب التشغيل مباشرة و لا تنشط الا من خلال المخزن الخاص بها
    interrupt enable register ==IE عند العنوان A8H .
  • و لدينا اكثر من نوع من الاعاقات يمكن ان تحدث عبر هذا السجل و تسجل الاولويات عبر مخزن الاولويات priority register ==IP عند العنوان B8H .
  • كل من مخزن الاعاقة و مخزن الاولويات يتم التعامل معه على مستوى البت .[/size]

    Power Control Register

مخزن التحكم بالطاقة
-يحتوى هذا المخزن على مجموعة من الاعلام الهامة جداً ، نفصلها فيما يلى :-

SMOD

تستخدم لجعل معدل التدفق للبيانات baud rate التسلسلية يتضاعف baud rate is doubled و ذلك فى حالاتها الثلاث serial port modes 1, 2, and 3 و يتم ذلك بجعلها تحمل القيمة ( 1 )

GF1 & GF0

اعلام متعددة الاغراض

PD

Power down

تستخدم لتفعيل حالة النوم للميكروكونتروللر حيث يكون كل الوظائف متوقفة و تظل الذاكرة ( RAM ) محتفظة بالبيانات التى عليها و كذلك تظل ارجل المنافذ محتفظة بحالتها بينما يتم اجبار كل من (ALE ) و (PSEN ) على البقاء فى الحالة ( low ) و جهد التغذية (VCC ) المطلوب وقتئذٍ هو ( 2V ) حتى المذبذب ( oscillator ) يتوقف و للخروج من هذه الحالة هو مفتاح reset .

IDL

Idle mode

يستخدم لتنشيط حالة الخمول .
عند تفعيل هذا العلم ، المذبذب الداخلى (internal clock signal ) يحجب عن المعالج ( CPU ) بينما تكون حالة المعالج باقية على حالتها و كذلك كل محتويات المخازن و كذلك تظل اطراف المنافذ محتفظة بحالتها بينما تجبر كل من ( ALE ) و (PSEN ) على البقاء فى الحالة (high ) .

External Memory

- عند استخدام الذاكرة الخارجة يكون المنفذ رقم ( 0 ) (Port 0 ) غير متاح كمنفذ ادخال و اخراج و لكنه يتحول الى مؤشر للعنوان من (A0 ) الى (A7 ) و كذلك حامل للبيانات من (D0 ) الى (D7 ) فيما يعرف بـ
multiplexed address and data
و ذلك بالتعاون مع (ALE ) و التى تعمل على حفظ او تخزين الجزء السفلى من عناوين البيانات (low-byte of the address ) و ذلك فى بداية كل دورة للذاكرة الخارجية بينما يقوم المنفذ رقم ( 2 ) (Port 2 ) محتفظاً بالجزء العلوى من عناوين البيانات (high byte of the address )

Accessing External Code Memory

[SIZE=“4”]
  • طبعاً سيتسأل الجميع عن آلية عمل الــ ( multiplexed arrangement ) ؟؟؟؟؟؟؟؟؟
    الموضوع بسيط جداً و يتم كما يلى :-
  • خلال النصف الاول من دورة الذاكرة ( memory cycle ) القيمة السفلى فى العنوان low-byte تظهر على المنفذ رقم ( 0 ) (Port 0 )و يتم الحتفاظ به بواسطة ( ALE )
    و التى ترسلها الى متكاملة التخزين ( 74HC373 ) و التى تحفظها خلال كل الدورة (duration of the memory cycle )
  • خلال النصف الثانى من الدورة يستخدم المنفذ رقم ( 0 ) (Port 0 ) كناقل بيانات (( يكتب او يقرأ حسب طبيعة العملية )) .
    [/size]

ترقبوا بأمر الله تعالى الحلقة الثانية و الانتقال الى ربط الميكروكونتروللر 8051 بالعالم الخارجى

و الان بعد اتمام الشرح و لكل من يجد ان هناك غموض فى الشرح فباب النقاش مفتوح لكل من يحب ان يستفسر عما تم الانتهاء منه فى الحلقة الاولى

شكرا على هذا العمل الرائع وبارك الله فيك
وممعلش هاتعبك معايا
فلو سمحت فى صور الروابط بتعتها وقعت
ففمكن حضرتك تعملها ابلود تانى
ولو حتى تحتلها لينكات بس

وشكرا

اخى العزيز الصور كلها ظاهرة :sm248: و ان كنت لا ترى احدها اخبرنى عن الشرح الذى يخلو من الصور حتى يتسنى لى معرفة القصور و اصلحه ، فقد راجعت الموضوع و وجدت كل شئ على مل يرام ، و ان كان هناك شئ غير واضح فى الشرح يمكنك الاستفسار و يسرنى ان اجيب عليك
تحياتى

عفواً اعزائى قد اتوقف عن اتمام شرح دورة الميكروكونتروللر 8051

معلش اتاخرت فى الرد بسسب الميد تيرم
الصور التى لم تظهر

بعد هذا العنوان

[color=#800080]

الرسم التالى يوضح تقسيم الذاكرة Ram الداخلية
[/color]

حتى

و الى لقاء مع الجزء الثالث من الحلقة الاولى ان شاء الله تعالى

وشكرا على الاهتمام

لا وجود لكلمات الشكر مع هذا الشرح الراقي

بارك الله فيك وجعله في ميزان حسناتك