مقدمه»
با وجود اینکه بیش از بست سال از تولد ریز پردازنده نمی گذرد،تصور وسایل الکترونیکی و اسباب بازیهای امروزی بدون آن کار مشکلی است.در 1971 شریک انیتل،8080 را به عنوان اولین ریز پردازنده موفق عرضه کرد.مدت کوتاهی پس از آن،موتور ولا،RCA و سپس Mostechnologyو Zilog انواع مشابهی را به ترتیب به نامهای 6800،1801،6502،Z80 عرضه کردند.گرچه این مدارهای مجتمع (IC) به خودی خود فایده چندانی نداشتند اما به عنوان بخشی از یک کامپیوتر تک بورد(SBC) به جزء مرکزی فرآورده های مفیدی برای آموزش طراحی با ریز پردازنده ها تبدیل شدند.تز تیم SBC ها که به سرعت به آزمایشگاههای طراحی در کالج،دانشگاهها و شرکت های الکترونیک راه پیدا کردند می توان برای نمونه از D2 موتورولا،KIM-1 ساخت Mos technology و SDK-85 متعلق به شرکت انتیل نام برد.
میکروکنترلر قطعه ای شبیه به ریز پردازنده است.در 1976 انتیل 8748 را به عنوان اولین قطعه خانواده میکروکنترلرهای MCS-48TM معرفی کرد.8748 با 17000 ترانزیستور،در یک مدار مجتمع،شامل یک cpu، 1کیلوبایت EPROM، 64 بایت RAM، 27 پایه I/O و یک تایمر 8 بیتی بود.این IC و دیگر اعضای MCS-48TM که پس از آن آمدند خیلی زود به یک استاندارد صنعتی در کابردهای کنترل گرا تبدیل شدند.جایگزین کردن اجزاءالکترومکانیکی در فرآورده های مثل ماشین های لباسشویی و چراغ های راهنمایی از ابتدا کار،یک کاربرد مورد توجه برای این میکروکنترلرها بودند و همین طور باقی ماندند.دیگر فرآورده هایی که در آنها می توان میکروکنترلر را یافت عبارتند از اتومبیل ها،تجهیزات صنعتی،وسایل سرگرمی و ابزارهای جانبی کامپیوتر (افرادی که یک IBM PC دارند کافی است به داخل صفحه کلید نگاه کنند تا مثالی از یک میکروکنترلر را در یک طراحی با کمترین اجزاء ممکن ببینند)
توان ابعاد و پیچیدگی میکروکنترلر با اعلام ساخت 8051،یعنی اولین عضو خانواده میکروکنترلرهای MCS-51TM در 1980 توسط انیتل پیشرفت چشمگیری کرد.در مقایسه 8048 این قطعه شامل بیش از 60000 ترانزیستور،K4 بایت ROM، 128 بایت RAM، 32 خط I/O یک درگاه سریال و دو تایمر 16 بیتی است.که از لحاظ مدارات داخلی برای یک TC بسیار قابل ملاحظه است.امروزه انواع گوناگونی از این IC وجود دارند که به صورت بخاری این مشخصات را دو برابر کرده اند.شرکت زیمنس که دومین تولید کننده قطعات MCS-51TM است SAB80515 را به عنوان یک 8015 توسعه یافت در یک بسته 86پایه با شش درگاه I/O 8 بیتی،13 منبع وقفه و یک مبدل آنالوگ به دیجیتال با 8 کانال ورودی عرضه کرده است.خانواده 8051 به عنوان یکی از جامعترین و قدرتمندترین میکروکنترلرهای 8 بیتی شناخته شده و جایگاهش را به عنوان یک میکروکنترلر مهم برای سال های آینده یافته است.
یک سیستم کامپیوتری شامل یک واحد پردازش مرکزی (CPU) است که از طریق گذرگاه آدرس،گذرگاه داده و گذرگاه کنترل به حافظه قابل دستیابی تصادفی (RAM) و حافظه فقط خواندی (ROM) متصل می باشد.مدارهای واسطه گذرگاه های سیستم را به وسایل جانبی متصل می کنند.
واحد پردازش مرکزی
CPU،به عنوان «مغز» سیستم کامپیوتری،تمامی فعالیت های سیستم را اداره کرده و همه عملیات روی داده را انجام می دهد.اندیشه اسرار آمیز بودن CPU در اغلب موارد ناردست است زیرا این تراشه فقط مجموعه ای از مدارهیا منطقی است که بطور مداوم دو عمل انجام می دهند:واکنشی دستورالعمل ها و اجرای آنها،CPUتوانایی درک و اجرای دستورالعمل های را براساس مجموعه ای از کدهای دورویی دارد که هریک از این کدها نشان دهنده یک عمل ساده است.این دستورالعمل ها معمولاً حسابی (جمع،تفریق،ضرب و تقسیم)،منطقی (AND،OR،NOT و غیره)انتقال داده یا عملیات انشعاب هستند و یا مجموعه ای از کدهایی دروریی با نام مجموعه دستورالعمل ها نشان داده می شوند.
حافظه نیمه رسانا: RAM وROM
برنامه ها و داده ها در حافظه ذخیره می شوند.حافظه های کامپیوتر بسیار مشوعند و اجزای همراه آنها بسیار و تکنولوژی بطور دائم و پی در پی موانع را برطرف می کند.بگونه ای که اطلاع از جدیدترین پیشرفت ها نیاز به مطالعه جامع و مداوم دارد.حافظه هایی که به طور مستقیم توسط CPU قابل دستیابی می باشند،IC های (مدار مجتمع)نیمه رسانایی هستند که RAMو ROM نامیده می شوند.دو ویژگی RAM و ROMرا از هم متمایز سازد:اول آنکه RAM حافظه خواندنی /نوشتنی است.در حالیکه ROM حافظه خواندنی است و دوم آنکه RAM فرّار است(یعنی محتویات آن هنگام عبور ولتاژ تغذیه می شود)در حالی که ROM غیرفرّار است.
ابزارهای کنترل /نظارت
به کمک ابزارهای کنترل/نظارت در برخی نرم افزارها و روابط های الکترونیکی (دقیق)کامپیوترها می توانند کارهای کنترلی زیادی را بی وقفه،بدون خستگی و بسیارفراتر از توانایی انسان انجام دهند.
کاربردهایی نظیر کنترل حرارت یک ساختمان،محافظت از خانه، کنترل آسانسور،کنترل وسایل خانگی و حتی جوش دادن قطعات مختلف یک خودرو همگی با استفاده از این ابزارها امکان پذیر هستند.ابزارهای کنترل،ابزارهای خروجی یا عمل کننده هستند.آنها وقتی که با یک ولتاژ با جریان،تغذیه شوند می توانند بر جهان پیرامون خود اثر بگذارند(مثل موتورها مولدها).ابزارهای نظارت،ابزارهای ورودی یا مسگر هستند که با کمیت هایی نظیر حرارت،نور،فشار،حرکت و مانند آن،تحریک شده و آنها را به جریان یا ولتاژی که توسط CPU خوانده می شود تبدیل می کنند(مثل فتوترانزیستورها و ترمیستورها و سوئیچ ها).ولتاژ یا جریان توسط مدارهای واسطه، به یک داده دورویی تبدیل می وشد و یا برعکس و سپس نرم افزار،یک رابطه منطقی بین ورودی ها و جروجی ها برقرارمی کند.
مقایسه ریز پردازنده ها با میکروکنترلرها
پیش از این خاطرنشان شد که ریز پردازنده ها CPU هایی تشکیل تک تراشه هستند و در میکروکامپیوترها به کار می روند.پس فرق میکروکنترلرها با ریز پردازنده ها چیست؟با این سؤال از سه جنبه می توان برخورد کرد:معماری سخت افزار،کاربردهای و ویژگی های مجموعه دستورالعمل ها.
معمار سخت افزار
در حالی که زیز پردازنده یک CPU تک تراشه ای است،میکروکنترلر در یک تراشه واحد شامل یک CPUو بسیاری از مدرارات لازم برای یک سیستم میکروکامپیوتری کامل می باشد. علاوه بر CPU میکروکنترلرها شامل RAM و ROM یک رابطه سریال،یک رابط سریال،یک رابط موازی،تایمر و مدارات زمانبدی البته مقدار RAMروی تراشه حتی به میزان آن در یک سیستم میکروکامپیوتری کوچک هم نمی رسد اما آن طور که خواهیم دید این مسأله محدودیتی ایجاد نمی کند زیرا کاربردهای میکروکنترلر بسیار متفاوت است.یک ویژگی مهم میکروکنترلرها،سیستم وقفه موجود در داخل آنهاست.میکروکنترلرها به عنوان ابزار های کنترل گرا اغلب برای پاسخ بی درنگ به محرکهای خارجی (وقفه ها)مورد استفاده قرار می گیرند.یعنی باید در پاسخ به یک «اتفاقی» سریعاً یک فرآیند را معدق گذاره،به فرآیند دیگر بپردازند.باز شدن در یک اجاق مایکروویو مثالی است از یک اتفاق ممکن است باعث ایجاد یک وقفه در یک سیستم میکروکنترولی شود.البته اغلب ریز پردازنده ها می توانند سیستم های وقفه قدرتمندی را به اجرا بگذارند،اما برا این کار معمولاً نیاز به اجزای خارجی دارند.مدارات روی تراشه یک میکروکنترولر شامل تمام مدارات مورد نیاز برای بکارگیری وقفه های می باشد.
«کاربردها»
ریز پردازنده اغلب به عنوان CPU در سیستم های میکروکامپیوتری بکار می روند.این کاربرد دلیل طراحی آنها و جایی است که می توانند خود را به نمایش بگذارند.با این وجود میکروکنترلرها در طراحی های کوچک با کمترین اجزاء ممکن که فعالیت های کنتری گرا انجام می شد.یک میکروکنترلر می تواند در کاهش تعداد کل اجزاء کمک کند.آنچه که مورد نیاز است عبارت است از یک میکروکنترلر،تعداد کمی اجزاءپشتیبان و یک برنامه کنترلی در ROM میکروکنترلرها برای «کنترل» ابزارهای I/O در طراحی هایی با کمترین تعداد اجزاء ممکن مناسب هستند،اما ریزپردازنده ها برای «پردازش» اطلاعات در سیستم های کامپیوتری مناسبند.
«ویژگی های مجموعه دستورالعمل ها»
به علت تفاوت در کاربردها،مجموعه دستورالعمل های مورد نیاز برای میکروکنترلرها تاحدودی با ریز پردازنده ها تفاوت دارد.مجموعه دستورالعمل های ریز پردازنده ها بر عمل پردازش تمرکز یافته اند و در نتیجه دارای روش های آدرس دهی قدرتمند به همراه دستورالعمل هایی برای انجام عملیات روی حجم زیاد داده می باشند. دستورالعمل های روی چهار بیت ها،بایتها،کلمه ها یا حتی کلمه های مضاعف عمل می کنند.روش های آدرس دهی با استفاده از فاصله های نسبی و اشاره گر های آدرس امکان دسترسی به آرایه های بزرگ داده را فراهم می کنند.حالت های افزایش یک واحدی اتوماتیک و کاهش یک واحدی اتوماتیک حرکت گام به گام روی بایت ها،کلمه ها کلمه های مضاعف را درآرایه ها آسان می کنند.دستورالعمل هیا رمزی نمی توانند در داخل برنامه کاربرد اجرا شوند وبسیاری ویژگی های دیگر از این قبیل.از طرف دیگر میکروکنترلرها مجموعه دستورالعمل هایی مناسب برای کنترل ورودی ها و خروجی ها دارند.ارتباط با بسیاری از ورودی ها و خروجی ها تنها نیازمند یک بیت است.برای مثال یک موتور می تواند توسط یک سیم پیچ که توسط یک درگاه خروجی یک بیتی انرژی دریافت می کند،روشن و خاموش شود.میکروکنترلرها دستورالعمل هایی برای 1 کردن و0کردن بیت های جداگانه دارند و دیگر عملیات روی بیت ها مثل AND،OR یا XOR کردن منطقی بیت ها،پرش در ثورت ایا پاک بودن یک بیت و مانند آن ها را نیز انجام می دهند.این ضمیمه مفید بندرت در ریزپردازنده یافت می شود زیرا آنها معمولاً برای کار روی بیت ها یا واحدهای بزرگتر داده طراحی می شوند.برای کنترل و نظارت بر ابزارها (شاید توسط یک رابط تک بیتی)،میکروکنترلرها مدارات داخلی و دستورالعمل هایی برای عملیات ورودی/خروجی،زمان بندی انفاقات و فعال کردن و تعیین اولویت وقفه های ناشی از محرک های خارجی دارند.ریزپردازنده ها اغلب به مدارات اضافی (IC های رابط سریال،کنترل کننده های وقفه،تایمرها و غیره)برای انجام اعمال مشابه نیازدارند.با این همه در قدرت پردازش محض،یک میکروکنترلر هرگز به ریزپردازنده نمی رسد(اگر در بقیه موارد یکسان باشند)زیرا بخش عمده «فضای واقعی».IC میکروکنترلر صرف تهیه امکانات روی تراشه می شود البته به قیمت کاهش توان پردازش.از آنجا که فضاهای واقعی در تراشه برای میکروکنترلر اهیمت دارند دستورالعمل ها بایدبی نهایت فشرده باشند و اساساً در یک بایت پیاده سازی شوند.یکی از نکات در طراحی جادادن برنامه کنترلی در داخل ROM روی تراشه است.زیرا افزودن حتی یک ROM خارجی هزینه نهایی تولید را بسیار افزایش می دهد.به ریزدرآوردن فشرده برای مجموعه دستورالعمل های میکروکنترلر اساسی است،در حالیکه ریزپردازنده بندرت دارای ویژگی می باشند،روش های آدرس دهی قدرتمند آنها باعث به رمز درآوردن غیرفشرده دستورالعمل ها می شود.