بانک های ثبات:
8051 دارای 8 ثبات با نامهای R0-R7 میباشد دستوراتی که از این ثباتها استفاده می کنند نسبت به دستورات مشابه خود که از انواع دیگر آدرس دهی استفاده می کنند دارای تعداد بیت کمتر و سرعت بیشتری هستند بنابراین در صورتی که از داده ای به طور متناوب در برنامه استفاده می کنیم بهتر است که این داده در یکی از ثباتهای بانک ثبات قرار گیرد.
در 8051 , 4 بانک ثبات وجود دارد که در هر لحظه از زمان می توان فقط یکی از این بانکها را فعال و از آن استفاده کرد . برای فعال کردن یک بانک ثبات از دو بیت با نامهای PSW.3, PSW.4 استفاده می کنیم این 2 بیت اجزای ثبات PSW هستند.
ثبات PSW:
مخفف Program status word یا کلمه وضعیت سیستم است .این ثبات در هر سیکل ماشین بسته به وضعیت و جواب برنامه تغییر می کند و برنامه نویس می تواند بر اساس این تغییرات منطق برنامه را تغییر دهد. PSW مشابه FLAG های ریزپردازنده های سیستم های میکروکامپیوتری می باشد.
شکل زیر بیتهای ثبات وضعیت (PSW) را نشان می دهد.
|
C یا CY |
AC |
F0 |
RS1 |
RS0 |
OV |
---- |
P |
|
شکل 1-3
بیت توازن ((P :
این بیت تنظیم توازن زوج , مقدار آن صفر یا یک می شود . در صورتیکه تعداد یکهای داخل آکومولاتور فرد باشد این بیت یک می شود تا مجموع یکها زوج باشد این یک روش ساده تشخیص تعداد فرد خطا در انتقال اطلاعات می باشد.برای مثال اگر آکومولاتور عدد 00000011 را در مبنای دو در خود داشته باشد چون در این مثال تعداد 1 ها دو عدد می باشد بنابراین بیت توازن صفر می شود تا تعداد یکها ی زوج باقی بماند.این بیت اکثرا در روتین های پورت سری استفاده می شود به طوری که اطلاعات با بیت توازن ارسال می شود و در موقع دریافت اطلاعات بیت توازن تست می گردد.
بیت پرچم سرریز یا OV :
این بیت با نام OVER FLOW یا سرریز نام دارد. اگر هنگام جمع یا تفریق حسابی نتیجه حاصل بزرکتر از 127 + یا کوچکتر از 127- شود سرریز اتفاق می افتد و بیت OV برابر 1 می شود.
بیت های انتخاب بانک ثبات :(RS0,RS1)
این دو بیت به منظور فعال کردن یکی از 4 بانک ثبات مورد استفاده قرار می گیرد.مقدار پیش فرض این 2 بیت 00 است که بانک ثبات 0 را فعال می کند.
بیت :FO
این بیت با نام پرجم صفر هم شناخت هشده است. اگر نتیجه یک عمل حسابی صفر شوداین بیت یک می شود.
بیت :AC
در هنگام انجام عملیات حسابی در صورتی که از بیت شماره 3 به شماره 4 رقن نقلی داشته باشیم در این صورت این بیت یک می شود.
بیت پرچم نقلی یا :CY
این بیت به دو منظور به کار می رود:
1- در مواقع محاسبات یعنی زمانی که عمل جمع انجام می شود اگر از بیت 7 رقم خارج شود بیت C یک می شود.
2- اگر در زمان تفریق از بیت 7 قرض گرفته شود در این صورت بیت C برابر یک می شود.
ثبات A:
این ثبات Accumulator یا انباره نامیده می شود. این ثبات همه منظوره است . بیشتر دستورات میکروکنترولر با این ثبات کار می کنند بنابراین ابتدا باید داده در این ثبات قرار بگیرد سپس عملیات انجام شود.
ثبات :B
ثبات یا آکومولاتور B در آدرس F0H حافظه قرار دارد و معمولا با ثبات A برای محاسبات ضرب و تقسیم استفاده می شود.
ثبات B را می توان به عنوان یک ثبات عمومی برای هر کاربرد دیگری نیز لستفاده نمود. علاوه بر این بیت های ثبات B آدرس پذیر و از آدرس F0H تا F7H می باشند لذا می توان با دستورات روی بیت , عملیات بر روی آنها انجام داد.
ثبات DPTR یا اشاره گر داده:
این ثبات یک ثبات 16 بیتی است که از 2 ثبات 8 بیتی با نامهای DPL,DPH ساخته شده است و به عنوان اشاره گر داده به کار می رود.ای ثبات برای دسترسی به حافظه کد و داده خارجی به کار می رود. به عنوان مثال دستورات زیر عدد 55H را در حافظه داده خارجی RAM می نویسند:
MOV A,#55H
MOV DPTR,#1000H
MOV @DPTR,A
اشاره گر پشته یا :SP
SP یک ثبات 8بیتی می باشد که آدرس اطلاعات بالای حافظه پشته را دارا می باشد . عملیات حافظه پشته شامل قرار دادن اطلاعات در بالای حافظه پشته ( با دستور ( PUSH یا برداشتن اطلاعات (با دستور (POP از بالای حافظه پشته می باشد.
هربار که اطلاعات در حافظه پشته قرار می گیرد ابتدا به محتوای SP یک واحد اضافه می شود و سپس اطلاعات در حافظه پشته نوشته می شود ((PUSH
هربار که اطلاعاتی از حافظه پشته خوانده می شود ( ( POPابتدا اطلاعات خوانده می شود و سپس یک واحد از SP کم می شود.
روش های آدرس دهی:
مبحث مهمی که در برنامه نویسی به زبان اسمبلی وجود دارد شیوه های آدرس دهی است .منظور از آدرس دهی روش دستیابی میکروکنترلر به اطلاعات است . روش های آدرس دهی مبدا و مقصد داده ها را تعیین می کند و اینکه در جریان انتقال داده ها از مقصد به مبدا چه عملیات بیتی انجام می شود .
در 8051 . هشت نوع آدرس دهی وجود دارد که عبارتند از:
1- آدرس دهی ثبات((Rejister Addresing
2- آدرس دهی مستقیم((Direct Addresing
3- آدرس دهی غیر مستقیم((Indirect Addresing
4- آدرس دهی فوری ((Immediate Addresing
5- آدرس دهی نسبی ( (Relative Addresing
6- آدرس دهی مطلق ((Absolute Addresing
7- آدرس دهی بلند ((Long Addresing
8- آدرس دهی اندیس دار ((Index Addresing
1- آدرس دهی ثبات:
در 8051 هشت ثبات با نام بانک ثبات وجود دارد که این ثبات ها به صورت تک تک با نامهای R0-R7 شناخته می شوند تعدادی از دستورالعمل های 8051 بر روی این ثباتها کار می کنند ابن دستورالعملها را دستورهای با آدرس دهی ثبات گویند.در دستورا ت آدرس دهی ثبات , سه بیت کم ارزشتر کد دستور , آدرس ثباتهای مذکور را مشخص می کند بنابراین کد اجرا و آدرس ثبات در یک بایت دستور قرار می گیرد.
زبان اسمبلی میکروکنترولر 8051 , آدرس دهی ثبات را با سمبل RN مشخص می کند که N بین 0 تا 7 می باشد.به عنوان مثال برای اضافه کردن محتوای ثبات R7 به آکومولاتور دستور زیر استفاده می شود:
ADD A,R7
کد اجرای این دستور 00101111 است که 5بیت پر ارزشتر یعنی 00101 دستور جمع ADD و سه بیت کم ارزش تر آن یعنی 111 ثبات R7 را مشخص می نماید.
مثال2: کد اجرای دستور زیر چیست و این دستور چه عملی انجام می دهد؟
MOV A,R7
فرم کلی دستور MOV به صورت زیر است:
منبع , مقصد MOV
اصولا 15 نوع دستور MOV وجود دارد که در اینجا نوع MOV A,Rn را بررسی می کنیم. کد باینری این دستور به صورت 11101rrr است که سه بیت کم ارزش تر , آدرس ثبات منبع را مشخص می کند . با قرار دادن آدرس R7 یعنی 111 در کد باینری به جای rrr خواهیم داشت 11101111 که کد EFH برای دستور مذکور حاصل می شود.دستور مذکور محتوای ثبات R7 را به آکومولاتور منتقل می کند.
آدرس دهی مستقیم:
همانطور که می دانیم هر بیت (8 بیت) از حافظه میکرو به وسیله عددی منحصر به فرد که شماره ردیف آن بیت است مشخص می شود , این عدد منحصر به فرد آدرس نام دارد. از این جهت می گوییم منحصر به فرد زیرا هیچ دو بیت از حافظه میکرو دارای یک آدرس نیستند.
لذا با استفاده از این آدرس می توان به کلیه مکانهای حافظه دسترسی داشت . آدرس دهی مستقیم از این آدرس استفاده می کند. علائه بر آدرس , بیشتر مکانهای حافظه دارای نام نیز هستند. برای مثال پورت یک هم دارای آدرس 90H است و هم نام P1 را دارد. استفاده از هر دو (نا