مقدمه
گر چه کامپیوترها تنها چند دهه ای است که با ما همراهند، با این حال تأثیر عمیق آنها بر زندگی ما با تأثیر تلفن ، اتومبیل و تلویزیون رقابت می کند. همگی ما حضور آنها را احساس می کنیم، چه برنامه نویسان کامپیوتر و چه دریافت کنندگان صورت حساب های ماهیانه که توسط سیستم های کامپیوتری بزرگ چاپ شده و توسط پست تحویل داده می شود. تصور ما از کامپیوتر معمولا داده پردازی است که محاسبات عددی را بطور خستگی ناپذیری انجام می دهد.
ما با انواع گوناگونی از کامپیوترها برخورد می کنیم که وظایفشان را زیرکانه و بطرزی آرام، کارا و حتی فروتنانه انجام می دهند و حتی حضور آنها اغلب احساس نمی شود. ما کامپیوترها را به عنوان جزء مرکزی بسیاری از فرآورده های صنعتی و مصرفی از جمله،در سوپرمارکت ها داخل صندوق های پول و ترازوها؛ در خانه، در اجاق ها، ماشین های لباسشویی، ساعت های دارای سیستم خبردهنده و ترموستات ها؛ در وسایل سرگرمی همچون اسباب بازی ها، VCR ها، تجهیزات استریو و وسایل صوتی؛ در محل کار در ماشین های تایپ و فتوکپی؛ و در تجهیزات صنعتی مثل مته های فشاری و دستگاههای حروفچینی نوری می یابیم. در این مجموعه ها کامپیوترها وظیفه «کنترل» را در ارتباط با “دنیای واقعی” ، برای روشن و خاموش کردن وسایل و نظارت بر وضعیت آنها انجام می هند. میکروکنترلرها (برخلاف میکروکامپیوترها و ریزپردازنده ها ) اغلب در چنین کاربردهایی یافت می شوند.
با وجود این که بیش از بیست سال از تولد ریزپردازنده نمی گذرد، تصور وسایل الکترونیکی و اسباب بازیهای امروزی بدون آن کار مشکلی است. در 1971 شرکت اینتل 8080 را به عنوان اولین ریزپردازنده موفق عرضه کرد. مدت کوتاهی پس از آن، موتورولا، RCA و سپس MOS Technology و zilog انواع مشابهی را به ترتیب به نامهای 6800 ، 1801 ، 6502 و Z80 عرضه کردند. گر چه این مدارهای مجتمع IC) ها ) به خودی خود فایده چندانی نداشتند اما به عنوان بخشی از یک کامپیوتر تک بورد[1] (SBC) ، به جزء مرکزی فرآورده های مفیدی برای آموزش طراحی با ریزپردازنده ها تبدیل شدند.
از این SBC ها که بسرعت به آزمایشگاههای طراحی در کالج ها،دانشگاهها و شرکت های الکترونیک راه پیدا کردند می توان برای نمونه از D2 موتورولا، KIM-1 ساخت MOS Technology و SDK-85 متعلق به شرکت اینتل نام برد.
میکروکنترلر قطعه ای شبیه به ریزپردازنده است. در 1976 اینتل 8748 را به عنوان اولین قطعه خانواده میکروکنترلرهای MCS-48TM معرفی کرد. 8748 با 17000 ترانزیستور در یک مدار مجتمع ،شامل یک CPU ،1 کیلوبایت EPROM ، 27 پایه I/O و یک تایمر 8 بیتی بود. این IC و دیگر اعضای MCS-48TM که پس از آن آمدند، خیلی زود به یک استاندارد صنعتی در کاربردهای کنترل گرا تبدیل شدند. جایگزین کردن اجزاء الکترومکانیکی در فرآورده هایی مثل ماشین های لباسشویی و چراغ های راهنمایی از ابتدای کار، یک کاربرد مورد توجه برای این میکروکنترلرها بودند و همین طور باقی ماندند. دیگر فرآورده هایی که در آنها می توان میکروکنترلر را یافت عبارتند از اتومبیل ها،تجهیزات صنعتی، وسایل سرگرمی و ابزارهای جانبی کامپیوتر(افرادی که یک IBM PC دارند کافی است به داخل صفحه کلید نگاه کنند تا مثالی از یک میکروکنترلر را در یک طراحی با کمترین اجزاء ممکن ببینند).
توان، ابعاد و پیچیدگی میکروکنترلرها با اعلام ساخت 8051 ، یعنی اولین عضو خانوادةمیکروکنترلرهای MCS-51TM در 1980 توسط اینتل پیشرفت چشمگیری کرد. در مقایسه با 8048 این قطعه شامل بیش از 60000 ترانزیستور ، K4 بایت ROM، 128 بایت RAM ،32 خط I/O ، یک درگاه سریال و دو تایمر 16 بیتی است. که از لحاظ مدارات داخلی برای یک IC بسیار قابل ملاحظه است، امروزه انواع گوناگونی از این IC وجوددارند که به صورت مجازی این مشخصات را دوبرابر کرده اند. شرکت زیمنس که دومین تولید کنندةقطعات MCS-51TM است SAB80515 را به عنوان یک 8051 توسعه یافته در یک بستة 68 پایه با شش درگاه I/O 8 بیتی، 13 منبع وقفه، و یک مبدل آنالوگ به دیجیتال با 8 کانال ورودی عرضه کرده است. خانواده 8051 به عنوان یکی از جامعترین و قدرتمندترین میکروکنترلرهای 8 بیتی شناخته شده و جایگاهش را به عنوان یک میکروکنترلر مهم برای سالهای آینده یافته است.
این کتاب درباره خانواده میکروکنترلرهای MCS-51TM نوشته شده است فصل های بعدی معماری سخت افزار و نرم افزار خانواده MCS-51TM را معرفی می کنند و از طریق مثالهای طراحی متعدد نشان می دهند که چگونه اعضای این خانواده می توانند در طراحی های الکترونیکی با کمترین اجزاء اضافی ممکن شرکت داشته باشند.
در بخش های بعدی از طریق یک آشنایی مختصر با معماری کامپیوتر، یک واژگان کاری از اختصارات و کلمات فنی که در این زمینه متداولند (و اغلب با هم اشتباه می شوند) را ایجاد خواهیم کرد. از آنجا که بسیاری اصطلاحات در نتیجة تعصب شرکت های بزرگ و سلیقه مؤلفان مختلف دچار ابهام شده اند،روش کار ما در این زمینه بیشتر عملی خواهد بود تا آکادمیک. هر اصطلاح در متداولترین حالت با یک توضیح ساده معرفی شده است.
2-1 اصطلاحات فنی
یک کامپیوتر توسط دو ویژگی کلیدی تعریف می شود: (1) داشتن قابلیت برنامه ریزی برای کارکردن روی داده بدون مداخله انسان و (2) توانایی ذخیره و بازیابی داده . عموماً یک سیستم کامپیوتری شامل ابزارهای جانبی[2] برای ارتباط با انسان ها به علاوه برنامه هایی برای پردازش داده نیز می باشد. تجهیزات کامپیوتر و سخت افزار،و برنامه های آن نرم افزار نام دارند. در آغاز اجازه بدهید کار خود را با سخت افزار کامپیوتر آغاز می کنیم.
نبود جزئیات در شکل عمدی است و باعث شده تا شکل نشان دهنده کامپیوترهایی در تمامی اندازه ها باشد. همانطور که نشان داده شده است، یک سیستم کامپیوتری شامل یک واحد پردازش مرکزی[3] (CPU) است که از طریق گذرگاه آدرس[4] ،گذرگاه داده[5] و گذرگاه کنترل[6] به حافظه قابل دستیابی تصادفی[7] (RAM) و حافظه فقط خواندنی[8] (ROM) متصل می باشد. مدارهای واسطه[9] گذرگاههای سیستم را به وسایل جانبی متصل می کنند.
3-1 واحد پردازش مرکزی
CPU ، به عنوان “مغز” سیستم کامپیوتری، تمامی فعالیت های سیستم را اداره کرده و همه عملیات روی داده را انجام می دهد. اندیشة اسرار آمیز بودن CPU در اغلب موارد نادرست است زیرا این تراشه فقط مجموعه ای از مدارهای منطقی است که بطور مداوم دو عمل را انجام می دهند. واکشی[10] دستورالعمل ها، و اجرای آنها. CPU توانایی درک و اجرای دستورالعمل ها را براساس مجموعه ای از کدهای دودویی دارد که هر یک از این کدها نشان دهنده یک عمل ساده است. این دستورالعمل ها معمولا حسابی (جمع، تفریق، ضرب و تقسیم)، منطقی (NOT, OR, AND و غیره) انتقال داده یا عملیات انشعاب هستند و یا مجموعه ای از کدهای دودویی با نام مجموعه دستورالعمل ها[11] نشان داده می شوند.
مجموعه ای از ثباتها[12] را برای ذخیره سازی موقت اطلاعات، یک واحد عملیات حسابی و منطقی[13] (ALU) برای انجام عملیات روی این اطلاعات،یک واحد کنترل و رمزگشایی دستورالعمل[14] (که عملیاتی را که باید انجام شود تعیین می کند و اعمال لازم را برای انجام آنها شروع می نماید) و دو ثبات اضافی را هم دارد.
ثبات دستور العمل (IR) کد دودویی هر دستورالعمل را در حال اجرا نگه می دارد و شمارنده برنامه (PC) آدرس حافظه دستورالعمل بعدی را که باید اجرا شود نشان میدهد.
[1] - Single Board Computer
[2] - peripheral devices
[3] - central processing unit
[4] - address bus
[5] - data bus
[6] - control bus
[7] - random access memory
[8] - read-only memory
[9] - interface circuits
[10] - fetching
[11] - instruction set
[12] - registers
[13] - arithmetic and logic unit
[14] - instruction decode and control unit