فصل اول آشنایی با میکروکنترلرها 1-1 مقدمه گرچه کامپیوترها تنها چند دههای است که با ما همراهند، با این حال تاثیر عمیق آنها بر زندگی ما با تاثیر تلفن، اتومبیل و تلویزیون رقابت میکند.
همگی ما حضور آنها را احساس میکنیم، چه برنامه نویسان کامپیوتر و چه دریافت کنندگان صورت حسابهای ماهیانه که توسط سیستمهای کامپیوتری بزرگ چاپ شده و توسط پست تحویل داده میشود.
تصور ما از کامپیوتر معمولاً داده پردازی است که محاسبات عددی را بطور خستگی ناپذیری انجام میدهد.
ما با انواع گوناگونی از کامپیوترها برخورد میکنیم که وظایفشان را زیرکانه و بطرزی آرام، کارا و حتی فروتنانه انجام میدهند و حتی حضور آنها اغلب احساس نمی شود.
ما کامپیوترها را به عنوان جزء مرکزی بسیاری از فرآوردههای صنعتی و مصرفی از جمله، در سوپر مارکتها داخل صندوقهای پول و ترازوها؛ در خانه، در اجاق ها، ماشینهای لباسشویی، ساعتهای دارای خبر دهنده و ترموستات ها؛ در وسایل سرگرمی همچون اسباب بازیها، VCRها، تجهیزات استریو و وسایل صوتی؛ در محل کار در ماشینهای تایپ و فتوکپی؛ و در تجهیزات صنعتی مثل متههای فشاری و دستگاههای حروفچینی نوری مییابیم.
در این مجموعهها کامپیوترها وظیفه ی کنترل را در ارتباط با دنیای واقعی، برای روشن و خاموش کردن وسایل و نظارت بر وضعیت آنها انجام میدهند.
میکروکنترلرها (برخلاف میکروکامپیوترها و ریزپردازنده ها) اغلب در چنین کاربردهایی یافت میشوند.
با وجود این که بیش از بیست سال از تولد ریز پردازنده نمی گذرد، تصور وسایل الکترونیکی و اسباب بازیهای امروزی بدون آن کار مشکلی است.
در 1971 شرکت اینتل، 8080 را به عنوان اولین ریزپردازنده موفق عرضه کرد.
مدت کوتاهی پس از آن، موتورولا، RCA و سپس MOS Technology و Zilog انواع مشابهی را به ترتیب به نامهای 6800، 1801، 6502، Z80 عرضه کردند.
گرچه این مدارهای مجتمع (ICها) به خودی خود فایده چندانی نداشتند اما به عنوان بخشی از یک کامپیوتر تک بورد (SBC)، به جزء مرکزی فرآوردههای مفیدی برای آموزش طراحی با ریزپردازندهها تبدیل شدند.
از این SBCها که بسرعت به آزمایشگاههای طراحی در کالج ها، دانشگاهها و شرکتهای الکترونیکی راه پیدا کردند میتوان برای نمونه از D2 موتورولا، KLM-1 ساخت MOS Technology و SDK-85 متعلق به شرکت اینتل نام برد.
میکروکنترلر قطعه ای شبیه به ریزپردازنده است.
در 1969 اینتل 8748 را به عنوان اولین قطعه خانوادهی میکروکنترلرهای MCS-48 TM معرفی کرد.
8748 با 17000 ترانزیستور در یک مدار مجتمع، شامل یک CPU، 1 کیلو بایت EPROM، 64 بایت RAM، 27 پایه I/O و یک تایمر 8 بیتی بود.
این IC و دیگر اعضای MCS-48 TM که پس از آن آمدند، خیلی زود به یک استاندارد صنعتی در کاربردهای کنترل گرا تبدیل شدند.
جایگزین کرن اجزاء الکترومکانیکی در فرآوردههایی مثل ماشینهای لباسشویی و چراغهای راهنمایی از ابتدای کار، یک کاربرد مورد توجه برای این میکروکنترلرها بودند و همین طور باقی ماندند.
دیگر فرآوردههایی که در آن میتوان میکروکنترلر را یافت عبارتند از اتومبیل ها، تجهیزات صنعتی، وسایل سرگرمی و ابزارهای جانبی کامپیوتر.
(افرادی که یک IBM-PC دارند کافی است به داخل صفحه کلید نگاه کنند تا مثالی از یک میکروکنترلر را در یک طراحی با کمترین اجزاء ممکن ببینند).
توان و ابعاد پیچیدگی میکروکنترلرها با اعلام ساخت 8051، یعنی اولین عضو خانواده ی میکروکنترلرهای MCS-51 TM در 1980 توسط اینتل پیشرفت چشمگیری کرد.در مقایسه با 8048 این قطعه شامل بیش از 60000 ترانریستور، K 4 بایت ROM، 128 بایت ROM، 32 خط I/O، یک درگاه سریال و دو تایمر 16 بیتی است.
که از لحاظ مدارات داخلی برای یک IC بسیار قابل ملاحظه است.، (شکل 1-1 را ببینید).
امروزه انواع گوناگونی از این IC وجود دارند که به صورت مجازی این مشخصات را دو برابر کرده اند.
شرکت زیمنس که دومین تولید کننده ی قطعات MCS-51 TM است SAB80515 را به عنوان یک 8051 توسعه یافته در یک بسته 68 پایه با شش درگاه I/O 8 بیتی، 13 منبع وقفه و یک مبدل آنالوگ به دیجیتال با 8 کانال ورودی عرضه کرده است.
خانواده ی 8051 به عنوان یکی ار جامعترین و قدرتمندترین میکروکنترلرهای 8 بیتی شناخته شده و جایگاهش را به عنوان یک میکروکنترلر مهم برای سالهای آینده یافته است.
این کتاب درباره ی خانواده ی میکروکنترلرهای MCS-51 TM نوشته شده است.
فصلهای بعدی معماری سخت افزار و نرم افزار خانواده MCS-51 TM را معرفی میکند و از طریق مثالهای طراحی متعدد نشان میدهند که چگونه اعضای این خانواده میتوانند در طراحیهای الکترونیکی با کمترین اجزاء اضافی ممکن شرکت داشته باشند.
در بخشهای بعدی از طریق یک آشنایی مختصر با معماری کامپیوتر، یک واژگان کاری از اختصارات و کلمات فنی که در این زمینه متداولند (و اغلب با هم اشتباه میشوند) را ایجاد خواهیم کرد.
از آن جا که بسیاری اصطلاحات در نتیجه تعصب شرکتهای بزرگ و سلیقه مولفان مختلف دچار ابهام شده اند، روش کار ما در این زمینه بیشتر عملی خواهد بود تا آکادمیک.
هر اصطلاح در متداول ترین حالت با یک توضیح ساده معرفی شده است.
2-1 اصطلاحات فنی یک کامپیوتر توسط دو ویژگی کلیدی تعریف میشود: (1) داشتن قابلیت برنامه ریزی برای کار کردن روی داده بدون مداخله انسان و (2) توانایی ذخیره و بازار یابی داده.
عموماً یکی سیستم کامپیوتری شامل ابزارهای جانبی برای ارتباط با انسانها به علاوه ی برنامههایی برای پردازش داده نیز میباشد.
تجهیزات کامپیوتر سخت افزار، و برنامههای آن نرم افزار نام دارند.
در آغاز اجازه بدهید کار خود را با سخت افزار کامپیوتر و با بررسی شکل 2-1 آغاز میکنیم.
شکل 1-1: نمودار بلوکی یک سیستم میکروکامپیوتری نبود جزئیات در شکل عمدی است و باعث شده تاشکل نشان دهنده ی کامپیوترهایی در تمامی اندازهها باشد.
همان طور که نشان داده شده است، یک سیستم کامپیوتری شامل یک واحد پردازش مرکزی (cpu) است که از طریق گذرگاه آدرس 2، گذرگاه داده 3 و گذرگاه کنترل 4 به حافظه قابل دستیابی تصادفی 5 (RAM) و حافظه فقط خواندنی6 (RAM) متصل میباشد.
مدارهای واسطه7 گذرگاههای سیستم را به وسایل جانبی متصل میکنند.
حال اجازه بدهید تا هر یک از اینها را بطور مفصل بررسی کنیم.
3-1 واحد پردازش مرکزی CPU، به عنوان «مغز» سیستم کامپیوتری، تمامی فعالیتهای سیستم را اداره کرده و همه ی عملیات روی داده را انجام میدهد.
اندیشه ی اسرار آمیز بودن CPU در اغلب موارد نادرست است، زیرا این تراشه فقط مجموعه ای از مدارهای منطقی است که بطور مداوم دو عمل را انجام میدهند: واکنش 8 دستورالعملها و اجرای آنها.
CPU توانایی درک و اجرای دستورالعمل ها، را بر اساس مجموعه ای از کدهای دودویی دارد که هر یک از این کدها نشان دهنده ی یک عمل ساده است.
این دستورالعملها معمولاً حسابی (جمع، تفریق، ضرب و تقسیم) منطقی (AND، OR، NOT و غیره)، انتقال داده یا عملیات انشعاب هستند و یا مجموعه ای از کدهای دودویی با نام مجموعه ی دستورالعملها نشان داده می شوند.
شکل 1-2: واحد پردازش مرکزی شکل 1-2 یک تصویر بی نهایت ساده شده از داخل یک CPU است.
این شکل مجموعه ای از ثبات را برای ذخیره سازی موقت اطلاعات، یک واحد عملیات حسابی و منطقی2 (ALU) برای انجام عملیات روی این اطلاعات، یک واحد کنترل و رمزگشایی دستورالعمل 3 (که عملیاتی را که باید انجام شود تعیین میکند و اعمال لازم را برای انجام آنها شروع مینماید).
و دو ثبات اضافی را نشان میدهد.
ثبات دستورالعمل(IR) کد دودویی هر دستورالعمل را در حال اجرا نگه میدارد و شمارنده برنامه (PC) آدرس حافظه دستورالعمل بعدی را که باید اجرا شود نشان میدهد.
واکشی یک دستورالعمل از RAM سیستم یکی از اساسی ترین اعمالی است که توسط CPU انجام میشود و شامل این مراحل است: (الف) محتویات شمارنده ی برنامه در گذرگاه آدرس قرار میگیرد (ب) یک سیگنال کنترل READ فعال میشود (پ) داده (کد عملیاتی4 دستورالعمل) از RAM خوانده میشود و روی گذرگاه داده قرار میگیرد (ت) کد عملیاتی در ثبات داخلی دستورالعمل CPU ذخیره میشود و (ث) شمارنده ی برنامه یک واحد افزایش مییابد تا برای واکنش بعدی از حافظه آماده شود.
شکل 4-1 نشان دهنده ی جریان اطلاعات برای واکشی یک دستورالعمل است.
شکل 1-3: فعالیت گذرگاه در یک سیکل واکنشی کد عملیاتی مرحله اجرا مستلزم رمزگشایی کد عملیاتی و ایجاد سیگنالهای کنترلی برای گشودن ثباتهای درونی به داخل و خارج از ALU است.
همچنین باید به ALU برای انجام عملیات مشخص شده فرمان داده شود.
به علت تنوع زیاد عملیات ممکن، این توضیحات تا حدی سطحی میباشند و در یک عملیات ساده مثل «افزایش یک واحدی ثبات»1 مصداق دارند.
دستورالعملهای پیچیده تر نیاز به مراحل بیشتری مثل خواندن بایت دوم و سوم به عنوان داده ی برای عملیات دارند.
یک سری از دستورالعملها که برای انجام یک وظیفه ی معنادار ترکیب شوند برنامه یا نرم افزار نامیده میشوند، و نکته واقعاً اسرار آمیز درهمین جا نهفته است.
معیار اندازه برای انجام درست وظایف، بیشتر کیفیت نرم افزار است تا توانایی تحلیل CPU سپس برنامهها CPU را راه اندازی میکنند و هنگام این کار آنها گهگاه به تقلید از نقطه ضعفهای نویسندگان خود، اشتباه هم میکنند.
عباراتی نظیر کامپیوتر اشتباه کرد، گمراه کننده هستند.
اگر چه خرابی تجهیزات غیر قابل اجتناب است اما اشتباه در نتایج معمولاً نشانی از برنامههای ضعیف یا خطای کاربر میباشد.
4-1 حافظه نیمه رسانا: RAM و ROM برنامهها و دادهها در حافظه ذخیره میشوند.
حافظههای کامپیوتر بسیار متنوعند و اجزای همراه آنها بسیار، و تکنولوژی بطور دائم و پی در پی موانع را برطرف میکند، بگونه ای که اطلاع از جدیدترین پیشرفتها نیاز به مطالعه ی جامع و مداوم دارد.
حافظههایی که بطور مستقیم توسط CPU قابل دستیابی میباشند، ICهای (مدارهای مجتمع) نیمه رسانایی هستند که RAM و ROM نامیده میشوند.
دو ویژگی RAM و ROM حافظه خواندنی / و نوشتنی است در حالی که ROM حافظه ی فقط خواندنی است و دوم آن که RAM فرّار است (یعنی محتویات آن هنگام نبود ولتاژ تغذیه پاک میشود) در حالی که ROM غیر فرّار میباشد.
اغلب سیستمهای کامپیوتری یک دیسک درایو و مقدار اندکی ROM دارند که برای نگهداری روالهای نرم افزاری کوتاه که دائم مورد استفاده قرار میگیرند و عملیات ورودی/ خروجی را انجام میدهند کافی است.
برنامههای کاربران و داده، روی دیسک ذخیره میگردند و برای اجرا به داخل RAM بارمی شوند.
با کاهش مداوم در قیمت هر بایت RAM، سیستمهای کامپیوتری کوچک اغلب شامل میلیونها بایت RAM میباشند.
5-1 گذرگاهها: آدرس، داده و کنترل یک گذرگاه عبارت است از مجموعه ای از سیمها که اطلاعات را با یک هدف مشترک حمل میکنند.
امکان دستیابی به مدارات اطراف CPU توسط سه گذرگاه فراهم میشود: گذرگاه آدرس، گذرگاه داده و گذرگاه کنترل.
برای هر عمل خواندن یا نوشتن، CPU موقعیت داده (یا دستورالعمل) را با قرار دادن یک آدرس روی گذرگاه آدرس مشخص میکند و سپس سیگنالی را روی گذرگاه کنترل فعال مینماید تا نشان دهد که عمل مورد نظر خواندن است یا نوشتن.
عمل خواندن، یک بایت داده را از مکان مشخص شده در حافظه بر میدارد و روی گذرگاه داده قرار میدهد.
CPU داده را میخواند و در یکی از ثباتهای داخلی خود قرار میدهد.
برای عمل نوشتن CPU داده را روی گذرگاه داده میگذارد.
حافظه تحت تاثیر سیگنال کنترل، عملیات را به عنوان یک سیکل نوشتن، تشخیص میدهد و داده را مکان مشخص شده ذخیره میکند.
اغلب، کامپیوترهای کوچک 16 و 20 خط آدرس دارند.
با داشتن n خط آدرس که هر یک میتوانند در وضعیت بالا (1) یا پایین (0) باشند، n2 مکان قابل دستیابی است.
بنابراین یک گذرگاه آدرس 16 بیتی میتواند به 65536=16 2 مکان، دسترسی داشته باشد و برای یک آدرس 20 بیتی 1048576=20 2 مکان قابل دستیابی است.
علامت اختصاری K (برای کیلو) نماینده ی 1024=10 2 میباشد، بنابراین 16 بیت میتواند K 64=10 2 ×6 2 مکان را آدرس دهی کند در حالی که 20 بیت میتواند K 1024=10 2×10 2 (یاMeg1) را آدرس نماید.
گذرگاه داده اطلاعات را بین CPU و حافظه یا بین CPU و قطعات O/I منتقل میکند.
تحقیقات دامنه داری که برای تعیین نوع فعالیتهایی که زمان ارزشمند اجرای دستورالعملها را در یک کامپیوتر صرف میکنند، انجام شده است نشان میدهد که کامپیوترها دو سوم وقتشان را خیلی ساده صرف جابجایی داده میکنند.
از آنجا که عمده ی عملیات جابجایی بین یک ثبات CPU، RAM و ROM خارجی انجام میشود تعداد خطهای (یا پهنای) گذرگاه داده در کارکرد کلی کامپیوتر اهمیت شایانی دارد.
این محدودیت پهنا، یک تنگنا به شمار میرود: ممکن است مقادیر فراوانی حافظه در سیستم وجود داشته باشد و CPU از توان محاسباتی زیادی برخوردار باشد اما دسترسی به داده – جابجایی داده بین حافظه و CPU از طریق گدرگاه داده – توسط پهنای گذرگاه داده محدود میشود.
به علت اهمیت این ویژگی، معمول است که یک پیشوند را که نشان دهنده ی اندازه این محدودیت است اضافه میکنند.
عبارت کامپیوتر 16 بیتی به کامپیوتری با 16 خط در گذرگاه داده اشاره میکند.
اغلب کامپیوترها در طبقه بندی 4 بیت، 8 بیت، 16 بیت یا 32 بیت قرار میگیرند و توان محاسبات کلی آنها با افزایش پهنای گذرگاه داده، افزایش مییابد.
توجه داشته باشید که گذرگاه داده همان طور که در شکل 2-1 نشان داده شده است، یک گذرگاه دو طرفه و گذرگاه آدرس، یک گذرگاه یک طرفه میباشد.
اطلاعات آدرس همیشه توسط CPU فراهم میشود(همانطوری که در شکل 2-1 نشان داده شده است.) در حالی که داده ممکن است در هر جهت، بسته به اینکه عملیات خواندن مورد نظر باشد یا نوشتن، جابجا شود.
همچنین توجه داشته باشید که عبارت داده در مفهوم کلی بکار رفته است یعنی اطلاعاتی که روی گذرگاه داده جابجا میشود و ممکن است دستورالعملهای یک برنامه، آدرس ضمیمه شده به یک دستورالعمل یا داده مورد استفاده توسط برنامه باشد.
گذرگاه کنترل ترکیب درهمی از سیگنالها است، که هر یک نقش خاصی در کنترل منظم فعالیتهای سیستم دارند.
به عنوان یک قاعده کلی، سیگنالهای کنترل سیگنالهای زمان بندی هستند که توسط CPU برای همزمان کردن جابجایی اطلاعات روی گذرگاه آدرس و داده ایجاد میشوند.
اگر چه معمولاً سه سیگنال مثل CLOCK، READ و WRITE وجود دارد، برای انتقال اساسی داده بین CPU و حافظه، نام و عملکرد این سیگنالها بطور کامل بستگی به نوع CPU دارد.
برای جزئیات بیشتر در این مورد باید به برگه اطلاعات سازندگان مراجعه کرد.
6-1 ابزارهای ورودی/خروجی ابزارهای I/O یا ابزارهای جانبی کامپیوتر مسیری برای ارتباط بین سیستم کامپیوتری و دنیای واقعی فراهم میکنند.
بدون ابزار جانبی، سیستمهای کامپیوتری به ماشینهای درون گرایی تبدیل میشوند که استفاده ای برای کاربران خود ندارند.
سه دسته از ابزارهای I/O عبارتند از ابزارهای ذخیره سازی انبوه2، ابزارهای رابط با انسان 3 و ابزارهای کنترل / نظارت4.
1-6-1 ابزارهای ذخیره سازی انبوه ابزارهای ذخیره سازی انبوه نیز مثل RAM و ROMهای نیمه رسانا جزو نقش آفرینان عرصه ی تکنولوژی حافظه هستند که بطور دائم در حال رشد و بهبود است.
آنچنان که از نام آنها بر میآید این ابزارها مقادیر متنابهی اطلاعات (برنامه یا داده) را نگهداری میکنند و این حجم از اطلاعات به هیچ وجه در RAM یا حافظه اصلی نسبتاً کوچک کامپیوتر جا نمی گیرد.
این اطلاعات پیش از این که در دسترس CPU قرار بگیرد باید به داخل حافظه اصلی باز شود.
دسته بندی ابزارهای ذخیره سازی انبوه برطبق سادگی دستیابی به اطلاعات، آنها را به دو دسته تقسیم میکند ابزارهای آمادهی کار 1 و ابزارهای بایگانی 2.
در روش دخیره سازی آماده ی کار که معمولاً روی دیسکهای مغناطیسی انجام میشود، اطلاعات ذخیره شده در دسترس CPU قرار دارند بدون آن که نیازی به دخالت انسان از طریق اجرای نرم افزار خاصی باشد.
در روش ذخیره سازی بایگانی دادههایی نگهداری میشوند که به ندرت به کار میروند و باید بصورت دستی در سیستم بار شوند.
ذخیره سازی بایگانی معمولاً روی نوارهای مغناطیسی یا دیسکهای مغناطیسی انجام میشود.
اگر چه دیسکهای نوری مثل ROM–CDها 2 یا تکنولوژی 4WORD که به تازگی ظهور کرده اند، ممکن است سمت گیری روش ذخیره سازی بایگانی را به علت قابلیت اطمینان، ظرفیت بالا و قیمت پایین خود تغییر دهند.
2-6-1 ابزارهای رابط انسان یگانگی انسان و ماشین توسط مجموعه ای از ابزارهای رابط با انسان تحقق مییابد که متداول ترین آنها عبارتند از پایانههای نمایش تصویر (VDT) و چاپگرها.
اگر چه چاپگرها ابزارهای صرفاً خروجی هستند که برای چاپ کردن اطلاعات به کار میروند ولی VDTها در واقع از دو وسیله تشکیل شدهاند، زیرا شامل یک صفحه کلید به عنوان ورودی و یک CRT6 به عنوان خروجی میباشند.
یک رشتهی خاص در مهندسی فاکتورهای انسانی به خاطر ضرورتی که در طراحی این ابزارهای جانبی با توجه به طبیعت انسان احساس میشد، به وجود آمده است و هدف آن وفق دادن مشخصات انسان با ماشینهای مورد استفادهی او به شکلی مطمئن، راحت و کارا میباشد.
در حقیقت تعداد شرکتهایی که این دسته از ابزارهای جانبی را تولید میکنند بیشتر از شرکتهای تولید کننده ی کامپیوتر است.
در هر سیستم کامپیوتری دست کم سه تا از این ابزارها وجود دارد: صفحه کلید، CRT و چاپگر.
از دیگر ابزارهای رابط با انسان میتوان دستگیره ی بازی7، قلم نوری، ماوس، میکروفن و بلندگو را نام برد.
3-6-1 ابزارهای کنترل/ نظارت به کمک ابزارهای کنترل/ نظارت (و برخی نرم افزارها و رابطهای الکترونیکی دقیق) کامپیوترها میتوانند کارهای کنترلی زیادی را بی وقفه، بدون خستگی و بسیار فراتر از توانایی انسان انجام دهند.
کاربرهایی نظیر کنترل حرارت یک ساختمان، محافظت از خانه، کنترل آسانسور، کنترل وسایل خانگی و حتی جوش دادن قطعات مختلف یک خودرو همگی با استفاده از این ابزارها امکان پذیر هستند.
ابزارهای کنترل، ابزارهای خروجی یا عمل کننده1 هستند.
آنها وقتی که با یک ولتاژ یا جریان، تغذیه شوند میتوانند بر جهان پیرامون خود اثر بگذارند (مثل موتورها و رله ها).
ابزارهای نظارت، ابزارهای ورودی یا حسگر 2 هستند که با کمیتهایی نظیر حرارت، نور فشار و حرکت و مانند آن، تحریک شده و آنها را به جریان یا ولتاژی که توسط CPU خوانده میشود تبدیل میکنند (مثل فتوترانزیستورها، ترمیستورها و سوئیچ ها).
ولتاژ یا جریان توسط مدارهای واسطه، به یک داده دودویی تبدیل میشود و یا برعکس و سپس نرم افزار، یک رابطه منطقی بین ورودیها و خروجیها برقرار میکند.
سخت افزار و نرمافزار مورد نیاز برای ارتباط این ابزارها با میکروکنترلرها یکی از موضوعات عمده ی این کتاب میباشد.
8-1 میکروها، مینیها و کامپیوترهای مرکزی به عنوان یک نقطه شروع، کامپیوترها بر اساس اندازه و توان آنها با عنوان میکروکامپیوترها، مینی کامپیوترها و کامپیوترهای مرکزی دسته بندی میشوند.
یک ویژگی کلیدی میکرو کامپیوترها اندازه و بسته بندی CPU میباشد که از یک مدار مجتمع واحد – یعنی یک ریز پردازنده تشکیل شده است.
از طرف دیگر مینی کامپیوترها و کامپیوترهای مرکزی علاوه بر آن که در برخی جزئیات معماری، پیچیده تر هستند، CPUهایی مشتمل بر چندین IC دارند که از چند IC (در مینی کامپیوترها) تا چندین برد مدار متشکل از ICها (درکامپیوترهای مرکزی) تغییر میکند و این برای بدست آوردن سرعت بالا و توان محاسباتی کامپیوترهای بزرگتر ضروری است.
میکرو کامپیوترهایی مثل IBM PC، APPlee Macintosh و Commodore Amiga یک ریزپردازنده را به عنوان CPU بکار بردهاند.
RAM، ROM و مدارهای واسطه به ICهای زیادی دارند و تعداد قطعات اغلب به همراه توان محاسبه افزایش مییابد.
مدارهای واسطه از لحاظ پیچیدگی بسته به ابزارهای I/O تقاوت قابل ملاحظه ای دارند.
برای مثال راه اندازی بلندگو که در اغلب میکرو کامپیوترها وجود دارد تنها نیازمند یک جفت گیت منطقی است و در مقابل، رابط دیسک معمولاً شامل ICهای زیادی است که بعضاً در بستههای LSI قرار دارند.
ویژگی دیگری که میکروها را از مینیها و کامپیوترهای مرکزی جدا میکند آن است که میکروکامپیوترها سیستمهای تک اجرایی2 و تک کاربر3 هستند یعنی با یک کاربر ارتباط متقابل دارند و یک برنامه را در یک زمان اجرا میکنند.
از طرف دیگر مینیها و کامپیوترهای مرکزی سیستمهایی چند اجرایی4 و چند کاربر5 هستند یعنی میتوانند به کاربران و برنامههای زیادی بطور همزمان سرویس دهند.
در عمل، اجرای همزمان برنامهها توهمی است که در نتیجه عمل برش زمان6 توسط CPU بوجود میآید (با این همه سیستمهای چند پردازشی 7 از چندین CPU برای انجام همزمان وظایف استفاده میکنند).
9-1 مقایسه ریز پردازندهها با میکروکنترلرها پیش از این خاطر نشان شد که ریز پردازندهها CPUهایی تک تراشه هستند و در میکرو کامپیوترها به کار میروند.
پس فرق میکروکنترلرها با ریز پردازندهها چییست؟
با این سوال از سه جنبه میتوان برخورد کرد: معماری سخت افزار، کاربردها و ویژگیهای مجموعه ی دستوالعمل ها.
1-9-1 معماری سخت افزار برای روشن ساختن تفاوت بین میکروکنترلرها و ریز پردازندهها، شکل 1-4 برای نشان دادن جزئیات بیشتر دوباره رسم شده است (شکل 6-1 را ملاحظه کنید).
در حالی که یک ریز پردازنده CPU ی تک تراشه ای است، میکروکنترلرها در یک تراشه واحد شامل یک CPU و بسیاری از مدارات لازم برای یک سیستم میکرو کامپیوتری کامل میباشد.
اجزای داخل خط چین در شکل 6-1 بخش کاملی از اغلب ICهای میکروکنترلرها میباشند.
علاوه بر CPU میکروکنترلرها شامل RAM، ROM یک رابط سریال، یک رابط موازی، تایمر و مدارات زمان بندی وقفه میباشند که همگی در یک IC قرار دارند.
البته مقدار RAM روی تراشه حتی به میزان آن در یک سیستم میکرو کامپیوتری کوچک هم نمی رسند اما آن طور که خواهیم دید این مسئله محددیتی ایجاد نمی کند زیرا کاربردهای میکروکنترلر بسیار متفاوت است.
شکل 1-4: نمودار بلوکی مفصل یک سیستم میکروکامپیوتری یک ویژگی مهم میکروکنترلرها، سیستم وقفه موجود در داخل آنهاست.
میکروکنترلرها به عنوان ابزارهای کنترلگر را اغلب برای پاسخ بی رنگ به محرکهای خارجی (وقفه ها) مورد استفاده قرار میگیرند.
یعنی باید در پاسخ به یک اتفاق سریعاً یک فرآیند را معوق گذارده، به فرآیند دیگر بپردازند.
باز شده در یک اجاق مایکروویو مثالی است از یک اتفاق که ممکن است باعث ایجاد یک وقفه در یک سیستم میکروکنترلری شود.
البته اغلب ریزپردازندهها میتوانند سیستمهای وقفه ی قدرتمندی را به اجرا بگذارند، اما برای اینکار معمولاً نیاز به اجزای خارجی دارند.
مدارات روی تراشه یک میکروکنترلرشامل تمام مداوات مورد نیاز برای بکارگیری وقفهها میباشند.
2-9-1 کاربردها ریزپردازندهها اغلب به عنوان CPU در سیستمهای میکروکامپیوتری بکار میروند.
این کاربرد دلیل طراحی آنها و جایی است که میتوانند توان خود را به نمایش بگذارند.
با این وجود میکروکنترلرها در طراحیهای کوچک با کمترین اجزاء ممکن که فعالیتهای کنترل گرا انجام میدهند نیز یافت میشوند.
این طراحیها در گذشته با چند دوجین یا حتی صدها IC دیجیتال انجام میشد.
یک میکروکنترلر، میتواند در کاهش تعداد کل اجزاء کمک کند.
آنچه که مورد نیاز است عبارت است از یک میکروکنترلر، تعداد کمی اجزاء پشتیبان و یک برنامه کنترلی در ROM، میکرو کنترلرها برای کنترل ابزارهای I/O در طراحیهایی با کمترین تعداد اجزاء ممکن مناسب هستند، اما ریز پردازندهها برای پردازش اطلاعات در سیستمهای کامپیوتری مناسبند.
3-9-1 ویژگیهای مجموعه ی دستوالعملها به علت تفاوت درکاربردها، مجموعه ی دستورالعملهای مورد نیاز برای میکروکنترلرها تا حدودی با ریز پردازندهها تفاوت دارد.
مجموعه دستورالعملهای ریز پردازندهها تفاوت دارد.
مجموعه دستورالعملهای ریز پردازندهها بر عمل پردازش تمرکز یافته اند و در نتیجه دارای روشهای آدرس دهی قدرتمند به همراه دستورالعملهایی برای انجام عملیات روی حجم زیاد داده میباشند.
دستورالعملهای روی چهاربیتها1، بایت ها، کلمهها یا حتی کلمههای مضاعف 2 عمل میکنند 3.
روشهای آدرسدهی با استفاده از فاصله نسبی 4 و اشارهگرهای 5 آدرس امکان دسترسی به آرایههای بزرگ داده را فراهم میکنند.
حالتهای افزایش یک واحدی اتوماتیک و کاهش یک واحدی اتوماتیک، حرکت گام به گام روی بایت ها، کلمهها و کلمههای مضاعف را در آرایهها آسان میکنند.
دستورالعملهای رمزی نمی توانند در داخل برنامه ی کاربر اجرا شوند و بسیاری ویژگیهای دیگر از این قبیل.
از طرف دیگر میکروکنترلرها مجموعه دستورالعملهایی مناسب برای کنترل ورودیها و خروجیها دارند.
ارتباط با بسیاری از ورودیها و خروجیها تنها نیازمند یک بیت است.
برای مثال یک موتور میتواند توسط یک سیم پیچ که توسط یک درگاه خروجی یک بیتی انرژی دریافت میکند، روشن و خاموش شود.
میکروکنترلرها دستورالعملهایی برای 1 کردن 1 و 0 کردن 2 بیتهای جداگانه دارند و دیگر عملیات روی بیتها مثل AND، OR یا EXOR کردن منطقی بیت ها، پرش در صورت 1 یا پاک بودن یک بیت و مانند آنها را نیز انجام میدهند.
این خصیصه ی مفید بندرت درریز پردازندهها یافت میشود زیرا آنها معمولاً برای کار روی بایتها یا واحدهای بزرگتر داده طراحی میشوند.
برای کنترل و نظارت بر ابزارها (شاید توسط یک رابط تک بیتی)، میکروکنترلرها مدارات داخلی و دستورالعملهایی برای عملیات ورودی/ خروجی، زمانبندی اتفاقات و فعال کردن و تعیین اولویت وقفههای ناشی از محرکهای خارجی دارند.
ریز پردازندهها اغلب به مدارات اضافی (ICهای رابط سریال، کنترل کنندههای وقفه، تایمرها و غیره) برای اانجام اعمال مشابه نیاز دارند.
با این همه در قدرت پردازش محض، یک میکروکنترلر هرگز به ریز پردازنده نمی رسد (اگر در بقیه موارد یکسان باشند)، زیرا بخش عمده ی فضای واقعی IC میکروکنترلرصرف تهیه امکانات روی تراشه میشود البته به قیمت کاهش توان پردازش.از جا که فضاهای واقعی در تراشه برای میکروکنترلر اهمیت دارند دستورالعملها باید بی نهایت فشروده باشند و اساساً در یک بایت پیاده سازی شوند.
یکی از نکات در طراحی جادادن برنامهی کنترلی در داخل ROM روی تراشه است یا افزودن حتی یک ROM خارجی هزینه نهایی تولید را بسیار افزایش میدهد.
به رمز درآوردن3 فشرده برای مجموعه ی دستورالعملهای میکروکنترلر اساسی است، در حالی که ریز پردازندهها بندرت دارای این ویژگی میباشند، روشهای آدرس دهی قدرتمند آنها باعث به رمز درآوردن غیر فشردهی دستورالعملها میشود.
فصل دوم خلاصه سخت افزار 1-2 مروری بر خانواده MCS–50TM MCS–50TM خانواده ای از میکروکنترلرهاست که توسط شرکت اینتل به بازار عرضه شده است.
دیگر تولید کنندگان IC نظیر زیمنس، AMD، فوجیتسو و فیلیپس به عنوان تولید کنندگان ثانویه، ICهای این خانواده را تحت مجوز اینتل تولید میکنند.
هر میکروکنترلر این خانواده از امکاناتی مناسب با یک سری طراحیهای مشخص برخوردار است.
شکل 2-1: نمودار بلوکی 8051 در این فصل معماری سخت افزار خانوادهی MCS–50TM معرفی میشود.
برگه اطلاعات اینتل را برای ابزارهای سطح ورودی 1 (مثل8051AH) در ضمیمه ی ث میتوان یافت.
برای جزئیات بیشتر، مثل مشخصات الکتریکی این ابزارها باید به این ضمیمه مراجعه کرد.
بسیاری از مشخصات سخت افزاری با چند دستوالعمل توضیح داده شده اند.
برای هر مثال شرح مختصری داده شده، اما جزئیات کامل مجموعه دستوالعملهای 8051 به فصل 3 موکول شده است.
همچنین برای خلاصه دستوالعملهای 8051 به ضمیمه الف و برای تعریف هر دستور میتوانید به ضمیمه پ مراجعه کنید.
8051 یک IC نوعی و اولین عضو این خانواده است که بصورت تجاری مطرح شد.
خلاصه مشخصات این IC از این قرار است: 4K بایت ROM 128 بایت RAM چهار درگاه I/O (ورودی- خروجی) هشت بیتی دو تایمر دو تایمر/ شمارنده2 16 بیتی رابط سریال3 K64 بایت فضای حافظه خارجی برای کد K64 بایت فضای حافظه خارجی برای داده پردازندهی بولی4 (که عملیات روی بیتها را انجام میدهد) 210 مکان بیتی آدرس پذیر5 انجام عملیات ضرب و تقسیم در 4 میکروثانیه دیگر اعضای خانواده MCS–50TM هر یک امکانات دیگری از قبیل ROM روی تراشه6، EPROM،RAM روی تراشه و یا یک تایمر سوم را دارا هستند.
در ضمن هر یک از انواع ICهای این خانواده یک نسخه مشابه با CMOS کم مصرف7 نیز دارد (جدول1-2).
عبارت 8051 از روی تسامح به کل خانواده ی میکروکنترلرهای MCS–50TM اطلاق میشود.
هرگاه بحث روی IC خاصی از این خانواده متمرکز شود شماره ی قطعه مورد نظر ذکر خواهد شد.
مشخصاتی که در بالا به آنها اشاره شد در نمودار بلوکی شکل 1-2 نشان داده شده اند.
2-2 بررسی اجمالی پایهها در این بخش، معماری سخت افزار8051 با نگاهی از بیرون به پایههای آن، معرفی میشود (شکل 2-2) و در ادامه شرح مختصری از عملکرد هر پایه ارائه میگردد.
همانطور که در شکل 2-2 دیده میشود 32 پایه از 40 پایه 8051 به عنوان خطوط درگاه I/O عمل میکنند.
معهذا 24 خط از این خطوط دو منظوره هستند (26 خط در 8032/8052).
هر یک از خطوط میتوانند به عنوان I/O یا خط کنترل و یا بخشی از گذرگاه آدرس یا گذرگاه داده به کار روند.
در طراحیهایی که با کمترین مقدار حافظه و دگر قطعات خارجی انجامی میشوند، از این درگاههابه عنوان I/O همه منظوره استفاده میکنند.
هر هشت خط یک درگاه میتواند به صورت یک واحد در ارتباط با وسایل موازی مانند چاپگرها و مبدلهای دیجیتال به آنالوگ بکار رود.
و یا خط به تنهایی با وسایل تک بیتی مثل سوئیچ ها، LEDها، ترانزیستورها، سیم پیچ ها1، موتورها و بلندگوها ارتباط برقرار کند.
شکل 2-2: پایههای 8051 1-2-2 درگاه 0 درگاه 0، یک درگاه دو منظوره از پایهی 32 تا 39 تراشه 8051 میباشد.
این درگاه در طراحیهای با کمترین اجزای ممکن به عنوان یک درگاه I/O عمومی استفاده میشود.
در طراحیهای بزرگتر که از حافظه خارجی استفاده میکنند، این درگاه یک گذرگاه آدرس و داده مالتی پلکس شده میباشد.
2-2-2 درگاه 1 درگاه 1 درگاه اختصاصی I/O روی پایههای 1 تا 8 است.
پایههای 0.P1 تا 7.p1 در صورت نیاز برای ارتباط با وسایل خارجی بکار میروند.
وظیفه دیگری برای پایههای درگاه 1 درنظر گرفته نشده است، بنابراین آنها گهگاه برای ارتباط با وسایل خارجی بکار میروند.
استثناء در ICهای 8032/8052 که از p1.0 و p1.1 به عنوان خطوط I/O و یا ورودی تایمر سوم استفاده میشود.
3-2-2 درگاه 2 درگاه 2 (پایههای 21تا 28) یک درگاه دو منظوره است که به عنوان I/O عمومی و یا بایت بالای گذرگاه آدرس در طراحی با حافظه کد خارجی به کار میرود.
این درگاه همچنین د طراحیهایی که به بیش از 256 بایت از حافظه داده خارجی نیاز دارند نیز استفاده میشود.
4-2-2 درگاه 3 درگاه 3 یک درگاه دو منظوره روی پایههای 10 تا 17 میباشد.
علاوه بر I/O عمومی این پایهها هر یک وظایف دیگری نیز در رابطه با امکانات خاص 8051 دارند.
وظایف خاص پایههای درگاه 3 و درگاه2 در جدول 2-2 خلاصه شده است.
5-2-2 PSEN (Program Store Enable) 8051 چهار سیگنال اختصاص یافته برای کنترل گذرگاه دارد.
PSEN یک سیگنال خروجی روی پایه 29 است که حافظه برنامه خارجی (کد) را فعال میکند.
این پایه معمولاً به پایه ی OE یک EPROM وصل میگردد تا خواندن بایتهای برنامه از EPROM امکان پذیر شود.
جدول 2-1: عملکرد خاص پایهها سیگنال PSEN در طی مرحله خواندن یک دستوالعمل پایین میرود.
کدهای دودویی برنامه (کدهایی عملیاتی) از EPRPM خوانده میشوند، در گذرگاه داده منتقل میگردند و برای رمز گشایی در ثبات دستورالعمل 8051 ذخیره میشوند هنگام اجرای برنامه از ROM داخلی (8051/8052) PSEN در حالت غیر فعال (وضعیت بالا) باقی میماند.
6-2-2 ALE (Address Latch Enable) سیگنال خروجی ALE در پایه 30 برای هر فردی که با ریز پردازندههای مثل 8085، 8086 یا 8088 کارکرده باشند آشناست.
8051 بطور مشابهی از ALE برای جداسازی گذرگاه آدرس و داده استفاده میکند.
هنگامی که درگاه 0 در حالت خاص خود به عنوان گذرگاه داده و بایت پایین گذرگاه آدرس استفاده میشود سیگنال ALE آدرس را در یک ثبات خارجی در طی نیمه ی نخست سیکل حافظه نگاه میدارد.
پس از آن خطوط درگاه 0 بای ورود و خروج داده در طی نیمه ی دوم سیکل حافظه یعنی هنگامی که انتقال داده انجام میشود، در دسترس هستند.
سیگنالALE با فراکانس یک ششم فراکانس نوسان ساز روی تراشه نوسان میکند و میتواند به عنوان یک پالس ساعت همه منظوره در بقیه سیستم بکار رود اگر 8051 از یک کریستال 12 مگا هرتز، پالس ساعت دریافت کند، ALE با فرکانس 2 مگاهرتز نوسان میکند.
تنها استثناء در طی انجام دستوالعمل MOVX است که یک پالس ALE حذف میشود (شکل 10-2).
این پایه همچنین برای برنامه ریزی پالس ورودی در انواع EPROM دار8051 مورد استفاده قرار میگیرد.