۱-۱- مقدمه
گر چه كامپيوترها تنها چند دهه اي است كه با ما همراهند، با اين حال تأثير عميق آنها بر زندگي ما با تأثير تلفن ، اتومبيل و تلويزيون رقابت مي كند. همگي ما حضور آنها را احساس مي كنيم، چه برنامه نويسان كامپيوتر و چه دريافت كنندگان صورت حساب هاي ماهيانه كه توسط سيستم هاي كامپيوتري بزرگ چاپ شده و توسط پست تحويل داده مي شود. تصور ما از كامپيوتر معمولا داده پردازي است كه محاسبات عددي را بطور خستگي ناپذيري انجام مي دهد.

ما با انواع گوناگوني از كامپيوترها برخورد مي كنيم كه وظايفشان را زيركانه و بطرزي آرام، كارا و حتي فروتنانه انجام مي دهند و حتي حضور آنها اغلب احساس نمي شود. ما كامپيوترها را به عنوان جزء مركزي بسياري از فرآورده هاي صنعتي و مصرفي از جمله،‌در سوپرماركت ها داخل صندوق هاي پول و ترازوها؛ در خانه، در اجاق ها، ماشين هاي لباسشويي، ساعت هاي داراي سيستم خبردهنده و ترموستات ها؛ در وسايل سرگرمي همچون اسباب بازي ها، VCR ها، تجهيزات استريو و وسايل صوتي؛ در محل كار در ماشين هاي تايپ و فتوكپي؛ و در تجهيزات صنعتي مثل مته هاي فشاري و دستگاههاي حروفچيني نوري مي يابيم. در اين مجموعه ها كامپيوترها وظيفه «كنترل» را در ارتباط با “دنياي واقعي” ، براي روشن و خاموش كردن وسايل و نظارت بر وضعيت آنها انجام مي هند. ميكروكنترلرها (برخلاف ميكروكامپيوترها و ريزپردازنده ها ) اغلب در چنين كاربردهايي يافت مي شوند.

با وجود اين كه بيش از بيست سال از تولد ريزپردازنده نمي گذرد، تصور وسايل الكترونيكي و اسباب بازيهاي امروزي بدون آن كار مشكلي است. در ۱۹۷۱ شركت اينتل ۸۰۸۰ را به عنوان اولين ريزپردازنده موفق عرضه كرد. مدت كوتاهي پس از آن، موتورولا، RCA و سپس MOS Technology و zilog انواع مشابهي را به ترتيب به نامهاي ۶۸۰۰ ، ۱۸۰۱ ، ۶۵۰۲ و Z80 عرضه كردند. گر چه اين مدارهاي مجتمع IC) ها ) به خودي خود فايده چنداني نداشتند اما به عنوان بخشي از يك كامپيوتر تك بورد (SBC) ، به جزء مركزي فرآورده هاي مفيدي براي آموزش طراحي با ريزپردازنده ها تبديل شدند.
از اين SBC ها كه بسرعت به آزمايشگاههاي طراحي در كالج ها،‌دانشگاهها و شركت هاي الكترونيك راه پيدا كردند مي توان براي نمونه از D2 موتورولا، KIM-1 ساخت MOS Technology و SDK-85 متعلق به شركت اينتل نام برد.

ميكروكنترلر قطعه اي شبيه به ريزپردازنده است. در ۱۹۷۶ اينتل ۸۷۴۸ را به عنوان اولين قطعه خانواده ميكروكنترلرهاي MCS-48TM معرفي كرد. ۸۷۴۸ با ۱۷۰۰۰ ترانزيستور در يك مدار مجتمع ،‌شامل يك CPU ،‌۱ كيلوبايت EPROM ، ۲۷ پايه I/O و يك تايمر ۸ بيتي بود. اين IC و ديگر اعضاي MCS-48TM كه پس از آن آمدند، خيلي زود به يك استاندارد صنعتي در كاربردهاي كنترل گرا تبديل شدند. جايگزين كردن اجزاء الكترومكانيكي در فرآورده هايي مثل ماشين هاي لباسشويي و چراغ هاي راهنمايي از ابتداي كار، يك كاربرد مورد توجه براي اين ميكروكنترلرها بودند و همين طور باقي ماندند. ديگر فرآورده هايي كه در آنها مي توان ميكروكنترلر را يافت عبارتند از اتومبيل ها،‌تجهيزات صنعتي، وسايل سرگرمي و ابزارهاي جانبي كامپيوتر(افرادي كه يك IBM PC دارند كافي است به داخل صفحه كليد نگاه كنند تا مثالي از يك ميكروكنترلر را در يك طراحي با كمترين اجزاء ممكن ببينند).
توان، ابعاد و پيچيدگي ميكروكنترلرها با اعلام ساخت ۸۰۵۱ ، يعني اولين عضو خانوادة‌ميكروكنترلرهاي MCS-51TM در ۱۹۸۰ توسط اينتل پيشرفت چشمگيري كرد. در مقايسه با ۸۰۴۸ اين قطعه شامل بيش از ۶۰۰۰۰ ترانزيستور ، K4 بايت ROM، ۱۲۸ بايت RAM ،‌۳۲ خط I/O ، يك درگاه سريال و دو تايمر ۱۶ بيتي است. كه از لحاظ مدارات داخلي براي يك IC بسيار قابل ملاحظه است، امروزه انواع گوناگوني از اين IC وجوددارند كه به صورت مجازي اين مشخصات را دوبرابر كرده اند. شركت زيمنس كه دومين توليد كنندة‌قطعات MCS-51TM است SAB80515 را به عنوان يك ۸۰۵۱ توسعه يافته در يك بستة ۶۸ پايه با شش درگاه I/O 8 بيتي، ۱۳ منبع وقفه، و يك مبدل آنالوگ به ديجيتال با ۸ كانال ورودي عرضه كرده است. خانواده ۸۰۵۱ به عنوان يكي از جامعترين و قدرتمندترين ميكروكنترلرهاي ۸ بيتي شناخته شده و جايگاهش را به عنوان يك ميكروكنترلر مهم براي سالهاي آينده يافته است.

اين كتاب درباره خانواده ميكروكنترلرهاي MCS-51TM نوشته شده است فصل هاي بعدي معماري سخت افزار و نرم افزار خانواده MCS-51TM را معرفي مي كنند و از طريق مثالهاي طراحي متعدد نشان مي دهند كه چگونه اعضاي اين خانواده مي توانند در طراحي هاي الكترونيكي با كمترين اجزاء اضافي ممكن شركت داشته باشند.
در بخش هاي بعدي از طريق يك آشنايي مختصر با معماري كامپيوتر، يك واژگان كاري از اختصارات و كلمات فني كه در اين زمينه متداولند (و اغلب با هم اشتباه مي شوند) را ايجاد خواهيم كرد. از آنجا كه بسياري اصطلاحات در نتيجة تعصب شركت هاي بزرگ و سليقه مؤلفان مختلف دچار ابهام شده اند،‌روش كار ما در اين زمينه بيشتر عملي خواهد بود تا آكادميك. هر اصطلاح در متداولترين حالت با يك توضيح ساده معرفي شده است.

فصل اول

۲-۱ اصطلاحات فني
يك كامپيوتر توسط دو ويژگي كليدي تعريف مي شود: (۱) داشتن قابليت برنامه ريزي براي كاركردن روي داده بدون مداخله انسان و (۲) توانايي ذخيره و بازيابي داده . عموماً يك سيستم كامپيوتري شامل ابزارهاي جانبي براي ارتباط با انسان ها به علاوه برنامه هايي براي پردازش داده نيز مي باشد. تجهيزات كامپيوتر و سخت افزار،‌و برنامه هاي آن نرم افزار نام دارند. در آغاز اجازه بدهيد كار خود را با سخت افزار كامپيوتر آغاز مي كنيم.
نبود جزئيات در شكل عمدي است و باعث شده تا شكل نشان دهنده كامپيوترهايي در تمامي اندازه‌ها باشد. همانطور كه نشان داده شده است،يك سيستم كامپيوتري شامل يك واحد پردازش مركزي (CPU) است كه ازطريق گذرگاه آدرس ، ‌گذرگاه داده و گذرگاه كنترل به حافظه قابل دستيابي تصادفي RAM) وحافظه فقط خواندني (ROM) متصل مي باشد. مدارهاي واسطه گذرگاههاي سيستم را به وسايل جانبي متصل مي كنند.

۳-۱ واحد پردازش مركزي
CPU ، به عنوان “مغز” سيستم كامپيوتري، تمامي فعاليت هاي سيستم را اداره كرده و همه عمليات روي داده را انجام مي دهد. انديشة اسرار آميز بودن CPU در اغلب موارد نادرست است زيرا اين تراشه فقط مجموعه اي از مدارهاي منطقي است كه بطور مداوم دو عمل را انجام مي دهند. واكشي دستورالعمل ها، و اجراي آنها. CPU توانايي درك و اجراي دستورالعمل ها را براساس مجموعه اي از كدهاي دودويي دارد كه هر يك از اين كدها نشان دهنده يك عمل ساده است. اين دستورالعمل ها معمولا حسابي (جمع، تفريق، ضرب و تقسيم)، منطقي (NOT, OR, AND و غيره) انتقال داده يا عمليات انشعاب هستند و يا مجموعه اي از كدهاي دودويي با نام مجموعه دستورالعمل ها نشان داده مي شوند.

مجموعه اي از ثباتها را براي ذخيره سازي موقت اطلاعات، يك واحد عمليات حسابي و منطقي (ALU) براي انجام عمليات روي اين اطلاعات،‌يك واحد كنترل و رمزگشايي دستورالعمل (كه عملياتي را كه بايد انجام شود تعيين مي كند و اعمال لازم را براي انجام آنها شروع مي نمايد) و دو ثبات اضافي را هم دارد.
ثبات دستور العمل (IR) كد دودويي هر دستورالعمل را در حال اجرا نگه مي دارد و شمارنده برنامه (PC) آدرس حافظه دستورالعمل بعدي را كه بايد اجرا شود نشان مي‌دهد.

۱- واكشي يك دستورالعمل از RAM سيستم يكي از اساسي ترين اعمالي است كه توسط CPU انجام مي شود و شامل اين مراحل است: (الف) محتويات شمارندة برنامه در گذرگاه آدرس قرار مي گيرد (ب) يك سيگنال كنترل READ فعال مي شود (پ) داده (كد عملياتي دستورالعمل) از RAM خوانده مي شود و روي گذرگاه قرار مي گيرد (ت) كد عملياتي در ثبات داخلي دستورالعمل CPU ذخيره مي شود و (ث) شمارنده برنامه يك واحد افزايش
مي¬يابد تا براي واكشي بعدي از حافظه آماده شود.

۲- مرحلة‌ اجرا مستلزم رمزگشايي كد عملياتي و ايجاد سيگنال هاي كنترلي براي گشودن ثبات هاي دروني به داخل و خارج از ALU است. همچنين بايد به ALU براي انجام عمليات مشخص شده فرمان داده شود. به علت تنوع زياد عمليات ممكن، اين توضيحات تا حدي سطحي مي باشند و در يك عمليات ساده مثل افزايش يك واحدي ثبات مصداق دارند. دستورالعمل هاي پيچيده تر نياز به مراحل بيشتري مثل خواندن بايت دوم و سوم به عنوان داده براي عمليات دارند.
يك سري از دستورالعمل ها كه براي انجام يك وظيفه معنادار تركيب شوند برنامه يا نرم افزار ناميده مي شود، و نكته واقعاً‌اسرارآميز در همين جا نهفته است. معيار اندازه گيري براي انجام درست وظايف، بيشتر كيفيت نرم افزار است تا توانايي تحليل CPU سپس برنامه ها CPU را راه اندازي مي كنند و هنگام اين كار آنها گهگاه به تقليد از نقطه ضعف هاي نويسندگان خود، اشتباه هم مي كنند. عباراتي نظير “كامپيوتر اشتباه كرد “ گمراه كننده هستند. اگر چه خرابي تجهيزات غير قابل اجتناب است اما اشتباه در نتايج معمولا نشاني از برنامه هاي ضعيف يا خطاي كاربر مي باشد.

۴-۱ حافظه نيمه رسانا: RAM ROM
برنامه ها و داده در حافظه ذخيره مي شوند. حافظه هاي كامپيوتر بسيار متنوعند و اجراي همراه آنها بسيار، و تكنولوژي بطور دائم و پي در پي موانع را برطرف ميكند، بگونه اي كه اطلاع از جديدترين پيشرفت ها نياز به مطالعه جامع و مداوم دارد. حافظه هايي كه به طور مستقيم توسط CPU قابل دستيابي مي باشند،‌IC هاي (مدارهاي مجتمع) نيمه رسانايي هستند كه RAM و ROM ناميده مي شوند دو ويژگي RAM و ROM را از هم متمايز مي سازد: اول آن كه RAM حافظه خواندني / نوشتني است در حاليكه ROM حافظه فقط خواندني است و دوم آن كه RAM فرار است (يعني محتويات آن هنگام نبود ولتاژ تغذيه پاك مي شود) در حاليكه ROM غير فرار مي باشد.
اغلب سيستم هاي كامپيوتري يك ديسك درايو و مقدار اندكي ROM دارند كه براي نگهداري روال هاي نرم افزاري كوتاه كه دائم مورد استفاده قرار مي گيرند و عمليات ورودي / خروجي را انجام مي دهند كافي است. برنامه هاي كاربران و داده، روي ديسك ذخيره مي گردند و براي اجرا به داخل RAM بار مي شوند. با كاهش مداوم در قيمت هر بايت RAM ، سيستم هاي كامپيوتري كوچك اغلب شامل ميليون ها بايت RAM مي باشند.

۵-۱ گذرگاهها : آدرس،‌ داده و كنترل
يك گذرگاه عبارت است از مجموعه اي از سيم ها كه اطلاعات را با يك هدف مشترك حمل مي كنند. امكان دستيابي به مدارات اطراف CPU توسط سه گذرگاه فراهم مي‌شود: گذرگاه آدرس، گذرگاه داده و گذرگاه كنترل. براي هر عمل خواندن يا نوشتن،‌CPU موقعيت داده (يا دستورالعمل) را با قراردادن يك آدرس روي گذرگاه آدرس مشخص مي كند و سپس سيگنالي را روي گذرگاه كنترل فعال مي نمايد تا نشان دهد كه عمل مورد نظر خواندن است يا نوشتن. عمل خواندن، يك بايت داده را از مكان مشخص شده در حافظه بر مي دارد و روي گذرگاه داده قرار مي دهد. CPU داده را مي خواند و در يكي از ثبات هاي داخلي خود قرار مي دهد. براي عمل نوشتن CPU داده را روي گذرگاه داده مي گذارد. حافظه، تحت تأثير سيگنال كنترل، عمليات را به عنوان يك سيكل نوشتن، تشخيص مي دهد و داده را در مكان مشخص شده ذخيره مي كند.

اغلب، كامپيوترهاي كوچك ۱۶ يا ۲۰ خط آدرس دارند. با داشتن n خط آدرس كه هر يك مي توانند در وضعيت بالا (۱) يا پايين (۰) باشند، مكان دستيابي است. بنابراين يك گذرگاه آدرس ۱۶ بيتي مي تواند به مكان، دسترسي داشته باشد و براي يك آدرس ۲۰ بيتي مكان قابل دستيابي است. علامت اختصاري K (براي كيلو) نماينده مي باشد، بنابراين ۱۶ بيت مي تواند مكان را آدرس دهي كند در حاليكه ۲۰ بيت مي تواند (يا Meg 1) را آدرس دهي نمايد.
گذرگاه داده اطلاعات را بين CPU و حافظه يا بين CPU و قطعات I/O منتقل مي كند. تحقيقات دامنه داري كه براي تعيين نوع فعاليت هايي كه زمان ارزشمند اجراي دستورالعمل ها را در يك كامپيوتر صرف مي كنند، انجام شده است نشان مي دهد كه كامپيوترها دوسوم وقتشان را خيلي ساده صرف جابجايي داده مي كنند. از آن جا كه عمدة عمليات جابجايي بين يك ثبات CPU و RAM يا ROM خارجي انجام مي شود تعداد خط هاي (يا پهناي) گذرگاه داده در كاركرد كلي كامپيوتر اهميت شاياني دارد. اين محدوديت پهنا، يك تنگنا به شمار مي رود: ممكن است مقادير فراواني حافظه در سيستم وجود داشته باشد و CPU از توان محاسباتي زيادي برخوردار باشد اما دسترسي به داده – جابجايي داغده بين حافظه و CPU از طريق گذرگاه داده – توسط پهناي گذرگاه داده محدود مي شود.
به علت اهميت اين ويژگي ، معمول است كه يك پيشوند را كه نشان دهنده اندازه اين محدوديت است اضافه مي كنند. عبارت “كامپيوتر ۱۶ بيتي” به كامپيوتري با ۱۶ خط در گذرگاه داده اشاره مي كند. اغلب كامپيوترها در طبقه بندي ۴ بيت، ۸ بيت ، ۱۶ بيت يا ۳۲ بيت قرار مي گيرند و توان محاسباتي كلي آنها با افزايش پهناي گذرگاه داده، افزايش مي يابد.

توجه داشته باشيد كه گذرگاه داده يك گذرگاه دو طرفه و گذرگاه آدرس، يك گذرگاه يك طرفه مي باشد. اطلاعات آدرس هميشه توسط CPU فراهم مي شود حاليكه داده ممكن است در هر جهت،‌بسته به اينكه عمليات خواندن مورد نظر باشد يا نوشتن، جابجا شود . همچنين توجه داشته باشيد كه عبارت “داده” در مفهوم كلي بكار رفته است يعني اصطلاعاتي كه روي گذرگاه داده جابجا مي شود و ممكن است دستورالعمل هاي يك برنامه، آدرس ضميمه شده به يك دستورالعمل يا داده مورد استفاده توسط برنامه باشد.

گذرگاه كنترل تركيب درهمي از سيگنال ها است،‌كه هر يك نقش خاصي در كنترل منظم فعاليت هاي سيستم دارند. به عنوان يك قاعده كلي،‌سيگنال هاي كنترل سيگنال هاي زمان بندي هستند كه توسط CPU براي همزمان كردن جابجايي اطلاعات روي گذرگاه آدرس و داده ايجاد مي شوند. اگر چه معمولا سه سيگنال مثل WRITE , READ, CLOCK وجوددارد، براي انتقال اساسي داده بين CPU و حافظه ، نام و عملكرد اين سيگنال ها بطور كامل بستگي به نوع CPU دارد. براي جزئيات بيشتر در اين موارد بايد به برگة اطلاعات سازندگان مراجعه كرد.

۶-۱ ابزارهاي ورودي / خروجي
ابزارهاي I/O يا “ابزارهاي جانبي كامپيوتر” مسيري براي ارتباط بين سيستم كامپيوتري و “دنياي واقعي” فراهم مي كنند. بدون ابزارهاي جانبي، سيستم هاي كامپيوتري به ماشين هاي درون گرايي تبديل مي شوند كه استفاده اي براي كاربران خود ندارند. سه دسته از ابزارهاي I/O عبارتند از ابزارهاي ذخيره سازي انبوه، ابزارهاي رابط با انسان و ابزارهاي كنترل / نظارت .

۱-۶-۱ ابزارهاي ذخيره سازي انبوه
ابزارهاي ذخيره سازي انبوه نيز مثل RAM ها و ROM هاي نيمه رسانا جزو نقش آفرينان عرصه تكنولوژي حافظه هستند كه بطور دائم در حال رشد و بهبود است. آنچنان كه از نام آنها بر مي آيد اين ابزارها مقادير متنابهي اطلاعات (برنامه يا داده) را نگهداري مي كنند و اين حجم از اطلاعات به هيچ وجه در RAM با “حافظه اصلي” نسبتاً كوچك كامپيوتر جا نمي گيرد. اين اطلاعات پيش از اينكه در دسترس قرار بگيرد بايد به داخل حافظه اصلي باز شود. دسته بندي ابزارهاي ذخيره سازي انبوه برطبق سادگي دستيابي به اطلاعات،‌آنها را به دو دسته تقسيم مي كند ابزارهاي آماده كار و ابزارهاي بايگاني در روش ذخيره سازي آماده كار كه معمولا روي نوارهاي مغناطيسي يا ديسك هاي مغناطيسي انجام مي شود. اگر چه ديسك هاي نوري مثل ROM- CDها يا تكنولوژي WORM كه بتازگي ظهور كرده اند، ممكن است سمت گيري روش ذخيره سازي بايگاني را به علت قابليت اطمينان، ظرفيت بالا و قيمت پايين خود تغيير دهند.

۲-۶-۱ ابزارهاي رابط با انسان
يگانگي انسان و ماشين توسط مجموعه اي از ابزارهاي رابط با انسان تحقق مي يابد كه متداول ترين آنها عبارتند از پايانه هاي نمايش تصوير (VDT) و چاپگرها. اگر چه چاپگرها ابزارهاي صرفاً خروجي هستند كه براي چاپ كردن اطلاعات به كار مي روند ولي VDT ها در واقع از دو وسيله تشكيل شده اند زيرا شامل يك صفحه كليد به عنوان ورودي و يك CRT به عنوان خروجي مي باشند. يك رشتة‌ خاص در مهندسي به نام “ارگونوميك” يا “مهندسي فاكتورهاي انساني” به خاطر ضرورتي كه در طراحي اين ابزارهاي جابني با توجه به طبيعت انسان احساس مي شد،‌به وجود آمده است و هدف آن وفق دادن مشخصات انسان با ماشين هاي مورد استفاده او به شكلي مطمئن ، راحت و كارا مي باشد. در حقيقت تعداد شركت هايي كه اين دسته از ابزارهاي جانبي را توليد مي كنند بيشتر از شركت هاي توليد كننده كامپيوتر است. در هر سيستم كامپيوتري دست كم سه تا از اين ابزارها وجود دارد: صفحه كليد، CRT و چاپگر. از ديگر ابزارهاي رابط با انسان مي توان دستگيرة بازي ، قلم نوري،‌ماوس، ميكروفن و بلندگو را نام برد.

۳-۶-۱ ابزارهاي كنترل / نظارت
به كمك ابزارهاي كنترل / نظارت (و برخي نرم افزارها و رابط هاي الكترونيكي دقيق) كامپيوترها مي توانند كارهاي كنترلي زيادي را بي وقفه،‌بدون خستگي و بسيار فراتر از توانايي انسان انجام دهند.
كاربردهايي نظير كنترل حرارت يك ساختمان، محافظت از خانه، كنترل آسانسور، كنترل وسايل خانگي و حتي جوش دادن قطعات مختلف يك خودرو همگي با استفاده از اين ابزارها امكان پذير هستند.

ابزارهيا كنترل، ابزارهاي خروجي يا عمل كننده هستند. آنها وقتي كه با يك ولتاژ يا جريان، تغذيه شوند مي توانند بر جهان پيرامون خود اثر بگذارند (مثل موتورها و رله ها) ابزارهاي نظارت، ابزارهاي ورودي يا حسگر هستند كه با كميت هايي نظير حرارت،‌نور ، فشار، حركت و مانند آن، تحريك شده و آنها را به جريان يا ولتاژي كه توسط CPU خوانده مي شود تبديل مي كنند (مثل فتوترانزيستورها، ترميستورها و سوئيچ ها) ولتاژ يا جريان توسط مدارهاي واسطه، به يك دادة دودويي تبديل مي شود و يا برعكس و سپس نرم افزار، يك رابطة منطقي بين ورودي ها و خروجي ها برقرار ميك ند. سخت افزار و نرم افزار مورد نياز براي ارتباط اين ابزارها باميكروكنترلرها يكي از موضوعات عمدة اين كتاب مي باشد.

۷-۱ برنامه ها : بزرگ و كوچك
بحث اصلي ما بر سخت افزار سيستم هاي كامپيوتري با يك مرور گذرا بر نرم افزار يا برنامه هايي كه براي راه اندازي آنها لازم است متمركز گرديده است. توجه نسبي به سخت افزار در برابر نرم افزار در سالهاي اخير بطور چشمگير هزينة قطعات،‌توليد و تعمير و نگهداري سخت افزار كامپيوتر نسبت به هزينه نرم افزار بود، امروزه با تراشه هاي LSI هزينه اهي سخت افزاري، كمتر تعيين كننده هستند و كار پرزحمت و متمركز براي نوشتن، مستندسازي ، پشتيباني، بهنگام كردن و توزيع نرم افزار است كه بخش عمدة هزينة اتوماسيون يك فرآيند را با استفاده از كامپيوتر تشكيل مي دهد.
اكنون هنگام بررسي انواع مختلف نرم افزار است. سه سطح از نرم افزار را بين كاربر و سخت افزار به اين صورت است: نرم افزار كاربردي، سيستم عامل و زيرروال هاي ورودي/ خروجي.

در پايين ترين سطح، زير روال هاي ورودي/ خروجي بطور مستقيم سخت افزار سيستم را اداره مي كنند، مثل خواندن كاراكترها از صفحه كليد، نوشتن كاراكترها در CRT ،‌خواندن بلوك هاي اطلاعات از ديسك و غيره . از آن جا كه اين زيرروال ها ارتباط بسيار نزديكي با سخت افزار دارند توسط طراحان سخت افزار نوشته مي شوند و (معمولا) در ROM ذخيره مي گردند (به عنوان مثال مي توان از BIOS در IBM PC نام برد)
براي ايجاد كردن دسترسي نزديك برنامه نويسان به سخت افزار سيستم، شرايط صحيحي براي ورود و خروج زير روال هاي ورودي/ خروجي تعيين شده است. كافيست يك نفر ثبات هاي CPU را مقداردهي اوليه كرده و زير روال را فراخواني كند؛ در اينصورت عمليات مورد نظر انجام مي شود و نتايج در ثبات هاي CPU يا RAM سيستم قرار مي گيرد.

به عنوان مكملي براي زير روال هاي ورودي / خروجي ، ROM شامل يك برنامه شروع به كار است كه هنگام روشن شدن سيستم يا آغاز بكار مجدد آن بصورت دستي، اجرا مي شود. طبيعت غيرفرار ROM در اين مورد اهميت اساسي دارد،‌زيرا اين برنامه بايد هنگام روشن شدن سيستم وجود داشته باشد. “مديريت اعمال داخلي” مثل بررسي انتخاب ها،‌مقدار دهي اوليه به حافظه، انجام بررسي هايي به منظور عيب يابي و مانند آن، توسط برنامه آغازگر انجام مي شود. در پايان يك روال باركننده خودراه انداز اولين شيار (يك برنامه كوچك) را از ديسك به داخل RAM مي خواند و كنترل را به آن مي سپارد. سپس اين برنامه بخشي از سيستم عامل را كه در RAM مقيم است (يك برنامه بزرگ)، از ديسك مي خواند و كنترل را به آن مي سپارد و به اين ترتيب عمليات شروع به كار سيستم كامل مي شود و به عبارت ديگر“ سيستم خود را توسط راه اندازهاي خودش بالا مي آورد”.

سيستم عامل مجموعه بزرگي از برنامه هاي همراه با سيستم كامپيوتري است و مكانيسمي را براي دستيابي، مديريت و استفادة مؤثر از امكانات كامپيوتر فراهم ميكند. اين توانايي ها را در زبان فرمان و برنامه هاي مفيد سيستم عامل وجوددارند و به نوبه خود گسترش نرم افزارهاي كاربردي را آسان مي كنند. اگر نرم افزار كاربردي، خوب طراحي شده باشد كاربر بدون دانستن سيستم عامل و يا با داشتن اندكي دربارة ان، با كامپيوتر ارتباط متقابل برقرار مي كند. برقرار كردن يك ارتباط مؤثر، معني دار و مطمئن با كاربر يكي از مهمترين اهداف در طراحي نرم افزار كاربردي است.
۸-۱ ميكروها ، ميني ها و كامپيوترهاي مركزي
به عنوان يك نقطة شروع، كامپيوترها براساس اندازه و توان آنها با عنوان ميكروكامپيوترها، ميني كامپيوترها و كامپيوترهاي مركزي دسته بندي مي شوند. يك ويژگي كليدي ميكروكامپيوترها اندازه و بسته بندي CPU مي باشد كه از يك مدار مجتمع واحد – يعني يك ريزپردازنده تشكيل شده است. از طرف ديگر ميني كامپيوترها و كامپيوترهاي مركزي علاوه بر آن كه در برخي جزئيات معماري، پيچيده تر هستند، CPU هايي مشتمل بر چندين IC دارند كه از چند IC (در ميني كامپيوترها) تا چندين برد مدار متشكل از IC ها (در كامپيوترهاي مركزي) تغيير مي كند و اين براي بدست آوردن سرعت هاي بالا و توان محاسباتي كامپيوترهاي بزرگتر ضروري است.
ميكروكامپيوترهايي مثل Commodore Amiga , Aplle Macintosh , IBM PC يك ريزپردازنده را به عنوان CPU بكار برده اند. ROM, RAM و مدارهاي واسطه به ICهاي زيادي نياز دارند و تعداد قطعات اغلب به همراه توان محاسبه افزايش مي يابد. مدارهاي واسطه از لحاظ پيچيدگي بسته به ابزارهاي I/O تفاوت قابل ملاحظه اي دارند. براي مثال راه اندازي بلندگو كه در اغلب ميكروكامپيوترها وجود دارد تنها نيازمند يك جفت گيت منطقي است و در مقابل، رابط ديسك معمولا شامل IC هاي زيادي است كه بعضاً در بسته هاي LSI قرار دارند.

ويژگي ديگري كه ميكروها را از ميني ها و كامپيوترهاي مركزي جدا مي كند آن است كه ميكروكامپيوترها سيستمهايي تك اجرايي و تك كاربر هستند يعني با يك كاربر ارتباط متقابل دارند و يك برنامه را در يك زمان اجرا مي كنند. از طرف ديگر ميني ها و كامپيوترهاي مركزي سيستمهايي چنداجرايي هستند يعني با يك كاربر ارتباط متقابل دارند و يك برنامه را در يك زمان اجرا مي كنند. از طرف ديگر ميني ها و كامپيوترهاي مركزي سيستمهايي چنداجرايي و چندكاربر هستند يعني مي توانند به كاربران و برنامه‌هاي زيادي به طور همزمان سرويس دهند. درعمل، اجراي همزمان برنامه ها توهمي است كه در نتيجه عمل “برش زمان” توسط CPU بوجود مي آيد (با اين همه سيستمهاي چندپردزاشي از چندين CPU براي انجام همزمان وظايف استفاده مي كنند)

۹-۱ مقايسه ريز پردازنده ها با ميكروكنترلرها
پيش از اين خاطر نشان شد كه ريزپردازنده ها CPU هايي تك تراشه هستند و در ميكروكامپيوترها به كار مي روند. پس فرق ميكروكنترلرها با ريزپردازندها چيست؟ با اين سؤال از سه جنبه مي توان برخورد كرد: معماري سخت افزار، كاربردها و ويژگي هاي مجموعه دستورالعمل ها

۱-۹-۱ معماري سخت افزار
براي روشن ساختن تفاوت بين ميكروكنترلرها و ريزپردازنده ها ،‌شكل ۲-۱ براي نشان دادن جزئيات بيشتر دوباره رسم شده است (شكل ۱-۱ را ملاحظه كنيد)

در حاليكه ريزپردازنده يك CPUي تك تراشه اي است، ميكروكنترلر در يك تراشه واحد شامل يك CPU و بسياري از مدارات لازم براي يك سيستم ميكروكامپيوتري كامل مي باشد. اجزاي داخل خط چين در شكل ۱-۱ بخش كاملي از اغلب IC هاي ميكروكنترلر مي باشند. علاوه بر CPU ميكروكنترلرها شامل ROM, RAM يك رابط سريال، يك رابط موازي، تايمر و مدارات زمان بندي وقفه مي باشند كه همگي در يك IC قرار دارند. البته مقدار RAM روي تراشه حتي به ميزان آن در يك سيستم ميكروكامپيوتري كوچك هم نمي رسد اما آنطور كه خواهيم ديد اين مسأله محدوديتي ايجاد نمي كند زيرا كاربردهاي ميكروكنترلر بسيار متفاوت است.

يك ويژگي مهم ميكروكنترلرها، سيستم وقفة موجود در داخل آنهاست. ميكروكنترلرها به عنوان ابزارهاي كنترل گرا اغلب براي پاسخ بي درنگ به محركهاي خارجي (وقفه ها ) مورد استفاده قرار مي گيرند. يعني بايد در پاسخ به يك “اتفاق” ، سريعاً يك فرايند را معوق گذارده ، به فرآيند ديگر بپردازند. بازشدن در يك اجاق مايكروويو مثالي است از يك اتفاق كه ممكن است باعث ايجاد يك وقفه در يك سيستم ميكروكنترلري شود. البته اغلب ريزپردازنده ها مي توانند سيستم هاي وقفة قدرتمندي را به اجرا بگذارند، اما براي اين كار معمولاً نياز به اجزاي خارجي دارند. مدارات روي تراشه يك ميكروكنترلر شامل تمام مدارات مورد نياز براي بكارگيري وقفه ها مي باشد.
۲-۹-۱ كاربردها
ريز پردازنده ها اغلب به عنوان CPU در سيستم هاي ميكروكامپيوتري بكار مي روند. اين كاربرد دليل طراحي آنها و جايي است كه مي توانند توان خود را به نمايش بگذارند. با اين وجود ميكروكنترلرها در طراحي هاي كوچك با كمترين اجزاء ممكن كه فعاليت هاي كنترل گرا انجام مي دهند نيز يافت مي شوند. اين طراحي ها در گذشته با چند دوجين يا حتي صدها IC ديجيتال انجام مي شد. يك ميكروكنترلر مي تواند در كاهش تعداد كل اجزاء كمك كند. آنچه كه مورد نياز است عبارت است از يك ميكروكنترلر، تعداد كمي اجزاء پشتيبان و يك برنامه كنترلي در ROM . ميكروكنترلرها براي “كنترل” ابزارهاي I/O در طراحي هايي با كمترين تعداد اجزاء ممكن مناسب هستند، اما ريزپردازنده ها براي “پردازش” اطلاعات در سيستم هاي كامپيوتري مناسبند.

۳-۹-۱ ويژگيهاي مجموعه دستور العمل ها
به علت تفاوت در كاربردها، مجموعه دستورالعمل هاي مورد نياز براي ميكروكنترلرها تا حدودي با ريزپردازنده ها تفاوت دارد. مجموعه دستورالعمل هاي ريزپردازنده ها عمل پردازش تمركز يافته اند و در نتيجه داراي روش هاي آدرس دهي قدرتمند به همراه دستورالعمل هايي براي انجام عمليات روي حجم زياد داده مي باشند. دستورالعمل ها روي چهار بيت ها ، بايت ها، كلمه ها يا حتي كلمه هاي مضاعف عمل مي كنند .

روشهاي آدرس دهي با استفاده از فاصله هاي نسبي و اشاره گرهاي آدرس امكان دسترسي به آرايه هاي بزرگ داده را فراهم مي كنند. حالت هاي افزايش يك واحدي اتوماتيك و كاهش يك واحدي اتوماتيك، حركت گام به گام روي بايت ها، كلمه ها و كلمه هاي مضاعف را در آرايه ها آسان مي كنند. دستورالعمل هاي رمزي نمي توانند در داخل برنامة كاربر اجرا شوند و بسياري ويژگيهاي ديگر از اين قبيل.

از طرف ديگر ميكروكنترلرها مجموعه دستورالعملهايي مناسب براي كنترل ورودي ها و خروجي ها دارند. ارتباط با بسياري از ورودي ها و خروجي‌ها تنها نيازمند يك بيت است. براي مثال يك موتور مي تواند توسط يك سيم پيچ كه توسط يك درگاه خروجي يك بيتي انرژي دريافت مي كند، روشن و خاموش شود. ميكروكنترلرها دستورالعمل هايي براي ۱ كردن و ۰ كردن بيت هاي جداگانه دارند و ديگر عمليات روي بيت ها مثل Exor , OR, AND كردن منطقي بيت ها،‌پرش در صورت ۱ يا پاك بودن يك بيت و مانند آنها را نيز انجام مي دهند. اين خصيصه مفيد بندرت در ريزپردازنده ها يافت مي شود زيرا آنها معمولا براي كار روي بايت ها يا واحدهاي بزرگتر داده طراحي مي شوند.