اولین خانواده میکرو کنترلر ها با نام MCS-51 توسط شرکت اینتل طراحی و ساخته شد .بعد ها شرکت های دیگری تحت مجوز اینتل شروع به تولید IC های میکرو کنترلر کردند . از خانواده MCS-51 اولین عضو 8051 می باشد مشخصات این IC به صورت زیر است:
1 - 4 کیلو بایت ROM
2- 128 بایت RAM
3 - 4 پورت ورودی و خروجی 8 بیتی
4 - دو تایمر/شمارنده 16 بیتی
5 - رابط سریال برای ارتیاط با دیگر وسایل
6 - 64 کیلو بایت حافظه کد خارجی و 64 کیلو بایت هم حافظه داده خارجی را می تواند آدرس دهی کند
7 - پردازنده بولی برای انجام اعمال بیتی
8 - 210 مکان بیت آدرس پذیر
پایه ها :
این Ic همانگونه که در شکل می بینید دارای 40 پایه می باشد پایه 20 به زمین و پایه شماره 40 به منبع تغذیه 5 ولت متصل می شود.این میکرو کنترلر دارای 4 پورت I/O (ورودی - خروجی ) 8بیتی می باشد که 32 پایه از 40 پایه را به خود اختصاص داده اند به جز پورت شماره 1 سه پورت دیگر دو کاره هستند و علاوه بر عمل ورودی - خروجی کار دیگری را نیز بر عهده دارند.
پورت شماره صفر:
این پورت پایه های شماره 32 تا 39 را شامل می شود .در برنامه های کوچک عموما وظیفه ورودی و خروجی داده را بر عهده دارد اما در پروژه های بزرگ بایت پایین آدرس و داده را انتقال می دهد . این پورت به عنوان آدرس و داده مالتی پلکس عمل می کند که در استفاده از حافظه کد و داده خارجی کاربرد دارد .
پورت شماره 2:
(پایه های شماره 21 تا 28) همانند پورت شماره صفر یک درگاه دو منظوره است و بایت بالای آدرس را در استفاده از حافظه خارجی انتقال می دهد.
پورت شماره 3:
علاوه بر ورودی و خروجی بودن ، هر یک از پایه های آن دارای عملکرد بخصوصی هستند که در جدول زیر آمده است .
PSEN:
(پایه شماره 29) این پایه فعال صفر است ( یعنی در صورتی که به این پایه صفر منطقی بدهیم عملکرد تعریف شده برای این پایه انجام میشود).PSEN مخفف Program Storage Enable است در صورتی که از حافظه خارجی برای کد استفاده کنیم این پایه به پایه OE ( Output Enable) EPROM حاوی کد متصل می شود و میکرو کنترلر بدین ترتیب می تواند برنامه را از حافظه EPROM بخواند .
ALE:
(پایه شماره 30) این پایه هم فعال صفر است .مخفف Address Latch Enable می باشد در توضیح پورت شماره صفر گفتیم که این پورت به عنوان آدرس و داده مالتی پلکس استفاده می شود. هنگامی که ALE فعال باشد پورت شماره صفر در نیم سیکل اول آدرس را نگه می دارد و در نیم سیکل بعدی حافظه داده را نگه می دارد به عبارت دیگر این پورت در نیم سیکل اول به عنوان گذرگاه آدرس و در نیم سیکل بعدی به عنوان گذرگاه داده عمل می کند .
EA:
(پایه 31 )فعال صفرو مخفف External Access می باشد این پایه به صفر ولت یا 5 ولت متصل می شود . در صورتی که به 5 ولت وصل شود برنامه از ROM داخلی میکرو کنترلر اجرا می شود و در صورتی که به صفر ولت متصل سود برنامه از EPROM خارجی اجرا می شود.
RST:
( پایه 9) سیستم را رست میکند . در صورتی که این پایه 5 ولت به آن اعمال شود برنامه از اولین دستور مجددا اجرا می شود . این دکمه مشابه دکمه ریست کامپیوتر می باشد .
حافظه ی8051:
بانک های ثبات :
8051 دارای 8 ثبات با نام های R0-R7 می باشد دستوراتی که از این ثبات ها استفاده می کنند نسبت به دستورات مشابه خود که از انواع دیگر آدرس دهی استفاده می کنند دارای تعداد بایت کمتر و سرعت بیشتری هستند بنابراین در صورتی که از داده ای به طور متناوب در برنامه استفاده می کنیم بهتر است که این داده در یکی از ثبات های بانک ثبات قرار گیرد .
در 8051 ، 4 بانک ثبات وجود دارد که در هر لحظه از زمان می توان فقط یکی از این بانکها را فعال و از آن استفاده نمود .برای فعال کردن یک بانک ثبات از دو بیت با نامهای PSW.3, PSW.4 استفاده می کنیم ان دو بیت جزئ ثبات PSW هستند.
ثبات PSW:
مخفف Program status word یا کلمه وضعیت سیستم است . این ثبات در هر سیکل ماشین بسته به وضعیت و جواب برنامه تغییر می کند و برنامه نویس می تواند بر اساس این تغییرات منطق برنامه را تغییر دهد .PSW مشابه Flag های ریز پردازنده های سیستم های میکرو کامپیوتری می باشد.
بیت P:
این بیت برای تنظیم توازن زوج مقدار آن صفر یا یک می شود.در صورتی که تعداد یک های داخل Accumulator فرد باشد این بیت یک می شود تا مجموع یک ها زوج باشد این یک روش ساده تشخیص تعداد فرد خطا در انتقال اطلاعات می باشد. برای مثال اگر Accumulator عدد 00000011 را در مبنای دو در خود داشته باشد چون در این مثال تعداد 1 ها دو عدد می باشد بنابراین بیت توازن صفر می شود تا تعداد یک ها زوج باقی بماند .
بیت OV:
این بیت با نام Over flow (سر ریز ( نام دارد .اگر هنگام جمع یا تفریق حسابی (اعداد علامتدار) نتیجه از +127 بیشتر یا از -127 کمتر شود این بیت 1 می شود.
بیت RS1,RS0 :
این دو بیت به منظور فعال کردن یکی از چهار بانک ثبات مورداستفاده قرار می گیرد.مقدار پیش فرض این دو بیت 00 است که بانک ثبات صفر را فعال می کند .
بیت F0:
این بیت با نام پرچم صفر هم شناخته شده است .اگر نتیجه ی یک عمل حسابی صفر شود این بیت یک می شود.
بیت AC:
(بیت نقلی کمکی) در هنگام انجام عملیات حسابی در صورتی که از بیت شماره 3 به شماره 4 رقم نقلی داشته باشیم در این صورت این بیت یک می شود .
بیت CY :
(بیت نقلی) اگر در طول عملیات حسابی از بیت 7 رقم نقلی به بیت بالا تر داشته باشیم این بیت یک می باشد .
ثبات A:
Accumulator یا انباره نامیده می شود.این ثبات همه منظوره است بیشتر دستورات میکرو کنترلر با این ثبات کار می کند .بنابراین ابتدا باید داده در این ثبات قرار گیرد سپس عملیات انجام شود.
ثبات B:
جزو ثبات های عمومی است برای انجام عملیات ضرب و تقسیم به همراه ثبات A به کار می رود.
ثبات DPTR ::
این ثبات یک ثبات 16 بیتی است که از دو ثبات 8 بیتی با نامهای DPL و DPH ساخته شده است و به عنوان اشاره گر داده به کار می رود در هنگام استفاده از حافظه داده خارجی کاربرد این ثبات را خواهیم دید.
بقیه ثبات ها مانند ثبات های تایمر و ثبات های وقفه و سریال و... در مقاله های مربوط به مبحث خود جداگانه بررسی می شوند.
برای کار با میکرو کنترلر به چه چیزی احتیاج داریم؟
اولین چیزی که در یک پروژه میکرو کنترلری برجسته تر به نظر می رسد کد نویسی است .یک برنامه نویس میکرو کنترلر باید با زبان اسمبلی آشنا باشد . البته کلمه " اسمبلی " یک کلمه عمومی است و به کلیه زبانهای سطح پایین (low level) گفته می شود در حالی که هر میکرو کنترلری یا میکرو پروسسوری اسمبلی مختص به خود را دارد یعنی اسمبلی 8051 با اسمبلی Z80 متفاوت است در میکرو پروسسور ها هم تفاوت زیادی بین اسمبلی نسل های میکرو پروسسور ها وجود دارد اسمبلی Z80 با اسمبلی پنتیوم تفاوت دارد به زبان دیگر چون معماری میکرو ها با هم متفاوت است در نتیجه اسمبلی آنها هم با هم متفاوت است .البته کسی که با اسمبلی یک میکرو آشنا باشد برنامه نویسی در یک میکروی دیگر برایش زیاد دشوار نیست . زبان های دیگری هم برای برنامه نویسی میکرو کنترلر استفاده می شوند مانند C و pascal البته این زبان ها هر کدام در یک کامپایلر به خصوص کار می کنند برای مثال کامپایلر keil هر دو زبان اسمبلی و C را پشتیبانی می کند .به هر حال آشنایی با زبان برنامه نویسی میکرو کنترلر موضوع مقاله بعدی ما خواهد بود .
شکل زیر نرم افزار keil را نشان می دهد
با فرض اینکه ما با زبان اسمبلی 8051 آشنا هستیم برنامه خود را در ادیتور مانند keil یا Notepad می نویسیم و سپس به وسیله یک کامپایلر مانند ASM51 که کامپایلر اینتل برای 8051 است برنامه را به فایل HEX تبدیل می کنیم .( keil خود دارای کامپایلر است و فایل Hex را تولید می کند) فایل Hex درست مانند فایلهای EXE در کامپیوتر است یعنی یک فایل اجرایی برای میکرو کنترلر است . بعد از کامپایل کردن باید برنامه توسط یک پرو گرامر
( وسیله ای که IC8051 را برنامه ریزی می کند) بر روی IC قرار گیرد