-3) سازمان حافظه : معمولاً در پرسسورها كد برنامه داده روي حافظه RAM جانبي قرار دارد كه در ابتدا يك بار از روي ديسك فراخواني مي شود ولي در ميكرو كنترلر برنامه كنترل روي ROM و يا EPROM جاي مي گيرد و ميكرو كنترلرها حافظه جداگانهاي به داده اختصاص مي دهند.
شكل (7-3): حافظه داده روي تراشه در 8051
دو ويژگي حافظه داخلي اينست كه : الف) ثباتها و درگاههاي I/O ،memory mapped شدهاند يعني مانند ديگر مكانهاي حافظه قابل آدرس دهي هستند. ب) براي اختصاص حافظه به پشته فقط از RAM داخلي استفاده مي شود. در شكل (7-3) سازمان RAM داخلي نشان داده شده است كه از چهار قسمت: الف) بانكهاي ثبات. ب) فضاي انباشت عمومي. ج) فضاي قابليت آدرس دهي بيتي. د) ثباتهاي ويژه SFR. تشكيل شده است
7-3-1) بانكهاي ثبات: اين بانكهاي آدرس 00 تا1F پايين RAM هستند. در هر بانك 8 ثبات
R0 تا R7 وجود دارند اين ثباتها بويژه در دستوراتي كه نوع آدرس دهي آنها رجيستري است، بكار مي روند.
با تغيير سيستمهاي وضعيت، بانك ثبات فعال عوض مي شود. مثلاً آدرس RAM , 16 H داخلي، ثبات R6 از بانك شماره 2 مي باشد. با نوشتن دستور MOV R6, A، محتويات A داخل R6 نوشته مي شود.
7-3-2) فضاي عمومي نگهداري اطلاعات: از آدرس 30H تا 7FH فضاي عمومي نگهداري اطلاعات است. كه قابليت آدرس دهي مستقيم و غيرمستقيم را دارد. كه در بحث آدرس دهي به نحوه استفاده از اين دستورات مي پردازيم.
7-3-3) فضاي RAM با قابليت آدرس دهي بيتي: 210 بايت از RAM قابليت آدرس دهي بيتي دارند. كه 128 تا از آنها در فاصله 20H تا 2FH هستند با كمك اين قابليت مي توان يك تك بيت را بصورت مجزا آدرس دهي كرد. علاوه بر اين هر بيت براي خود آدرس جداگانه دارد. مثلاً براي روشن كردن بيت دوم ثبات 2A از دستور مقابل استفاده مي كنيم:
SETB 51 H ; Set bit 51 H
در ميكرو پرسسورها براي يك كردن يا صفر كردن يك بيت خاص 8 بيت فوق را با يك عدد 8 بيتي ديگر AND يا OR مي كنند .(MASK كردن )
7-3-4) ثباتهاي ويژه (SFR): تمام ثباتهاي داخلي بجز IR و PC در RAM ، memory maped شده اند كه در محدوده آدرس FFH – 80H قرار دارند. و بعضي ازآنها قابليت آدرس دهي بيتي دارند. تفاوت بين ميكروپرسسور و ميكرو كنترلر در شكل (3-7) مشاهده مي شود در ميكرو پرسور ثباتها در انباره در RAM نيستند ولي در ميكرو كنترلر مثلاً وقتي به محتواي ثبات B يك واحد اضافه كنيد به بايت F0 حافظه يك واحد اضافه خواهد شد. قابليت ديگر ميكرو كنترلر اين است كه درگاههاي خروجي بصورت تك بيتي يعني بصورت بيت آدرس پذير قابل دسترسي هستند و در برنامه با قرار دادن يك دستور مي توان مثلاً پايه شماره 2 درگاه 1 را روشن كرد.دستور مقابل اين كار را انجام مي دهد.
SETB 91 H
در اين قسمت عملكرد هر ثبات را به صورت مختصر شرح مي دهيم.
7-3-4-1) كلمه وضعيت برنامه (PSW): اين كلمه در آدرس D0H قرار دارد و تشكيل شده از: پرچمهاي نشانه دو بر يك CY ، نشانه دو بر يك كمكي AC (يك پرچم همه منظوره) OV نشانه سرريز شدن ،P نشان توان زوج و دو پرچم ديگر براي كنترل بانك ثبات فعال.در شكل (4-7) محل هر پرچم را مشاهده مي كنيد.
شكل (7-4): محل قرار گرفتن پرچمها
در جدول (7-2) نحوه كنترل بانك ثبات با دو پرچم RS1 , RS0 بيان شده است.
مثلاً براي ذخيره اطلاعات انباره در رجيستر R5 از بانك 3 مجموعاً دستور العملهاي زير انجام ميدهيم:
SETB RS1
SETB RS0
MOV R5 , A
جدول (7-2): فعال كردن بانك ثبات
RS1-RS0 |
شماره بانك ثبات |
0 0 |
0 |
0 1 |
1 |
1 0 |
2 |
1 1 |
3 |
7-3-4-2) اشارهگر پشته (SP): اشاره گر پشته يك ثبات 8 بيتي واقع در 81H است. شبيه ميكروپرسسورها با دستور POP , PUSH مي توان در پشته داده اي را ذخيره كرد و يا آن را بازخواني نمود. البته در ميكروكنترلرهاي خانواده 8051 دستور PUSH ابتدا يك واحد به SP اضافه مي كند و بعد داده را ذخيره مي كند همچنين در دستور POP داده را بازخواني و سپس يك واحد ازSP كم مي كند. بعداز باز نشاندن، بصورت پيش فرض SP، 07H است و اولين داده در 08H ذخيره ميشود. براي شروع پشته از مكان دلخواه،كافي است با دستور MOV محتواي SP را برابر آدرس آن مكان حافظه قرار دهيد.
7-3-4-3) ثبات B: ثبات B براي انجام عمل ضرب و تقسيم استفاده مي شود. دستور
MUL A,B حاصلضرب دو عدد 8 بيتي B ,A را محاسبه كرده 8 بيتLSB را در Aو 8بيت MSB را در B ذخيره مي كند. دستورDIV A,B ، A را بر B تقسيم كرده خارج قسمت رادر A و باقيمانده رادر B ذخيره مي كند.چهار ثبات 8 بيتي به نامهاي TH1,TL1,TH0,TL0وظيفه نگهداري محتواي 16 بيتي هر يك از دو زمان سنج را بر عهده دارند0
7-3-4-4) ثباتهاي زمان سنج: ثباتهاي TCON و TMOD براي تنظيم عملكرد اين دو زمان سنج استفاده مي شود. نحوه استفاده و كاربرد آن دو را در بخش (7-7) بررسي خواهيم كرد.
7-3-4-5) اشاره گر داده (Data Pointer) : اين اشاره گر موقع استفاده از RAM يا EPROM خارجي در آدرس دهي غير مستقيم كاربرد پيدا مي كند.دو ثبات (DPL)82Hو(DPH)83H در RAMداخلي آدرس 16, بيتي را براي اين منظور در بر مي گيرند0
. مثلاً براي ارسال محتواي A به آدرس 1F00 به حافظه خارجي از دو دستور زير استفاده مي كنيم:
MOV DPTR,#1F0H
MOV @DPTR ,A
7-3-4-6) ثباتهاي انتقال سري:شامل دو ثبات SBUF (بافر انتقال سري) و SCON(ثبات كنترل انتقال سري) هستند كه به ترتيب با آدرس 98Hو99H مشخص مي شوند SBUF در واقع در بردارنده بايت ارسالي يا دريافتي در يك عمل ارسال يا دريافت است. SCON براي برنامه ريزي ارتباط سري بكار ميرود.
7-3-7) ثباتهاي درگاههاي I/O: بايتهاي مربوط به P3 , P2 , P1 , P0 در مكانهاي B0H,A0H,90H,80H آدرس دهي شده اند. و تمام بيتهاي آنها قابليت آدرس دهي دارند مثلاً ميتوانيم پايه P1.6 را به يك LED متصل كنيم و وقتي كه ميكروكنترلر در حال ارسال سري داده است بيت مربوط به اين درگاه را يك كنيم تا LED روشن شود يا مثلاً براي راه اندازي يك رله و يا بوق هشدار و غيره به كمك مدارهاي الكترنيكي مناسب از اين روش مي توان استفاده كرد.
7-3-4-8) ثبات كنترل توان مصرفي (PCON): اين ثبات در مكان 87H آدرس دهي شده. كه در جدول (3-7) بصورت مختصر بيان گرديده است.
جدول (3-7): خلاصه ثبات PCON
شرح عملكرد |
نماد |
بيت |
دوبرابر كننده نرخ ارسال |
SMOD |
7 |
تعريف نشده |
- |
6 |
تعريف نشده |
- |
5 |
تعريف نشده |
- |
4 |
بيت 1 پرچم همه منظوره |
GF1 |
3 |
بيت 0 پرچم همه منظوره |
GF0 |
2 |
دست تغذيه |
PD |
1 |
حالت معلق |
IDL |
0 |
اگر SMOD يك باشد در حالات 3 , 2 , 1 انتقال سري boud rate دو برابر مي شود با يك شدن IC , IDL وارد وضعيت معلق مي شود ومحتويات تمام ثباتها و وضعيت CPU حفظ مي گردد. پايه هاي درگاههاي I/O همگي يك مي شوندو نيز PSEN , ALE high نگه داشته مي شوند. در اين وضعيت پالس ساعتي كه براي كار وقفه زمان سنج ها و انتقال سري لازم است قطع مي شود خارج شدن از اين وضعيت تنها با دريافت وقفه يا بازنشاندن مسير ميشود در هر دو حالت بيت IDL صفر مي گردد. با يك شدن بيت PD، IC را در وضعيت كممصرف قرار ميگيرد اين وضعيت به IDL شبيه است با اين تفاوت كه، پالس ساعتي كه براي كاركرد وقفه زمان سنج لازم است قطع مي شود. پايه هاي PSEN , ALE ، low نگه داشته ميشوند تنها راه خروج از اين وضعيت باز نشاندن IC است.
7-3-4-9) ثبات هاي وقفه: 8051 مي تواند به 5 منبع وقفه در دو سطح اولويت پاسخ دهد. ميكروكنترلر در صورت نوشتن داده مناسب در ,IE به به وقفه هاي دريافتي پاسخ ميدهد. آدرس ثبات فوق A8H است. براي تعيين سطح اولويت از ثبات IPبه آدرس B8H استفاده مي شود براي آشنايي به نحوه كار اين ثباتها به فصل (9-7) مراجعه كنيد.
7-4) دسترسي به حافظه خارجي:
براي ذخيره كد برنامه در EPROM ، ابتدا خروجي PSEN، 8051را به ورودي EPROM,OE متصل ميكنيم سپس طبق زمان بندي كه در شكل (5-7 )نشان داده شده است، دادهها را به آدرس مورد نظر در EPROM مي فرستيم. پايه ALE، عملكرد نگهدارنده 373 را كنترل مي كند. 373 داده اول را كه 8 بيت LSB آدرس است در خود نگه مي دارد سپس داده ها از مسير بعدي به دو آدرس(A15 . . . A0) حافظه خارجي ارسال مي شود.
در موقع نوشتن در حافظه خارجي سيگنال WR فعال است. موقع خواندن حافظه، سيگنال RD فعال ميگردد پايه WR حافظه خارجي بايد به پايه WR ، 8051 متصل گردد شكل (5-7) شكل موج مربوط به دستور MOVX A,@DPTR را نشان مي دهد.
البته بعلت اينكه برنامه ريزي كردن EPROM و خط زدايي آن كار مشكلي است مي توانيم از RAM خارجي استفاده كنيم براي اين منظور كافي است سيگنالهاي RD , PSEN از نظرعملكرد OR و به تعبيرسخت افزاري AND, كرده وبه پايه OE يك RAM متصل كنيد.
شكل (7-5): اتصال به حافظه خارجي