تارا فایل

تحقیقی درمورد طراحی تایمر دیجیتالی


امروزه اکثر سیستمهای الکترونیکی به سمت دیجیتال سوق پیدا کرده است و این امر به علت مزایای زیادی اتس که سیستمهای دیجییتال نسبت بهخ مدارهای آنالوگ دارند .
مداری که ادر این پروژه معرف میگردد یک مدار فرمان میکروبی است که به منظور جایگزینی برای نمونه مکانیکی آن طراحی گردیده است .
برای طراحی و ساخت یک تایمر ماشین لباسشویی ، قبل از هرچیز باید ماشین لباسشویی ، طرزکار و همچنین عملکرد قسمتهای مختلف آن را بشناسیم . برای این منظور در ابتدات به شرح قسمتهای مختلف آن میپردازیم :
اجزای زیر قسمتهای مختلف یک ماشین لباسشویی را تشکیل میدهند:
موتور ، پمپ تخلیه ، المنت گرمکن ، شیربرقی ، اتوماتیک دما ، هیدرو سوئیچ و تایمر .
اگر بخواهیم عملکرد ماشین لباسشویی را بطور خلاصه بیان کنیم ، به این صورت است که ابتدا شیرآب (شیربرقی) بازشده و آب مخزن را پر میکند . سپس درصورت نیاز ، گرمکن آب مخزن را به گرمای مجاز میرساند . سپس موتور شروع به چرخاندن لباسهای کثیف میکند . سپس پمپ ، آب کثیف را از مخزن به بیرون از ماشین پمپ میکند . این سلسله عملیات ادامه دارد تا در انتها مشاین بطوراتوماتیک خاموش شده و متصدی دستگاه میتواند لباسهای شسته شده را از دستگاه خارج کند . فرمان تمام اجزاری فوق را تایمر میدهد . برای آشنایی با تایمر مکانیکی ، مختصری درمورد آن توضیح میدهیم :
این تایمر به ا ین صورت عمل میکند که یک موتور الکتریکی کوچک ، یک محور را توسط چرخ دنده هایی میچرخاند و این محور یک سری دیسک های پلاستیکی هم محور ار میچرخاند . این دیسک ها بر روی خود دارای برجستگی هایی است و برروی این برجستگی ها زائده هایی قرار میگیرند که با چرخیدن دیسک ، این زائده ها بالا و پایین رفتئه و پلاتین هایی را بازوبسته میکنند . و این پلاتین ها نیز به نوبه خود یک سری اتصال های الکتریکی قطع و وصل میشوند که میتوانند به عنوان فرمان های الکتریکی قسمتهای مختلف لباسشویی به کار روند . شکل زیر نحوده عملکرد این نوع تایمر را نشان میدهد :
تایمرهای مکانیکی دارای عیوب و مزایایی هستند که در زیر به آنها اشاره میشود :
بسیار گران هستند ، استفاده از این نوع تایمر باعث پیچیدگی سیم کشی داخحل ماشین لباسشویی میشود ، بر اثر کارکرد پلاتین های آن اکسیده شده و به خوبی عمل نیمکند .
از مزینتهای مهم تایمر مکانیکی میتوان نویزپذیر نبودن آن را نام برد . قبل از تشریح مدار تایم ردیجیتالی و عملکرد آن ، ابتدا کمی درمورد دو عنصر هیدروسوئیچ و اتوماتیک دما که درتمام ماشین های لباسشویی وجود دارد (وکمتر در دستگاههای الکتریکی دیده میشود) توضیح میدهیم :
تایمرهای لباسشویی یک سری مشخصات عمومی دارند که برای همه انواع آن صادق است .
این مشخصات به قرار زیر است :
– نشان د ادن مرحله برنامه در هرلحظه .
– حفظ مرحله برنامه درهنگام قطع برق .
– انتخاب شروع برنامه از هرمرحله دلخواه .
– خاموش کردن لباسشویی پس از اتمام به صورت اتوماتیک .
هیدروسوئیچ که مخفف سوئیچ هیدرولیکی است یک عنصر مکانیکی است که پربودن یا خالی بودن مخزن لباسشویی از آب را ، تشخیص میدهد .
این عنصر از کی مخزن کوچک تشکیل شده که داخل آن یک دیافراگم قراردارد . این مخزن دارای یک ورودی هوا است . وقتی هوا تحت فشار معینی به داخل آن برسد ، دیافراگم به جلو حرکت کرده و یک اتصال الکتریک را قطع و یا وصل میکند .
علت استفاده از هیدروسوئیچ در ماشین لباسشویی یکی به این دلیل است که وقتی شیربرقی آب را بازکرده وآب وارد مخزن لباسشویی میشود ، پس از رسیدن حجم آب بیش از حد مجاز وارد مخزن شود .
دلیل دیگر استفاده از هیدروسوئیچ ، وابسته نبودن حجم آب پرشده درون مخزن ، به فشار آب ورودی است . اتوماتیک دما هم یک نوع ترموستات الکتریکی است که با قطع و وصل به موقع المنت گرمکن ، دمای آب مخزن لباسشویی را طبق انتخاب ما ثابت نگه میدارد .
با این توضیحات راجع به قسمتهای مختلف ماشین لباسشویی ، به عملکرد مدار تایمر میپردازیم .
تایمر دیجیتالی که دراین پروژه طراحی شده است و معرفی میگردد دارای مشخصات زیر است :
– نمایش مراحل برنامه بر روی سون سگمنت (26 مرحله).
– حفظ مرحله برنامه در هنگام قطع برق با استفاده از باطری BACKUP .
– انتخاب شروع از هرمرحله برنامه با استفاده از کلیدهای PROGRAM .
– کوچک بودن حجم مدار نسبت به نمونه های مشابه دیجیتالی .
اصولا تایمر برای شمارش اتفاقات بکار میرود . و تعداد خاصی از این اتفاقات برای ما اهمیت دارد تا در این زمانهای خاص به یک دستگاه فرمان روشن یا خاموش بودن را بدهیم . دراصل تایمر دیجیتالی یک شمارنده است که تعداد پالسهای ورودی را بصورت باینری میشمارد و اگر ما از میان این اعداد موردنظر خودمان را به وسیله یک دیکودر ، دیکود کنیم ، به راحتی میتوانیم به تعدادی خروجی فرمان دهیم .
زمانی که ما برای کنترل یک لباسشویی نیاز داریم در حدود 1.8 ساعت است و این مقدار برابر 6735 ثانیه خواهد بود . اگر فرکانس پالسهای اعمال شده به شمارنده را 1HZ درنظر بگیریم ما به یک شمارنده 13 بیتی نیاز خواهیم داشت (8192 = 2)13 .
برای دیکود کردن این عدد 13 بیتی از یک ایپرام 2764 که مقدار حافظه آن 8 KB است استفاده میکنیم .
به این معنی که از خطوط آدرس به عنوان ورودی دیکودر و از خطوط DATA به عنوان خروجی استفاده مینماییم . حال با برنامه ریزی مناسب EPROM میتوانیم در هرزمان خروجی ها را صفر یا یک کنیم . چون EPROM دارای هشت خط DATA است ، میتوانیم هشت خروجی را همزمان کنترل نماییم . در واقع ما به وسیله EPROM یک دیکودر خاص ساخته ایم .
اگر یک نوسان ساز یک هرتز به CLOCK شمارنده اعمال کنیم ، خروجی تایمر ما با سرعت 1HZ عوض خواهد شد و این سرعت تغییرات خروجی ، به ما قدرت مانور زیادی برای کنترل خروجی میدهد . برای مثال اگر بخواهیم خروجی D5 به مدت 20 دقیقه فعال شود ، کافی است 1200 محل از EPROM را پشت سرهم عدد باینری (20 HEX) 00100000 را قرار دهیم .
برای نوشتن برنامه لباسشویی بر روی EPROM ابتدا باید زمانبندی برنامه لباسشویی را بدانیم .
یعنی بدانیم که درچه لحظاتی باید چه خروجی هایی فعال یا غیرفعال شوند .
برای مثال نمودار زیر را درنظر میگیریم .
درفاصله زمانی t0 و t1 خروجیهای a1 و a3 فعال هستند . درفاصله زمانی t2,t1 خروجی های a3,a2 فعال هستند . درفاصله زمانی t3,t2 خروجی a3 فعال است .
موادتغذیه :
شکل زیر نمای کلی از مدار تغذیه به کاربده شده در این پروژه را نشان میدهد . که آن را به اختصار شرح میدهیم .
}6cm
باتری V1 ولتاژ کمتری نسبت به V2 دارد پس D2 هدایت کرده و روشن است و D1 خاموش است . ما دراینجا از رگولاتور (7805) استفاده کرده ایم که ولتاژ ورودی آن بین 6 تا 10 و کاهنده میباشد که 5 ولت خروجی دارد .
ما به خاطر رسیدن به 5 ولت از Ic(7805) استفاده میکنیم .
مدار داخلی (7805) :
}4cm
یک مدار کلکتور مشترک است که تقویت ولتاژ ندارد و تقویت جریان دارد .
علت استفاده از دیود D1 در مواد تغذیه :
اگر D1 در مدار نباشد باتری 9 ولت همیشه در مدار است اما ا گر D1 در مدار باشد وقتی باتری 9 ولت وارد مدار میشود که ولتاژ تغذیه شهر قطع شود .
علت استفاده از D2 : برای اینکه ولتاژی از باتری به منبع تغذیه نرود .
مدار تشخیص قطع و وصل بودن برق شهر :
1- نحوه قرارگرفتن پایه های دگولاتور به صورت زیراست :
2- مقاومتهای بایاس ترانزیستور با مقادیر مشخص شده به کار رفته اند .
3- علت استفاده از خازن C1 : یک صافی است ، برای اینکه روی میکرو پارازیت نیافتد.
}6cm
شکل
این مدار به منظور رساندن پیامی به میکرو در مدار قرارداده شده تا میکرو را از وضعیت برق شهر مطلع کند .
این مدار یک ولتاژ نمونه از منبع تغذیه اصلی دریافت کرده و اگر جریان برق شهر برقرار باشد خورچی این مدار صفر و در غیراین صورت خحروجی مدار 1 میباشد . که میکرو از روی این اختلاف ولتاژ به بودن یا نبودن برق شهر پی میبرد .
این مدار تغذیه دارای یک مدار فرمان است که این مدار فرمان به میکرو متصل میباشد . تا زمانی که برق شهر رفت ، به میکرو فرمان دهد که تمام خروجی ها را خاموش کند .
این مدار تغذیه 2 ورودی دارد که درحالت seven segment دستگاه خاموش میشود ، و میکرو به حالت استندبای میرود .
"مدار قدرت"
این مدار ، مدار اپتو کوپلر (بایاس ترایک) است .
اپتوکوپلرها برای ایزوله کردن مدار فرمان از مدار قدرت بکار میروند به این ترتیب که فرمان گیت ترایاک توسط یک LEO به آن اعمال میشود . بین LEO و ترایاک هیچ پایه مشترکی وجود ندارد .
درصورت مستقیم وصل کردن مدار فرمان به مدار قدرت علاوه براین اشکالات نویز باعث برق دار شدن مدار فرمان میشود .
برای برطرف کردن این اشکال 2 راه وجود دارد . 1- استفاده از ترانس پالس * 2- اپتو کوپلر * در روش ترانس پالس ، به وسیله یک ترانس پالس مدار فرمان از قدرت جدا میشود .
به این ترتیب که با اعمال پالس ازطرف مدارفرمان در سر دیگر ترانس پالس یک پالس مربعی ایجاد میشود که ازآن میتوان برای فرمان دادن مدارات قدرت استفاده کرد .
1- ترانزیستور : از خروجی میکرو جریان کمی میگذرد به خطر تقویت جریان برای رسیدن به ورودی opto IC استفاده میشود .
* مدار پیشنهادی برای راه اندازی تریاک IC(opto copler) توسط اپتوکوپلر
مدار سنسور آب :
در این مدار از زوج دارلینگتون استفاده شده برای اینکه ضریب تقویت بالا رود . برای سنس کردن سطح آب میتوان از مدار زیر استفاده کرد به این ترتیب که چون آب عنصر خالص نیست پس دارای مقاومتی میباشد .که حدود 300ki است .
در شرایط عادی وقتی که بین 2 پایه قطع ما هیچ مقاومتی وجود ندارد ترانزیستور Q1 و Q2 که به صورت ربوج دارلینگتون –
– برای بالابردن ضریب تقویت بسته شده و درحالت قطع میباشد . در این حالت خروجی مدار یک 1 میباشد اما اگر مقاومتی بین دوپایه قطع قرار میگیرد : ترانزیستورهای Q1 و Q2 به حالت اشباع رفته در این حالت ولتاژ خروجی مدار صفر میشود .
مقاومت R1 به منظور حفاظت ترانزیستورها از اتصال کوتاه دوسه سنسور به کاربرده شده ، به این ترتیب که اگر این مقاومت در مدار نباشد هنگام اتصال کوتاه شدن دوسه سنسور تمام ولتاژ دوسه بیس – امتیر ترانزیستورها خواهد افتاد که موجب سوختن و از بین رفتن آنها میشود .
مقاومت R2 به منظور بایاس ترانزیستورها و کنترل حساسیت مدار به کار رفته است به این ترتیب که هرچقدر مقدار مقاومت R2 بیشتر باشد حساسیت مدار بیشتر شده و برعکس .
اگر مقاومت R2 از مدار خارج شود سنسور ما با اشاره دست فعال میشود مانند (سوئیچ های finger tikh ) …
:(ADC0804) IC
یک IC آنالوگ به دیجیتال است که ولتاژ را به دیجیتالی تبدیل میکند .
سنسور دما یک IC سه پایه است که به ازای هردرجه حرارت 10mv خروجی دارد .
پورتهای Po مقاومتهای بالای IC پورت صفر احتیاج به مقاومت Pull Up دارد که از مقاومت 10k برای این کار استفاده میشود .
پایه Reset شماره 9 میباشد که به هنگام روشن شدن میکرو آن را Reset میکند و باعث میشود که برنامه ما از ابتدا اجرا میشود . این مقاومت با یک مخازن ما را سری شده و به Vcc متصل شده است .
کریستال 12mHz میکرو ، برای تولید پالس بکار میرود . کلاک میکرو میباشد . P000 برای خروجی کلاک برای ATOD میباشد .
مدارمتصل به پایه 9 میکرو به صورت زیر است که در آن خازن 1mf به IC متصل است و مقاومت به کاربرده شده 10km بوده و مدار Reset سخت افزاری میکرو میباشد
نمودار صفحه نمایش مدار :
آشنایی با میکروکنترلرها
1-1 مقدمه
گرچه کامپیوترها تنها چند دهه ای است که با ما همراهند ، با این حال تاثیر عمیق آنها بر زندگی ما با تاثیر تلفن ، اتومبیل و تلویزیون رقابت میکند . همگی ما حضور آنها را احساس میکنیم ، چه برنامه نویسان کامضیوتر و چه دریافت کنندگان صورت حسابهای ماهیانه که توسط سیستمهای کامپیوتری بزرگ چاپ شده و توسط پست تحویل داده میشود . تصور ما زا کامپیوتر معمولا "داده پردازی" است که محاسبات عددی را بطور خستگی ناپذیری انجام میدهد .
ما با انواع گوناگونی از کامپیوترها برخورد میکنیم که وظایفشان را زیرکانه و بطرزی آرام ، کارا و حتی فروتنانه انجام میدهند و حتی حضور آنها اغلب احساس نیمشود . ما کامپیوترها را به عنوان جزء مرکزی بسیاری از فرآورده های صنعتی و مصرفی از جمله ، در سوپرمارکت ها داخل صندوق های پول و ترازوها ، درخانه ، دراجاق ها ، ماشین های لباسشویی ، ساعت های دارای سیستم خبردهنده و ترموستات ها ، در وسایل سرگرمی همچون اسباب بازی ها ، VCR ها ، تجهیزات استریو و وسایل صوتی ، در محل کار در ماشین های تایپ و فتوکپی ، و در تجهیزات صنعتی مثل مته های فشاری و دستگاههای حروفچینی نوری مییابیم . در این مجموعه ها کامپیوترها وظیفه "کنترل" را در ارتباط با "دنیای واقعی" ، برای روشن و خاموش کردن وسایل و نظارت بر وضعیت آنها انجام میدهند . میکروکنترلرها (برخلاف میکروکامپیوترها و ریزپردازنده ها) اغلب در چنین کاربردهایی یافت میشوند . با وجود این که بیش از بیست سال از تولد ریزپردازنده نمیگذرد ، تصور وسایل الکترونیکی و اسباب بازیهای امروزی بدون آن کار مشکلی است . در 1971 شرکت اینتل ، 8080 را به عنوان اولین ریزپردازنده موفق عرضه کرد . مدت کوتاهی پس از آن ، موتور ولا ، RCA و سپس MOS Technology و Zilog انواع مشابهی را به ترتیب به نامهای 6800 ، 1801 ، 6502 ، Z80 عرضه کردند . گرچه این مدارهای مجتمع (IC) ها به خودی خود فایده چندانی نداشتند اما به عنوان بخشی از یک کامپیوتر تک بورد (SBC) ، به جزء مرکزی فرآورده های مفیدی برای آموزش طراحی با ریزپردازنده ها تبدیل شدند . از این SBC ها که بسرعت به آزمایشگاههای طراحی در کالج ها ، دانشگاهها و شرکت های الکترونیک راه پیدا کردند میتوان برای نمونه از D2 موتورولا ، KIM-1 ساخت MOS Technolog و SDK-85 متعلق به شرکت اینتل نام برد .
میکروکنترلر قطعه ای شبیه به ریزپردازنده است . در 1976 اینتل 8748 را به عنوان اولین قطعه خانواده میکروکنترلرهای MCS-48TM معرفی کرد . 8748 با 17000 ترانزیستور در یک مدار مجتمع ، شامل یک CPU 1 کیلو بایت EPROM ، 64 بایت RAM ، 27 پایه I/O و یک تایمکر 8 بیتی بود . این IC و دیگر اعضای MCS-48TM که پس از آن آمدند ، خیلی زود به یک استاندارد صنعتی در کاربردهای کنترل گرا تبدیل شدند جایگزین کردن اجزاء الکترومکانیکی در فرآورده هایی مثل ماشین های لباسشویی و چراغ های راهنمایی از ابتداری کار ، یک کاربرد مورد توجه برای این میکروکنترلرها بودند و همین طور باقی ماندند . دیگر فرآورده هایی که در آنها میتوان میکروکنترلر را یافت عبارتند از اتومبیل ها ، تجهیزات صنعتی ، وسایل سرگرمی و ابزارهای جانبی کامپیوتر . (افرادی که یک IBM PC دارند کافی است به داخل صفحه کلید نگاه کنند تا مثالی از یک میکروکنترلر را دریک طراحی با کمترین اجزاء ممکن ببینند).
توان ، ابعاد و پیچیدگی میکروکنترلرها با اعلام ساخت 8051 ، یعنی اولین عضو خانواده میکروکنترلرهای MCS-51‏ء در 1980 توسط اینتل پیشرفت چشمگیری کرد . در مقایسه با 8048 این قطعه شامل بیش از 60000 ترانزیستور ، K 4 بایت ROM ، 128 بایت RAM ، 32 خط I/O ، یک درگاه سریال و دوتایمر 16 بیتی است . که از لحاظ مدارات داخلی برای یک IC بسیار قابل ملاحظه است ، (شکل 1-1 را ببینید). امروزه انواع گوناگونی از این IC وجود دارند که به صورت مجازی این مشخصات را دوبرابر کرده اند . شرکت زیمنس که دومین تولیدکننده قطعات MCS-51TM است SAB80515 را به عنوان یک 8051 توسعه یافته دریک بسته 68 پایه با شش درگاه I/O 8 بیتی ، 13 منبع وقفه ، و یک مبدل آنالوگ به دیجیتال با 8 کانال ورودی عرضه کرده است . خانواده 8051 به عنوان یکی از جامعترین و قدرتمندترین میکروکنترلرهای 8 بیتی شناخته شده و جایگاهش را به عنوان یک میکروکنترلر مهم برای سال های آینده یافته است .
این کتاب درباره خانواده میکروکنترلرهای MSC-51TM نوشته شده است . فصل های بعدی معماری سخت افزار و نرم افزار خانواده MCS-51TM را معرفی میکنند و از طریق مثالهای طراحی متعدد نشان میدهند که چگونه اعضای این خانواده میتوانند در طراحی های الکترونیکی با کمترین اجزاء اضافی ممکن شرکت داشته باشند .
در بخشهاس بعدی از طریق یک آشنایی مختصر با معماری کامپیوتر ، یک واژگان کاری از اختصارات و کلمات فنی که دراین زمینه متداولند (واغلب باهم اشتباه میشوند) را ایجاد خواهیم کرد . از آن جا که بسیاری اصطلاحات در نتیجه تعصب شرکتهای بزرگ و سلیقه مولفان مختلف دچار ابهام شده اند ، روش کار ما در این زیمنیه بیشتر عملی خواهد بود تا آکادمیک . هر اصطلاح در متداول ترین حالت با یک توضیح ساده معرفی شده است .

2-1 اصطلاحات فنی
یک کامپیوتر توسط دو ویژگی کلیدی تعریف میشود : (1) داشتن قابلیت برنامه ریزی برای کارکردن روی داده بدون مداخله انسان و (2) توانایی ذخیره و بازیابی داده . عموما یک سیستم کامپیوتری شامل ابزارهای جانبی برای ارتباط با انسان ها به علاوه برنامه هایی برای پردازش داده نیز میباشد . تجهیزات کامپیوتر سخت افزار ، و برنامه های آن نرم افزار نام دارند . در آغاز اجازه بدهید کارخود را با سخت افزار کامپیوتر و با بررسی شکل 2-1 آغاز میکنیم .
نبود جزئیات درشکل عمدی است و باعث شده تا شکل نشان دهنده کامپیوترهایی درتمامی اندازه ها باشد . همانطور که نشان داده شده است ، یک سیستم کامپیوتری شامل یک واحد پردازش مرکزی (CPU) است که از طریق گذرگاه آدرس2 ، گذرگاه داده3 و گذرگاه کنترل4 به حافظه قابل دستیابی تصادفی 5 (RAM) و حافظه فقط خواندنی 6 (ROM) متصل میباشد . مدارهای واسطه 7 گذرگاه های سیستم را به وسایل جانبی متصل میکنند . حال اجازه بدهید تا هریک از اینها را بطور مفصل بررسی کنیم .
3-1 واحد پردازش مرکزی
CPU ، به عنوان "مغز" سیستم کامپیوتری ، تمامی فعالیتهای سیستم را اداره کرده و همه عملیات روی داده را انجام میدهد . اندیشه اسرارآمیز بودن CPU در اغلب موارد نادرست است زیرا این تراشه فقط مجموعه ای از مدارهای منطقی است که بطورمداوم دو عمل را انجام میدهئد : واکشی 8 دستورالعمل ها ، و اجرای آنها . CPU توانایی درک و اجرای دستورالعمل ها را براساس مجموعه ای از کدهای دودویی دارد که هریک از این کدها نشان دهنده یک عمل ساده است . این دستورالعمل ها معمولا حسابی (جمع ، تفریق ، ضرب و تقسیم) ، منطقی NOT , OR , AND) وغیره) ، انتقال داده یا عملیات انشعاب هستند و با مجموعه ای از کدهای دودویی با نام مجموعه دستورالعمل ها9 نشان داده میشوند .
شکل 3-1 یک تصویر بی نهایت ساده شده از داخل یک CPU است . این شکل مجموعه ای از ثبات ها1 را برای ذخیره سازی موقت اطلاعات ، یک واحد عملیات حسابی و منطقی2 (ALU) برای انجام عملیات روی این اطلاعات ، یک واحد کنترل و رمزگشایی دستورالعمل3 (که عملیاتی را که باید انجام شود تعیین میکند و اعمال لازم را برای انجام آنها شروع مینماید.) و دوثبات اضافی را نشان میدهد .
ثبات دستورالعمل (IR) کد دودویی هردستورالعمل را درحال اجرا نگه میدارد و شمارنده برنامه (PC) آدرس حافظه دستورالعمل بعدی را که باید اجرا شود نشان میدهد .
واکشی یک دستورالعمل از RAM سیستم یکی از اساسی ترین اعمالی است که توسط CPU انجام میشود و شامل این مراحل است : (الف) محتویات شمارنده برنامه درگذرگاه آدرس قرار میگرد (ب) یک سیگنال کنترل READ فعال میشود (پ) داده (کد عملیاتی4 دستورالعمل) از RAM خوانده میشود و روی گذرگاه داده قرار میگیرد (ت) کد عملیاتی در ثبات داخلی دستورالعمل CPU انجام میشود و (ث) شمارنده برنامه یک واحد افزایش مییابد تا برای واکشی بعدی از حافظه آماده شود . شکل 4-1 نشان دهنده جریان اطلاعات برای واکشی یک دستورالعمل است .
مرحله اجرا مستلزم رمزگشایی کد عملیاتی و ایجاد سیگنالهای کنترلی برای گشودن ثبات های درونی به داخل و خارج از ALU است . همچنین باید به ALU برای انجام عملیات مشخص شده فرمانی داده شود . بعلت تنوع زیاد عملیات ممکن ، این توضیحات تاحدی سطحی میباشند و دریک عملیات ساده مثل "افزایش یک واحدی ثبات"1 مصداق دارند . دستورالعمل های پیچیده تر نیاز به مراحل بیشتری مثل خواندن بایت دوم و سوم به عنوان داده برای عملیات دارند .
یک سری از دستورالعمل ها که برای انجام یک وظیفه معنادار ترکیب شوند برنامه یا نرم افزار نامیده میشود ، و نکته واقعا اسرارآمیز درهمین جا نهفته است . معیار اندازه گیری برای انجام درست وظایف ، بیشتر کیفیت نرم افزار است تا توانایی تحلیل CPU . سپس برنامه ها CPU را "راه اندازی" میکنند و هنگام این کار آنها گهگاه به تقلید از نقطه ضعف های نویسندگان خود ، اشتباده هم میکنند . عباراتی نظیر "کامپیوتر اشتباه کرد" گمراه کننده هستند . اگرچه خرابی تجهیزات غیرقابل اجتناب است اما اشتباه در نتایج معمولا نشانی از برنامه های ضعیف یا خطای کاربر میباشد .
4-1 حافظه نیمه رسانا : RAM و ROM
برنامه ها و داده در حافظه ذخیره میشوند . حافظه های کامپیوتر بسیار متنوعند و اجزای همراه آنها بسیار ، و تکنولوژی بطور دائم و پی در پی موانع را برطرف میکند ، بگونه ای که اطلاع از جدیدترین پیشرفتها نیاز به مطالعه جامع و مداوم دارد . حافظه هایی که بطور مستقیم توسط CPU قابل دستیابی میباشند ، IC های (مدارهای مجتمع) نیمه رسانایی هستند که RAM و ROM نامیده میشوند . دو ویژگی RAM و ROM را از هم متمایز میسازد : اول آن که RAM حافظه خواندنی / نوشتنی است درحالی که ROM حافظه فقط خواندنی است و دوم آن که RAM فرار است (یعنی محتویات آن هنگام نبود ولتاژ تغذیه پاک میشود) درحالی که ROM غیر فرار میباشد .
اغلب سیستمهای کامپیوتری یک دیسک درایو ومقدار اندکی ROM دارند که برای نگهداری روال های نرم افزاری کوتاه که دائم مورد استفاده قرار میگیرند و عملیات ورودی / خروجی را انجام میدهند کافی است . برنامه های کاربران و داده ، روی دیسک ذخیره میگردند و برای اجرا به داخل RAM بار میشوند . با کاهش مداوم در قیمت هربایت RAM ، سیستمهای کامپیوتری کوچک اغلب شامل میلیونها بایت RAM میباشند .
5-1 گذرگاهها : آدرس ، داده و کنترل
یک گذرگاه عبارت است از مجموعه ای از سیم ها که اطلاعات را با یک هدف مشترک حمل میکنند . امکان دستیابی به مدارات اطراف CPU توسط سه گذرگاه فراهم میشود : گذرگاه آدرس ، گذرگاه داده و گذرگاه کنترل . برای هرعمل خواندن یا نوشتن ، CPU موقعیت داده (یا دستورالعمل) را با قراردادن یک آدرس روی گذرگاه آدرس مشخص میکند و سپس سیگنالی را روی گذرگاه کنترل فعال مینماید تا نشان دهد که عمل موردنظر خواندن است یا نوشتن . عمل خواندن ، یک بایت داده را از مکان مشخص شده در حافظه برمیدارد و روی گذرگاه داده قرار میدهد . CPU داده را میخواند و دریکی از ثبات های داخلی خود قرار میدهد . برای عمل نوشتن CPU داده را روی گذرگاه داده میگذارد . حافظه ، تحت تاثیر سیگنال کنترل ، عملیات را بعنوان یک سیکل نوشتن ، تشخیص میدهد و داده را درمکان مشخص شده ذخیره میکند .
اغلب ، کامپیوترهای کوچک 16 یا 20 خط آدرس دارند . با داشتن n خط آدرس که هریک میتوانند در وضعیت بالا(1) یا پایین (0) باشند ، n 2 مکان قابل دستیابی است . بنابراین یک گذرگاه آدرس 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 ( یا Meg 1) را آدرس دهی نماید .
گذرگاه داده اطلاعات را بین CPU و حافظه یا بین CPU و قطعات I/O منتقل میکند . تحقیقات دامنه داری که برای تعیین نوع فعالیتهایی که زمان ارزشمند اجرای دستورالعمل ها را دریک کامپیوتر صرف میکنند ، انجام شده است نشان میدهد که کامپیوترها دوسوم وقتشان را خیلی ساده صرف جابجایی داده میکنند . ازآن جا که عمده عملیات جابجایی بین یک ثبات CPU و RAM یا ROM خارجی انجام میشود تعداد خطهای (یا پهنای) گذرگاه داده در کارکرد کلی کامپیوتر اهمیت شایانی دارد . این محدودیت پهنا ، یک تنگنا به شمار میرود : ممکن است مقادیر فراوانی حافظه در سیستم وجود داشته باشد و CPU از طریق گذرگاه داده – توسط پهنای گذرگاه داده محدود میشود . به علت اهمیت این ویژگی ، معمول است که یک پیشوند را که نشان دهنده اندازه این محدودیت است اضافه میکنند . عبارت "کامپیوتر 16بیتی" به کامپیوتری با 16 خط در گذرگاه داده اشاره میکند . اغلب کامپیوترها در طبقه بندی 4 بیت ، 8 بیت ، 16 بیت یا 32 بیت قرار میگیرند و توان محاسباتی کلی آنها با افزایش پهنای گذرگاه داده ، افزایش مییابد .
توجه داشته باشید که گذرگاه داده همانطور که درشکل 2-1 نشان داده شده است ، یک گذرگاه دوطرفه و گذرگاه آدرس ، یک گذرگاه یک طرفه میباشد . اطلاعات آدرس همیشه توسط CPU فراهم میشود (همانطوری که درشکل 2-1 با فلش نشان داده شده است.) درحالی که داده ممکن است در هرجهت ، بسته به اینکه عملیات خواندن موردنظر باشد یا نوشتن ، جابجا شود .1 همچنین توجه داشته باشید که عبارت "داده" در مفهوم کلی بکار رفته است یعنی اطلاعاتی که روی گذرگاه داده جابجا میشود و ممکن است دستورالعمل های یک برنامه ، آدرس ضمیمه شده به یک دستورالعمل یا داده مورد استفاده توسط برنامه باشد .
گذرگاه کنترل ترکیب درهمی از سیگنال ها است ، که هریک نقش خاصی درکنترل منظم فعالیتهای سیستم دارند . بعنوان یک قاعده کلی ، سیگنال های کنترل سیگنالهای زمانبندی هستند که توسط CPU برای همزمان کردن جابجایی اطلاعات روی گذرگاه آدرس و داده ایجاد میشوند . اگرچه معمولا سه سیگنال مثل CLOCK ، READ و WRITE وجود دارد ، برای انتقال اساسی داده بین CPU و حافظه ، نام و عملکرد این سیگنال ها بطورکامل بستگی به نوع CPU دارد . برای جزئیات بیشتر در این موارد باید به برگه اطلاعات سازندگان مراجعه کرد .
6-1 ابزارهای ورودی / خروجی
ابزارهای I/O یا "ابزارهای جانبی کامپیوتر" مسیری برای ارتباط بین سیستم کامپیوتری و "دنیای واقعی" فراهم میکنند . بدون ابزارهای جانبی ، سیستمهای کامپیوتری به ماشینهای درون گرایی تبدیل میشوند که استفاده ای برای کاربران خود ندارند . سه دسته از ابزارهای I/O عبارتند از ابزارهای ذخیره سازی انبوه ،2 ابزارهای رابط با انسان3 و ابزارهای کنترل / نظارت4 .
1-6-1 ابزارهای ذخیره سازی انبوه
ابزارهای ذخیره سازی انبوه نیز مثل RAM ها و ROM های نمیه رسانا جزو نقش آفرینان عرصه تکنولوژی حافظه هستند که بطور دائم درحال رشد و بهبود است . آنچنان که از نام آنها برمی آید این ابزارها مقادیر معتنابهی اطلاعات (برنامه یا داده) را نگهداری میکنند و این حجم از اطلاعات به هیچ وجه در RAM یا "حافظه اصلی" نسبتا کوچک کامپیوتر جا نیمگیرد . این اطلاعات پیش از این که در دسترس CPU قرار بگیرد باید به داخل حافظه اصلی بارشود . دسته بندی ابزارهای ذخیره سازی انبوه برطبق سادگی دستیابی به اطلاعات ، آنها را به دودسته تقسیم میکند ابزارهای آماده کار و ابزارهای بایگانی . در روش ذخیره سازی آماده کار که معمولا روی دیسک های مغناطیسی انجام میشود ، اطلاعات ذخیره شده در دسترس CPU قرار دارند بدون آن که نیازی به دخالت انسان از طریق اجرای نرم افزار خاصی باشد . در روش ذخیره سازی بایگانی داده هایی نگهداری میشوند که بندرت به کار میروند و باید بصورت دستی در سیستم بار شوند . ذخیره سازی بایگانی معمولا روی نوارهای مغناطیسی یا دیسک های مغناطیسی انجام میشود . اگرچه دیسک های نوری مثل CD-ROM ها 3 یا تکنولوژی WORM 4 که بتازگی ظهور کرده اند ، ممکن است سمت گیری روش ذخیره سازی بایگانی را به علت قابلیت اطمینان ، ظرفیت بالا و قیمت پایین خود تغییر دهند . 5
2-6-1 ابزارهای رابط با انسان
یگانگی انسان و ماشین توسط مجموعه ای از ابزارهای رابط با انسان تحقق مییابد که متداول ترین آنها عبارتند از پایانه های نمایش تصویر (VDT) و چاپگرها . اگرچه چاپگرها ابزارهای صرفا خروجی هستند که برای چاپ کردن اطلاعات به کار میروند ولی VDT ها در واقع از دو وسیله تشکیل شده اند زیرا شامل یک صفحه کلید به عنوان ورودی و یک CRT 6 به عنوان خروجی میباشند . یک رشته خاص در مهندسی به نام "ارگونومیک" یا "مهندسی فاکتورهای انسانی" به خاطر ضرورتی که درطراحی این ابزارهای جانبی باتوجه به طبیعت انسان احساس میشد ، به وجود آمده است و هدف آ" وفق دادن مشخصات انسان با ماشین های مورد استفاده او به شکلی مطمئن ، راحت و کارا میباشد . درحقیقت تعداد شرکت هایی که این دسته از ابزارهای جانبی را تولید میکنند بیشتر از شرکتهای تولید کننده کامپیوتر است . در هرسیستم کامپیوتری دست کم سه تا از این ابزارها وجود دارد : صفحه کلید ، CRT و چاپگر . از دیگر ابزارهای رابط با انسان میتوان دستگیره بازی7 ، قلم نوری ، ماوس میکروفن و بلندگو را نام برد .
3-6-1 ابزارهای کنترل / نظارت
به کمک ابزارهای کنترل / نظارت (وبرخی نرم افزارها و رابط های الکترونیک دقیق) کامپیوترها میتوانند کارهای کنترلی زیادی را بی وقفه ، بدون خستگی و بسیار فراتر از توانایی انسان انجام دهند .
کاربردهایی نظیر کنترل حرارت یک ساختمان ، محافظت ازخانه ، کنترل آسانسور ، کنترل وسایل خانگی و حتی جوش دادن قطعات مختلف یک خودرو همگی با استفاده از این ابزارها امکان پذیر هستند .
ابزارهای کنترل ، ابزارهای خروجی یا عمل کننده 1 هستند . آنها وقتی که با یک ولتاژ یا جریان ، تغذیه شوند میتوانند برجهان پیرامون خود اثر بگذارند (مثل موتورها و له ها). ابزارهای نظارت ، ابزارهای ورودی یا حسگر2 هستند که با کمیت هایی نظیر حرارت ، نور ، فشار ، حرکت و مانند آن ، تحریک شده و آنها را به جریان یا ولتاژی که توسط CPU خوانده میشود تبدیل مکنند (مثل فتوترانزیستورها ، ترمیستورها و سوئیچ ها). ولتاژ یا جریان توسط مدارهای واسطه ، به یک داده دودویی تبدیل میشود و یا برعکس و سپس نرم افزار ، یک رابطه منطقی بین ورودی ها و خروجی ها برقرار میکند . سخت افزار و نرم افزار موردنیاز برای ارتباط این ابزارها با میکروکنترلرها یکی از موضوعات عمده این کتاب میباشد .
7-1 برنامه ها : بزرگ و کوچک
بحث اصلی ما برسخت افزار سیستمهای کامپیوتری با یک مرورگذرا بر نرم افزار یا برنامه هایی که برای راه اندازی آنها لازم است متمرکز گردیده است . توجه نسبی به سخت افزار در برابر نرم افزار در سال های اخیر بطور حیرت انگیزی دگرگون شده است. درحالیکه نخستین سالهای پیدایش کامپیوتر شاهد برتری چشمگیر هزینه قطعات ، تولید و تعمیر و نگهداری سخت افزار کامپیوتر نسبت به هزینه نرم افزار بود ، امروزه با تراشه های LSI3 هزینه های سخت افزاری ، کمتر تعیین کننده هستند و کار پرزحمت و متمرکز برای نوشتن ، مستندسازی ، پشتیبانی ، بهنگام کردن و توزیع نرم افزار است که بخش عمده هزینه اتوماسیون یک فرآیند را با استفاده از کامپیوتر تشکیل میدهد .
اکنون هنگام بررسی انواع مختلف نرم افزار است . شکل 5-1 سه سطح از نرم افزار را بین کاربر و سخت افزار یک سیستم کامپیوتری نشان میدهد : نرم افزار کاربردی ، سیستم عامل و زیرروال های ورودی / خروجی .
در پایین ترین سطح ، زیرروال های ورودی / خروجی بطور مستقیم سخت افزار سیستم را اداره میکنند ، مثل خواند کارکترها از صفحه کلید ، نوشتن کارکترها در CRT ، خواندن بلوک های اطلاعات از دیسک و غیره . از آنجا که این زیرروال ها ارتباط بسیار نزدیکی با سخت افزار دارند توسط طراحان سخت افزار نوشته میشوند و (معمولا) در ROM ذخیره میگردند (به عنوان مثال میتوان از BIOS در IBM PC نام برد).
برای ایجاد کردن دسترسی نزدیک برنامه نویسان به سخت افزار سیستم ، شرایط صریحی برای ورود و خروجی زیر روال های ورودی / خروجی تعیین شده است . کافیست یک نفر ثبات های CPU را مقداردهی اولیه کرده و زیرروال را فراخوانی کند ، در اینصورت عملیات موردنظر انجام میشود و نتایج در ثبات های CPU یا RAM سیستم قرار میگیرد.
به عنوان مکملی برای زیرروال های ورودی / خروجی ، ROM شامل یک برنامه شروع به کار است که هنگام روشن شدن سیستم یا آغاز بکار مجدد آن بصورت دستی ، اجرا میشود . طبیعت غیر فرار ROM در این مورد اهمیت اساسی دارد ، زیرا این برنامه باید هنگام روشن شدن سیستم وجود داشته باشد . "مدیریت اعمال داخلی" مثل بررسی انتخاب ها ، مقداردهی اولیه به حافظه ، انجام بررسی هایی به منظور عیب یابی و مانند آن ، توسط برنامه آغازگر1 انجام میشود . در پایان یک روال بارکننده خود راه انداز2 اولین شیار3 (یک برنامه کوچک) را از دیسک به داخل RAM میخواند و کنترل را به آن میسپارد . سپس این برنامه بخشی از سیستم عامل را که در RAM مقیم است (یک برنامه بزرگ) ، از دیسک میخواند و کنترل را به آن میسپارد و به این ترتیب عملیات شروع به کار سیستم کامل میشود و به عبارت دیگر "سیستم خود را توسط راه اندازهای خودش بالا می آورد .
سیستم عامل مجموعه بزرگی از برنامه های همراه با سیستم کامپیوتری است و مکانیسمی را برای دستیابی ، مدریت و استفاده موثر از امکانات کامپیوتر فراهم میکند . این توانایی ها در زبان فرمان4 و برنام های مفید5 سیستم عامل وجود دارند و بنوبه خود گسترش نرم افزارهای کاربردی را آسان میکنند . اگر نرم افزار کاربردی ، خوب طراحی شده باشد کاربر بدون دانستن سیستم عامل و یا با دانش اندکی درباره آن ، با کامپیوتر ارتباط متقابل برقرار میکند . برقرارکردن یک ارتباط موثر ، معنی دار و مطمئن با کاربر یکی از مهمترین اهداف در طراحی نرم افزار کاربردی است .
8-1 میکروها ، مینی ها و کامپیوترهای مرکزی1
به عنوان یک نقطه شروع ، کامپیوترها براساس اندازه و توان آنها با عنوان میکروکامپیوترها ، مینی کامپیوترها و کامپیوترهای مرکزی دسته بندی میشوند . یک ویژگی کلیدی میکروکامپیوترها اندازه و بسته بندی CPU میباشد که از یک مدار مجتمع واحد – یعنی یک ریزپردازنده تشکیل شده است . از طرف دیگر مینی کامپیوترها و کامپیوترهای مرکزی علاوه بر آن که در برخی جزئیات معماری ، پیچیده تر هستند ، CPU هایی مشتمل برچندین IC دارند که از چند IC (در مینی کامپیوترها) تا چندین بردن مدار متشکل از IC ها (در کامپیوترهای مرکزی) تغییر میکند و این برای به دست آوردن سرعت های بالا و توان محاسباتی کامپیوترهای بزرگتر ضروری است .
میکروکامپیوترهایی مثل Apple Macintosh , IBM PC و Commodore Amiga یک ریزپردازنده را به عنوان CPU بکار برده اند . ROM , RAM و مدارهای واسطه به IC های زیادی نیاز دارند و تعداد قطعات اغلب به همراه توان محاسبه افزایش مییابد . مدارهای واسطه از لحاظ پیچیدگی بسته به ابزارهای I/O تفاوت قابل ملاحظه ای دارند . برای مثال راه اندازی بلندگو که در اغلب میکروکامپیوترها وجود دارد تنها نیازمند یک جفت گیت منطقی است و درمقابل ، رابط دیسک معمولا شامل IC های زیادی است که بعضا در بسته های LSI قرار دارند .
ویژگی دیگری که میکروها را از مینی ها و کامپیوترهای مرکزی جدا میکند آن است که میکروکامپیوترها سیستمهایی تک اجرایی2 و تک کاربر3 هستند یعنی با یک کاربر ارتباط متقابل دارند و یک برنامه را دریک زمان اجرا میکنند . از طرف دیگر مینی ها و کامپیوترهای مرکزی سیستمهایی چند اجرایی4 و چندکاربر5 هستند یعنی میتوانند به کاربران و برنامه های زیادی بطور همزمان سرویس دهند . درعمل ، اجرای همزمان برنامه ها توهمی است که در نتیجه عمل "برض زمان"6 توسط CPU بوجود می آید (با این همه سیستمهای چندپردازشی7 از چندین CPU برای انجام همزمان وظایف استفاده میکنند).
9-1 مقایسه ریزپردازنده ها با میکروکنترلرها
پیش از این خاطر نشان شد که ریزپردازنده ها CPU هایی تک تراشه هستند و درمیکروکامپیوترها به کار میروند . پس فرق میکروکنترلرها با ریزپردازنده ها چیست ؟ با این سوال از سه جنبه میتوان برخورد کرد : معماری سخت افزار ، کاربردها و ویژگی های مجموعه دستورالعمل ها .
1-9-1 معماری سخت افزار
برای روشن ساختن تفاوت بین میکروکنترلرها و ریزپردازنده ها ، شکل 2-1 برای نشان دادن جزئیات بیشتر دوباره رسم شده است (شکل 6-1 را ملاحظه کنید) .
درحالی که ریزپردازنده یک CPU ی تک تراشه ای است ، مکروکنترلر دریک تراشه واحد شامل یک CPU و بسیاری از مدارات لازم برای یک سیستم میکروکامپیوتری کامل میباشد . اجزای داخل خط چین درشکل 6-1 بخش کاملی از اغلب IC های میکروکنترلر میباشند . علاوه بر CPU میکروکنترلرها شامل ROM , RAM یک رابط سریال ، یک رابط موازی ، تایمر و مدارات زمان بندی وقفه میباشند که همگی دریک IC قراردارند . البته مقدار RAM روی تراشه حتی به میزان آن دریک سیستم میکروکامپیوتری کوچک هم نمیرسد اما آنطور که خواهیم دید این مساله محدودیتی ایجاد نمیکند زیرا کاربردهای میکروکنترلر بسیار متفاوت است .
یک ویژگی مهم میکروکنترلرها ، سیستم وقفه موجود در داخل آنهاست . میکروکنترلرها به عنوان ابزارهای کنترل گرا1 اغلب برای پاسخ بی درنگ به محرکهای خارجی (وقفه ها) مورد استفاده قرار میگیرند . یعنی باید در پاسخ به یک "اتفاق" ، سریعا یک فرآیند را معوق گذارده ، به فرآیند دیگر بپردازند . بازشدن دریک اجاق مایکروویو مثالی است از یک اتفاق که ممکن است باعث ایجاد یک وقفه در یک سیستم میکروکنترلری شود . البته اغلب ریزپردازنده ها میتوانند سیستمهای وقفه قدرتمندی را به اجرا بگذارند ، اما برای این کار معمولا نیاز به اجزای خارجی دارند . مدارات روی تراشه یک میکروکنترلر شامل تمام مدارات موردنیاز برای بکارگیری وقفه ها میباشد .

2-9-1 کاربردها
ریزپردازنده ها اغلب به عنوان CPU در سیستم های میکروکامپیوتری بکار میروند . این کاربرد دلیل طراحی آنها و جایی است که میتوانند توان خود را به نمایش بگذارند . با این وجود میکروکنترلرها در طراحی های کوچک با کمترین اجزاء ممکن که فعالیتهای کنترل گرا انجام میدهند نیز یافت میشوند . این طراحی ها در گذشته با چند دوجین یا حتی صدها IC دیجیتال انجام میشد . یک میکروکنترلر میتواند در کاهش تعدا کل اجزا، کمک کند . آنچه که موردنیاز است عبارت است از یک میکروکنترلر ، تعداد کمی اجزاء پشتیبان و یک برنامه کنترلی در ROM . میکروکنترلرها برای "کنترل" ابزارهای I/O در طراحی هایی با کمترین تعداد اجزاء ممکن مناسب هستند ، اما ریزپردازنده ها برای "پردازش" اطلاعات در سیستمهای کامپیوتری مناسبند .
3-9-1 ویژگیهای مجموعه دستورالعمل ها
به علت تفاوت در کاربردها ، مجموعه دستورالعمل های موردنیاز برای میکروکنترلرها تا حدودی با ریزپردازنده ها تفاوت دارد . مجموعه دستورالعمل ها ی ریزپردازنده ها برعمل پردازش تمرکز یافته اند و در نتیجه دارای روشهای آدرس دهی قدرتمند به همراه دستورالعمکل هایی برای انجام عملیات روی حجم زیاد داده میباشند . دستورالعمل ها روی چهاربیت ها1 ، بایت ها ، کلمه ها یا حتی کلمه های مضاعف2 عمل میکنند3 . روشهای آدرس دهی با استفاده از فاصله های نسبی4 و اشاره گری های5 آدرس امکان دسترسی به آرایه های بزرگ داده را فراهم میکنند . حالت های افزایش یک واحدی اتوماتیک و کاهش یک واحدی ، حرکت گام به گام روی بایت ها ، کلمه ها و کلمه های مضاعف را در آرایه ها آسان میکنند . دستورالعمل های رمزی نیمتوانند در داخل برنامه کاربر اجرا شوند وبسیاری ویژگی های دیگر از این قبیل .
از طرف دیگر میکروکنترلرها مجموعه دستورالعمل هایی مناسب برای کنترل ورودی ها و خروجی ها دارند . ارتباط با بسیاری از ورودی ها و خروجی ها تنها نیازمند یک بیت است . برای مثال یک موتور توسط یک سیم پیچ که توسط یک درگاه خروجی یک بیتی انرژی دریافت میکند ، روشن و خاموش شود . میکروکنترلرها دستورالعمل هایی برای 1کردن1 و 0کردن2 بیت های جداگانه دارند و دیگر عملیات روی بیت ها مثل OR , AND یا EXOR کردن منطقی بیت ها ، پرش درصورت 1 یا پاک بودن یک بیت و مانند آنها را نیاز انجام میدهند . این خصیصه مفید بندرت در ریزپردازنده ها یافت میشود زیرا آنها معمولا برای کار روی بایت ها یا واحدهای بزرگتر داده طراحی میشوند .
برای کنترل و نظارت بر ابزارها (شاید توسط یک رابط تک بیتی) ، میکروکنترلرها مدارات داخلی و دستورالعمل هایی برای عملیات ورودی/ خروجی ، زمانبندی اتفاقات و فعال کردن و تعیین اولویت وقفه های ناشی از محرک های خارجی دارند . ریزپردازنده ها اغلب به مدارات اضافی (IC های رابط سریال ، کنترل کننده های وقفه ، تایمرها و غیره) برای انجام اعمال مشابه نیاز دارند . با این همه در قردت پردازش محض ، یک میکروکنترلر هرگز به ریزپردازنده نمیرسد (اگر در بقیه موارد یکسان باشند) ، زیرا بخش عمده "فضای واقعی" IC میکروکنترلر صرف تهیه امکانات روی تراشه میشود البته به قیمت کاهش توان پردازش .
از آنجا که فضاهای واقعی در تراشه برای میکروکنترلرها اهمیت دارند دستورالعمل ها باید بی نهایت فشرده باشند و اساسا در یک بایت پیاده سازی شوند . یکی از نکات در طراحی جادادن برنامه کنترلی در داخل ROM روی تراشه است ، زیرا افزودن حیت یک ROM روی تراشه است ، زیرا افزودن حیت یک ROM خارجی هزینه نهایی تولید را بسیار افزایش میدهد . به رمزدرآوردن3 فشرده برای مجموعه دستورالعمل های میکروکنترلر اساسی است ، در حالی که ریزپردازنده ها بندرت دارای این ویژگی میباشند، روشهای آدرس دهی قدرتمند آنها بعث به رمزدرآوردن غیر فشرده دستورالعمل ها میشود .
10-1 مفاهیم جدید
میکروکنترلرها مانند دیگر فرآورده هایی که پیش از آن برای برطرف کردن موانع کار مورد ملاحظه بودند ، توسط دو نیروی مکمل هم یعنی نیاز بازار و تکنولوژی جدید بوجود آمده اند . تکنولوژی جدید همان است که پیش از این ذکر شد ، یعنی نیمه رساناهایی با ترانزیستورهای بیشتر در فضای کمتر که با قیمت پایین تری به صورت انبوه تولید میشوند . نیاز بازار ، تقاضای صنعت و مصرف کنندگان وسایل و اسباب بازی های هوشمند میباشد .4 این تعریف گسترده ای است ، بهترین مثال شاید داشبورد خودرو باشد که شاهد تغییر "مرکز کنترل" خودرو درطی دهه گذشته بوده است . زمانی راننده ها باید به دانستن سرعت خود اکتفا میکردند ، اما امروزه نمایشی از سوخت صرفه جویی شده و زمان تقریبی رسیدن را در اختیار دارند . زمانی دانستن این که یک کمربند ایمنی در شروع حرکت محکم شده است یا نه کافی بود امروزه به ما "گفته میشود" کدام کمربند ایمنی ایراد دارد . اگر دری نیمه باز بماند بموقع توسط کلمات به ما اطلاع داده میشود (شاید کمربند ایمنی لای درگیر کرده باشد) .
همه این موارد این مطلب را در ذهن تداعی میکنند که ریز پردازنده ها ( و دراین مورد میکروکنترلر) به راه حل هایی تبدیل شده اند که به دنبال یک مساله میگردند . به نظر میرسد که آنها در کاهش پیچیدگی مدارات فرآورده های مصرفی بسیار موثر عمل کرده اند بطوری که تولیدکنندگاه اغلب برای افزودن امکانات اضافی اشتیاق زیادی دارند ، فقط به این علت که میکروکنترلرها خیلی راحت برای فرآورده ها قابل طراحی هستند . نتیجه کار ، اغلب فاقد سادگی لازم میباشد . بهترین مثال ممکن ظهور فرآورده ها قابل طراحی هستند . نتیجه کار ، اغلب فاقد سادگی لازم میباشد . بهترین مثال ممکن ظهور فرآورده های سخنگو در سالهای اخیر است . این فرآورده ها ، چه خودرو و چه اسباب بازی معمولا مثالهایی از زیاده روی ها و طراحی های اضافه برنیاز ، و شاید گوشه ای از هنر دهه هشتاد هستند . در آن زمان هم بسیاری معتقد بودند که همین که گرد کهنگی روی این وسایل بنشیند ، تنها چیزی که برای آنها باقی میماند قابلیت کای آنها خواهد بود .
میکروکنترلرها پردازنده هایی اختصاصی هستند . آنها به خودی خود در کامپیوترها به کار نمیروند ، بلکه در فرآورده های صنعتی و وسایل مصرفی مورد استفاده قرار میگیرند . استفاده کنندگان این فرآورده ها اغلب از وجود میکروکنترلرها کاملا بی اطلاع هستند . از دید آنها اجزای داخلی وجود دارند اما جزو جزئیات بی اهمیت طراحی به شمار میروند . برای مثال اجاق های مایکروویو ، ترموستات های قابل برنامه ریزی ، ترازوهای الکترونیک و حتی خودروها را میتوانید در نظر بگیرید . قسمت الکترونیکی هریک از این فرآورده ها عموما شامل ارتباط میکروکنترلر با کلیدهای فشاری ، سوئیچ ها ، وسایل هشداردهنده و لامپ های روی یک تابلو میباشد . در نتیجه به استثناء برخی امکانات اضافی ، طرز استفاده آنها با فرآورده ها ی الکترومکانیکی قبلی تفاوتی نکرده است و میکروکنترلر آنها از دید استفاده کنندگاه مخفی است .
برخلاف سیستمهای کامپیوتری که توسط قابلیت برنامه ریزی و دوباره برنامه ریزی شدن ، باز شناخته میشوند ، میکروکنترلرها یک بار برای همیشه و برای یک کاربرنامه ریزی میشوند . این مقایسه به یک تفاوت اساسی در معماری این دو سیستم منجر میشود . سیستمهای کامپیوتری نسبت RAM به ROM بالایی دارند و برنامه های کاربران در یک فضای نسبتا بزرگ RAM اجرا میشود درحالی که روال های ارتباط با سخت افزار در یک فضای کوچک ROM اجرا میگردد . از طرف دیگر میکروکنترلرها نسبت ROM به RAM بالایی دارند ، برنامه کنترلی آنها که شاید نسبتا بزرگ هم باشد در ROM ذخیره میشود ، درحالی که RAM فقط برای ذخیره موقت مورد استفاده قرار میگیرد . از آنجا که برنامه کنترلی برای همیشه در ROM ذخیره میشود در مرتبه میان افزار1 قرار میگیرد ، یعنی چیزی بین سخت افزار (مدارهای واقعی) و نرم افزار (برنامه هایی در RAM که هنگام خاموش شدن سیستم پاک میشوند). تفاوت بین سخت افزار و نرم افزار تا حدی شبیه به تفاوت بین یک صفحه کاغذ (سخت افزار) و کلمات نوشته شده روی آن (نرم افزار) میباشد . میان افزار را میتوان به صورت فرم های استانداردی که برای یک کاربرد مشخص طراحی و چاپ شده اند درنظر گرفت .
11-1- مزیت ها و معایب
وظایفی که میکروکنترلرها انجام می دهند وظایف تازه ای نیستند. آنچه جدید است این است که طراحی ها با تعداد اجزای کمتری از گذشته انجام می شوند. طراحی هایی که در گذشته با استفاده از ده ها و حتی صدها IC انجام می شدند امروزه با یک میکروکنترلر و اجزایی به تعداد انگشتان دست قابل انجام اند. کاهش تعداد اجزاء که نتیجه مستیم قابلیت برنامه ریزی و توانایی زیاد میکروکنترلرها در ایجاد یکپارچگی می باشد، معمولاً منجر به زمان طراحی و ساخت کوتاه تر، هزینه تولید پایین تر، مصرف توان کمتر و قابلیت اطمینان بیشتر شود. اعمال منطقی که نیازمند چندین IC می باشند، اغلب توسط یک میکروکنترلر با اضافه کردن یک برنامه کنترلی انجام می شوند.
عیب کار در سرعت است. راه حل میکروکنترلی هرگز در سرعت به پای راه حل های مشابه با اجزای گسسته نمی رسند. در موقعیت هایی که نیاز به پاسخ های بسیار سریع به رویدادها وجود دارد (که البته ندرت چنین کاربردهایی پیدا می شوند) میکروکنترلرها عکس العمل ضعیفی از خود نشان می دهند. به عنوان یک مثال، نمایش ساده شده ای از انجام عمل NAND با استفاده از میکروکنترل 8051 در شکل 7-1 نشان داده شده است.
به کار بردن میکروکنترلر برای چنین عملی چندان مرسوم نیست، اما این مکان وجود دارد. نرم افزار باید عملیات نشان داده شده در نمودار گردشی شکل 8-1 را انجام دهد. برنامه زبان اسمبلی 8051 برای این عمل منطقی به صورت زیر می باشد:
LOOP: MOV C,P1.4 ;READ P1.4 BIT INTO CARRY FLAG ANL C,P1.5 ;AND WITH P1.5
ANL C,P1.6 ;AND WITH P1.6
CPL C ;CONVERT TO "NAND" RESULT
MOV P1.7,C ;SEND TO P1.7 OUTPUT BIT
SJMP LOOP ; REPEAT
اگر این برنامه در یک میکروکنترلر 8051 اجرا شود بدون شک تابع NAND با سه ورودی تحقق می یابد (این مطلب را می توان با یک ولتمتر یا نوسان نگار تحقیق کرد.) تاخیر انتشار از یک گذار1 در ورودی تا استقرار سطح منطقی درست در خروجی دست کم در مقایسه با معادل TTL2 آن بسیار طولانی است. بسته به نسبت زمانی تغییر در ورودی و تشخیص این تغییر توسط برنامه، تاخیر بین 3 تا 17 میکرو ثانیه خواهد بود. (با فرض عملکرد استاندارد 8051 با استفاده از یک کریستال 12 مگاهرتز) در حالی که تاخیر انتشار در معادل TTL از مرتبه 10 نانو ثانیه است یعنی حدود هزار بارکمتر. واضح است که در ایجاد توابع منطقی، سرعت میکروکنترلرها با مدارهای معادل TTL قابل مقایسه نیست.
در بسیاری از کاربردها بویژه آنهایی که با عملکرد انسان سرو کار دارند این که تاخیرها به نانوثانیه اندازه گیری شوند یا میکروثانیه و میلی ثاینه اهمیتی ندارند، (هنگامی که فشار روغن در خودروی شما افت می کند آیا لازم است که ظرف چند میکروثانیه مطلع شوید؟). مثال گیت منطقی نشان می دهد که میکروکنترلرها می توانند عملیات منطقی را انجام دهند. از این گذشته هرچه طراحی ها پیچیده تر باشند، مزایای طراحی میکروکنترلری، بیشتر خود را نشان می دهد. تعداد کم اجزاء مزیتی است که قبلاً به آن اشاره شد علاوه بر آن عملیات پیش بینی شده در برنامه کنترلی را می توان تنها با تغییر نرم افزار دگرگون کرد و این روش کمترین اثر ممکن را روی چرخه تولید خواهد گذاشت.
1-2- مروری برخانواده MCS-51TM
MCS-51TM خانواده ای از میکروکنترلرهاست که توسط شرکت اینتل به بازار عرضه شده است. دیگر تولیدکنندگان IC نظیر زیمنس، AMD، فوجیتسو و فیلیپس به عنوان تولید کننده ثانویه، ICهای این خانواده را تحت مجوز اینتل تولید می کنند. هرمیکروکنترلر این خانواده از امکاناتی مناسب با یک سری طراحی های مشخص برخوردار است.
8051 یک IC نوعی و اولین عضو این خانواده است که بصورت تجاری مطرح شد. خلاصه مشخصات این IC از این قرار است:
* K4 بایت ROM
* 128 بایت RAM
* چهار درگاه I/O3 (ورودی – خروجی) هشت بیتی
* دو تایمر/ شمارنده4 16 بیتی
* رابطه سریال5
* K64 بایت فضای حافظه خارجی برای کد
* K64 بایت فضای حافظه خارجی برای داده
* پردازنده بولی6 (که عملیات روی بیت ها را انجام می دهد)
* 210 مکان بیتی آدرس پذیر7
* انجام عملیات ضرب و تقسیم در 4 میکروثانیه
دیگر اعضای خانواده MCS-51TM هر یک از امکانات دیگری از قبیل ROM روی تراشه8، RAM, EPROM روی تراشه و یا یک تایمر را دارا هستند. در ضمن هر یکاز انواع IC های این خانواده یک نسخه مشابه با CMOS کم مصرف9 نیز دارد(جدول1-2).
عبارت "8051" از روی تسامح به کل خانواده میکروکنترلرهای MCS-51TM اطلاق می شود. هرگاه بحث روی IC خاصی از این خانواده متمرکز شود شماره قطعه مورد نظر ذکر خواهد شد. مشخصاتی که در بالا به آنها اشاره شد در نمودار بلوکی شکل
1-2 نشان داده شده اند. (در ضمن می توانید به ضمیمه ت مراجعه کنید).
2-2- بررسی اجمالی پایه ها
در اینجا، معماری سخت افزار 8051 با نگاهی از بیرون به پایه های آن، معرفی می شود (شکل 2-2) و در ادامه شرح مختصری از عملکرد هر پایه ارائه می گردد.
همان طور که در شکل 2-2 دیده می شود 32 پایه از 40 پایه 8051 به عنوان خطوط درگاه I/O عمل می کنند. معهذا 24 خط از این خطوط دو منظوره هستند (26 خط در 8032/8052). هر یک از این خطوط می توانند به عنوان I/O یا خط کنترل و یا بخشی از گذرگاه آدرس یا گذرگاه داده به کار روند.
در طراحی هایی که با کمترین مقدار حافظه و دیگر قطعات خارجی انجام می شوند، از این درگاهها به عنوان I/O همه منظوره استفاده می کنند. هر هشت خط یک درگاه می تواند به صورت یک واحد در ارتباط با وسایل موازی مانند چاپگرها و مبدلهای دیجیتال به آنالوگ بکار رود. و یا هر خط به تنهایی با وسایل تک بیتی مثل سوئیچ ها، LEDها، ترانزیستورها، سیم پیچ ها10، موتورها و بلندگوها ارتباط برقرار کند.
1-2-2- درگاه 0
درگاه 0، یک درگاه دو منظوره از پایه 32 تا 39 تراشه 8051 می باشد. این درگاه در طراحی های با کمترین اجزای ممکن به عنوان یک درگاه I/O عمومی استفاده می شود. در طراحی های بزرگتر که از حافظه خارجی استفاده می کنند، این درگاه یک گذرگاه آدرس و داده مالتی پلکس شده می باشد. (به بخش 6-2 حافظه خارجی مراجعه کنید)
2-2-2- درگاه 1
درگاه 1 درگاه اختصاصی I/O روی پایه های 1 تا 8 است. پایه های P1.0 تا P1.7 در صورت نیاز برای ارتباط با وسایل خارجی بکار می روند. وظیفه دیگری برای پایه های درگاه 1 درنظر گرفته نشده است، بنابراین آنها گهگاه برای ارتباط با وسایل خارجی بکار می روند. استثناء در IC های 8032/8052 که از P1.0 و P1.1 به عنوان خطوط I/O و یا ورودی تایمر سوم استفاده می شود.
3-2-2- درگاه 2
درگاه 2 (پایه های 21 تا 28) یک درگاه دو منظوره است که به عنوان I/O عمومی و یا بایت بالای گذرگاه آدرس در طراحی با حافظه کد خارجی11 به کار می رود. این درگاه همچنین در طراحی هایی که به بیش از 256 بایت از حافظه داده خارجی12 نیاز دارند نیز استفاده می شود.
4-2-2- درگاه3
درگاه 3 یک درگاه دو منظوره روی پایه های 10 تا 17 می باشد. علاوه بر I/O عمومی این پایه ها هر یک وظایف دیگری نیز در رابطه با امکانات خاص 8051 دارند. وظایف خاص پایه های درگاه 3 و درگاه 2 در جدول 2-2 خلاصه شده است.
5-2-2- (Program Store Enable) PSEN
8051 چهارسیگنال اختصاص یافته برای کنترل گذرگاه دارد. یک سیگنال خروجی روی پایه 29 است که حافظه برنامه خارجی (کد) را فعال می کند. این پایه معمولاً به پایه یک EPROM وصل می گردد تا خواندن بایتهای برنامه از EPROM امکان پذیر شود.
سیگنال در طی مرحله خواندن یک دستورالعمل پایین می رود. کدهای دودویی برنامه (کدهای عملیاتی) از EPROM خوانده می شوند، در گذرگاه داده منتقل می گردند و برای رمزگشایی در ثبات دستورالعمل 8051 ذخیره می شوند. هنگام اجرای برنامه از ROM داخلی (8051/8052) در حالت غیر فعال (وضعیت بالا) باقی می ماند. چرا؟ چون تنها خواندن را انجام می دهد.
6-2-2- (Address Latch Enable) ALE
سیگنال خروجی ALE در پایه 30 برای هر فردی که با ریزپردازنده های اینتل مثل 8085، 8086 یا 8088 کارکرده باشد، آشناست. 8051 بطور مشابهی از ALE برای جداسازی گذرگاه آدرس و داده استفاده می کند. هنگامی که درگاه0 در حالت خاص خود به عنوان گذرگاه داده و بایت پایین گذرگاه آدرس استفاده می شود سیگنال ALE آدرس را در یک ثبات خارجی در طی نیمه دوم سیکل حافظه یعنی هنگامی که انتقال داده انجام می شود، در دسترس هستند.
سیگنال ALE با فرکانس یک ششم فرکانس نوسان ساز روی تراشه نوسان می کند و می تواند به عنوان یک پالس ساعت همه منظوره در بقیه سیستم بکار رود. اگر 8051 از یک کریستال 12 مگاهرتز، پالس سرعت دریافت کند، ALE با فرکانس 2 مگاهرتز نوسان می کند. تنها استثناء در طی انجام دستورالعمل MOVX است که یک پالس ALE حذف می شود (شکل 10-2). این پایه همچنین برای برنامه ریزی پالس ورودی در انواع EPROM دار 8051 مورد استفاده قرار می گیرد.
7-2-2- (External Access)
سیگنال ورودی در پایه 31 معمولاً به سطح منطقی بالا (V5+) یا پایین (زمین) وصل می شود. اگر این پایه در وضعیت بالا قرار گرفته باشد 8051/8052 برنامه را از ROM داخلی یعنی K4 یا K8 بایت پایین حافظه اجرا می کند. هنگامی که پایین باشد ROM داخلی غیر فعال می شود و برنامه ها از EPROM خارجی اجرا می شوند. همچنین نوع EPROM دار 8051 ازخط برای تغذیه 21 ولت (Vpp) در برنامه ریزی EPROM داخلی استفاده می کند.
8-2-2- (Reset)RST
ورودی RST در پایه9، آغازگر13 اصلی 8051 است. هنگامی که این سیگنال حداقل برای دو سیکل ماشین14 در وضعیت بالا بماند، ثباتهای داخلی 8051 با مقادیر مناسبی برای یک شروع به کار سازمان یافته بار می شوند. (به بخش 8-2 عملیات Reset مراجعه کنید.)
9-2-2- ورودی های نوسان ساز روی تراشه
همان طور که در شکل 2-2 نشان داده شده است. 8051 دارای یک نوسان ساز روی تراشه15 است و معمولاً با یک کریستال که به پایه های 18 و19 متصل می شود، به راه می افتد. خازنهای پایدار کننده نیز به صورت نشان داده شده، مورد نیاز هستند. فرکانس نامی کریسال برای اغلب ICهای خانواده MCS-51TM ، 12 مگاهرتز است، هر چند که 80C31BH-1 می تواند با فرکانسهایی تا 16 مگاهرتز نیز کار کند. نوسان ساز روی تراشه الزاماً نیازی به یک کریستال ندارد. همان طور که در شکل 3-2 نشان داده شده است یک منبع پالس ساعت TTL می تواند به XTAL1 و XTAL2 وصل شود.
10-2-2- اتصالات تغذیه
8051 با یک تغذیه 5+ ولتی کار می کند. اتصال Vcc به پایه 40 و Vss (زمین) به پایه 20 وصل می شود.
3-2- ساختار درگاه I/O
مدارات داخلی پایه های درگاه ها به صورت مختصر در شکل 4-2 نشان داده شده است. نوشتن در پایه یک درگاه، داده را در یک ذخیره ساز درگاه16 بار می کند. در اثر این عمل یک ترانزیستور اثر میدانی (FET) که به پایه درگاه وصل شده است، راه اندازی میشود. قابلیت راه اندازی برای درگاههای 2,1 و 3 به اندازه چهار TTL شاتکی کم مصرف17 و برای درگاه 0 به اندازه هشت عدد از همین نوع TTL می باشد. (برای جزئیات بیشتر به ضمیمه ث مراجعه کنید).
توجه کنید که مقاومت بالابرنده18 در درگاه 0 وجود ندارد. (مگر هنگامی که به عنوان گذرگاه خارجی آدرس و داده عمل می کند). ممکن است یک مقاومت بالابرنده خارجی بسته به مشخصات ورودی وسیله ای که توسط درگاه راه اندازی می شود، مورد نیاز باشد.
در 8051 دو قابلیت "خواندن ذخیره ساز"19 و "خواندن پایه"20 وجود دارد. دستورالعملهایی که عمل بخوان- تغییر بده- بنویس را بکار می برند (مثل CPL P1.5)، برای پرهیز از تشخص نادرست سطح ولتاژ در مواقعی که پایه بشدت تحت بار قرار دارد (مثل هنگامی بیس یک ترانزیستور را تحریک می کند)، عمل خواندن را از ذخیره ساز انجام می دهند و دستورالعملهایی که یک بیت از درگاه وارد می کنند (مثل P1.5، MOV C)، پایه را می خوانند. ذخیره ساز درگاه در این مورد باید شامل1 منطقی باشد و گرنه EET راه انداز روشن می شود و خروجی را پایین می کشد. Reset کردن سیستم همه ذخیره سازهای درگاه را 1 می کند. پس اگر یک ذخیره ساز درگاه پاک شود (مثل CLR P1.5)، متعاقب آن نمی توان از پایه به عنوان ورودی استفاده کرد، مگر این که ابتدا ذخیره ساز 1 شود. (SET P1.5)
شکل 4-2 مدارات مربوط به عملکرد خاص درگاههای 0 و 2 و 3 را نشان نمی دهد. هنگامی که عملکرد خاص این درگاهها در حال انجام است راه اندازهای خروجی به یک آدرس داخلی (درگاه 2)، آدرس/داده داخلی (درگاه 0) یا یک سیگنال کنترلی (درگاه 3) بصورت مقتضی سوئیچ می شوند.
4-2- سازمان حافظه
اغلب ریزپردازنده ها یک فضای حافظه مشترک برای داده و برنامه درنظر می گیرند. این کار معقولی است چون برنامه ها معمولاً روی یک سیستم ذخیره شده و برای اجرا به RAM منتقل می گردند. به این ترتیب برنامه ها و داده هر دو در RAM سیستم مقیم می شوند. از طرف دیگر میکروکنترلرها بندرت به عنوان CPU در "سیستم های کامپیوتری" مورد استفاده قرار می گیرند. در عوض، به عنوان جزء مرکزی در طراحی های کنترل گرا به کار می روند که در این موارد حافظه محدود است، دیسک درایو یا سیسم عامل دیسک وجود ندارد و برنامه کنترلی باید در ROM قرار داده شود.
به همین دلیل 8051 یک فضای حافظه جداگانه برای برنامه (کد) و داده در نظر می گیرد. همان طور که در جدول 1-2 نشان داده شده است، کد و داده هر دو ممکن است داخلی باشند. با این وجود هر د و با استفاده از اجزاء خارجی تا حدK64 بایت حافظه داده قابل توسعه هستند.
حافظه داخلی شامل ROM روی تراشه (فقط در 8051/8052) و RAM داده روی تراشه است. RAM روی تراشه شامل آرایش مناسبی از حافظه همه منظوره، حافظه بیتی آدرس پذیر، بانک های ثبات و ثبات های کاربرد خاص21 می باشد.
دو ویژگی جالب توجه در 8051 بدین قرار است: (الف) ثباتها و درگاههای ورودی – خروجی بصورت نقشه حافظه22 هستند و مانند هر مکان دیگر حافظه قابل دسترسی می باشند. ب) پشته، برخلاف معمول دیگر ریزپردازنده ها که پشته را در RAM خارجی قرار می دهند، در RAM داخلی قرار دارد.
فضای حافظه داخلی میان بانک های ثبات (00H-1FH)، RAM بیتی آدرس پذیر (20H-2FH)، RAM همه منظوره (30H-7FH) و ثبات های کاربرد خاص (80H-FFH) تقسیم شده است. در مورد هر یک از این بخشهای حافظه داخلی در ادامه مطلب بحث خواهد شد.
1-4-2- RAM همه منظوره
اگر چه شکل 6-2 80 بایت را از آدرس 30H تا 7FH برای RAM همه منظوره نشان می دهد، 32 بایت پایین از آدرس 00H تا 2FH نیز می توانند به صورت مشابهی استفاده شوند. (این مکان ها کاربردهای دیگری دارند که در ادامه بررسی خواهد شد).
هر مکانی در RAM همه منظوره با استفاده از روش های آدرس دهی مستقیم یا غیر مستقیم قابل دسترسی است. برای مثال برای خواندن محتویات RAM داخلی در آدرس 5FH به داخل انباره این دستورالعمل می تواند به کار رود:
MOV A,5FH
این دستورالعمل یک بایت داده را با استفاده از آدرس دهی مستقیم برای مشخص کردن "مکان مبدا" (یعنی آدرس5FH) منتقل می کند. مقصد داده بطور ضمنی در کد عملیاتی دستورالعمل با عنوان A انباره23 مشخص شده است. (توجه: روش های آدرس دهی بطور مفصل در فصل 3 بحث می شوند).
در ضمن RAM داخلی با استفاده از آدرس دهی غیر مستقیم و R0 و R1 نیز قابل دسترسی است. برای مثال دو دستورالعمل زیر همان کاری را می کنند که دستورالعمل بالا به تنهایی انجام می دهد:
MOV R0,#5FH
MOV A,@R0
دستورالعمل نخست از آدرس دهی فوری برای انتقال مقدار 5FH به ثبات R0 استفاده می کند. و دستورالعمل دوم آدرس دهی غیر مستقیم را برای انتقال داده ای که "R0 به آن اشاره می کند" به داخل انباره به کار می گیرد.
2-4-2- RAM بیت آدرس پذیر
8051، 210 مکان بیت آدرس پذیر دارد، که 128 مکان آن در آدرس بایت 20H تا 2FH قرار داشته و بقیه ثبات های کاربرد خاص هستند که بعداً مورد بحث قرار می گیرند.
اندیشه دستیابی به بیت های منفرد از طریق نرم افزار، یکی از امکانات قدرتمند اغلب میکروکنترلرها است. بیت ها می توانند توسط یک دستورالعمل، AND,0,1و یا OR گردند. اغلب ریزپردازنده ها به یک رشته از دستورالعملهای "بخوان – تغییر بده – بنویس" برای انجام همین اعمال نیاز دارند. بعلاوه درگاههای I/O در8051 بصورت بیت های آدرس پذیر هستند که ارتباط نرم افزاری را با تک بیت های ورودی و خروجی ساده می کنند.
تعداد 128 مکان بیت آدرس پذیر همه منظوره در آدرس بایت 20H تا 2FH وجود دارد. (128 بیت = 16 بایت*8 بیت)این آدرس ها بسته به دستورالعمل، به عنوان بایت یا به عنوان بایت یا به عنوان بیت قابل دسترسی هستند. برای مثال برای 1 کردن بیت 67H این دستورالعمل را می توان بکار برد:
با مراجعه به شکل 6-2 ملاحظه می شودکه "آدرس بیت 67H" با ارزشترین بیت در "آدرس بایت 2CH" است. دستورالعمل بالا تاثیری روی دیگر بیت ها در این آدرس ندارد. اکثر ریزپردازنده ها همین عمل را به طریق زیر انجام میدهند:
MOV A, 2CH ;READ ENTIRE BYTE
ORL A,#10000000 ;SET MOST-SIGNIFICANT BIT
MOV 2CH,A ;WRITE BACK ENTIRE BYTE
3-4-2- بانک های ثبات24
بانک های ثبات در 32 مکان پایین حافظه داخلی قرار دارند. مجموعه دستورالعملهای 8051 هشت ثبات را از R0 تا R7 پشتیبانی می کند و به صورت پیش فرض (پس از reset شدن سیستم)، این ثبات ها، در آدرس 00H تا 07H قرار می گیرند دستورالعمل زیر محتوای آدرس 05H را به داخل انباره منتقل می کند:
MOV A,R5
این دستورالعمل یک دستورالعمل یک بایتی است که از آدرس دهی ثبات استفاده می کند. البته همین عملیات با یک دستورالعمل دو بایتی با استفاده از آدرس دهی مستقیم در بایت دوم نیز انجام پذیر است:
MOV A,05H
دستورالعملهایی که از ثبات های R0 تا R7 استفاده می کنند کوتاهتر و سریعتر از دستورالعملهای معادلی هستند که از آدرس دهی مستقیم استفاده می کنند. داده هایی که بطور متناوب استفاده می شوند، بهتر است یکی از این اثبات ها را استفاده کنند.
بانک ثبات فعال با تغییر بیت های انتخاب بانک ثبات در کلمه وضعیت، برنامه،25 (که در ادامه بحث می شود) قابل تغییر است. با فرض آن که بانک ثبات شماره 3 فعال باشد دستورالعمل زیر محتوای انباره را در مکان 18H می نویسد:
MOV R0,A
اندیشه "بانک های ثبات" امکان "سوئیچ متن" را بصورت سریع و کارا فراهم می کند، که به موجب آن بخشهای جداگانه یک نرم افزار، مستقل از دیگر بخشها ازیک مجموعه ثبات خاص خود استفاده می کنند.
5-2- ثبات های کاربرد خاص
ثبات های داخلی در اغلب ریزپردازنده ها توسط مجموعه دستورالعمل ها به صورت ضمنی قابل دسترسی هستند. برای مثال "INCA" در ریز پردازنده 6809 محتوای انباره A را یک واحد افزایش می دهد. عملیات به صورت ضمنی در کد عملیاتی دستورالعمل مشخص شده است. روش دستیابی مشابهی برای ثبات درمیکروکنترلر 8051 امکان پذیر است. در حقیقت دستورالعمل "INC A" در 8051 همان عمل را انجام می دهد.
ثبات های داخلی 8051 به عنوان بخشی از RAM روی تراشه پیکربندی شده اند. بنابراین هر ثبات دارای یک آدرس نیز هست . این برای 8051 منطقی است چون ثبات های زیادی دارد . علاوه بر R0 تا R7 ، 21 ثبات کاربرد خاص (SFR) در ناحیه بالای RAM از آدرس از 80H تا FFH ، تعریف نشده اند . تنها 21 آدرس SFR تعریف شده است . (26 آدرس در 8032/8052 ) .
اگرچه انباره (A) همانطور که قبلا نشان داده شد به صورت ضمنی قابل دسترسی است ، اکثر SFR ها با استفاده از آدرس دهی مستقیم قابل دستیابی هستند . با دقت درشکل 6-2 ملاحظه میشود که برخی SFR ها هم بیت آدرس پذیر و هم بایت آدرس پذیر میباشند . طراحان باید هنگام کارکردن با بیت ها به جای بایت ها مراقب باشند . برای مثال دستورالعمل :
SETB 0E0H بیت 0 در انباره را 1 میکند ولی دیگر بیت ها را تغییر نمیدهد . شگرد کار تشخیص این نکته است که بدانیم E0H هم آدرس کل بایت انباره و هم آدرس کم ارزشترین بیت در انباره میباشد . چون دستورالعمل SETB روی بیت ها عمل میکند (و نه بایت ها) تنها روی بیت آدرس دهی شده تاثیر میگذارد . توجه داشته باشید که پنج بیت بالایی آدرس در بیت های آدرس پذیر SFR و خود SFR ، یکسان است . برای مثال درگاه 1 در آدرس بایت 90H یا 10010000B قرار دارد وبیت های درگاه 1 در آدرس 90H تا 97H قراردارند یعنی 10010xxxB .
PSW بطور مفصل دربخش بعدی بررسی میشود ، دیگر SFR ها پس از PSW بطور خلاصه معرفی میشوند و بحث کامل آنها به فصل های بعدی موکول میگردد .
1-5-2 کلمه وضعیت برنامه
کلمه وضعیت برنامه (PSW) در آدرس D0H همانطور که در جدول 3-2 خلاصه شده است ، شامل بیت های وضعیت میباشد . در ادامه مطلب تک تک این بیت ها بررسی میگردند .
1-1-5-2 پرچم نقلی
بیت نقلی (CY) یک بیت دو منظوره است که کاربرد رایج آن برای عملیات حسابی است . اگر درطی

جدول 3-2 خلاصه ثبات PSW (کلمه وضعیت برنامه)
شرح عملکرد بیت
آدرس
نماد
بیت
پرچم نقلی
D7H
CY
PSW.7
پرچم نقلی کمکی
D6H
AC
PSW.6
پرچم 0
D5H
F0
PSW.5
انتخاب بانک ثابت 0
D4H
RS1
PSW.4
انتخاب بانک ثبات 1
D3H
RS0
PSW.3
00 = بانک 0 ، آدرس های 00H – 07H

01 = بانک 1 ، آدرس های 08H – 0FH

10 = بانک 2 ، آدرس های 10H – 17H

11 = بانک 3 ، آدرس های 18H – 1FH

پرچم سرریز
D2H
OV
PSW.2
رزرو شده
D1H

PSW.1
پرچم توازن زوج
D0H
P
PSW.0

عمل جمع ، یک بیت نقلی از بیت 7 خارج شود یا درطی عمل تفریق ، یک بیت قرضی به بیت 7 وارد شود ، پرچم نقلی 1 میشود . برای مثال اگر انباره شامل FFH باشد دستورالعمل :
ADD A, #1
به انباره مقدار 00H را داده و پرچم نقلی را در PSW ، 1 میکند .
پرچم نقلی درضمن ، یک انباره بولی نیز هست ، که به عنوان یک ثبات تک بیتی برای دستورالعمل های بولی که روی بیت ها عمل میکنند به کار می آید . برای مثال دستورالعمل زیر بیت 25H را با پرچم نقلی AND میکند و نتیجه را به پرچم نقلی برمیگرداند :
ANL C,25H
2-1-5-2 پرچم نقلی کمکی
هنگام جمع کردن مقادیر دهدهی کد شده بصورت دودویی (BCD) اگر یک انتقال از بیت 3 به بیت 4 اتفاق بیفتد ، یا نتیجه درچهاربیت پایینی بین 0AH تا 0FH باشد پرچم نقلی کمکی set میشود . اگر مقادیری که جمع شده اند ، BCD باشند ، دستورالعمل جمع باید با DAA (تصحیح اعشاری انباره) دنبال شود . تا نتایج بزرگتر از 9 به محدوده کار برگردانده شوند .
3-1-5-2 پرچم 0
پرچم 0 یا F0 یک بیت پرچم همه منظوره برای استفاده کاربران میباشد .
4-1-5-2 بیت های انتخاب بانک ثبات
بیت های انتخاب بانک ثبات (RS0 , RS1) ، بانک ثبات فعال را مشخص میکنند ، در پی reset شدن سیستم پاک میشوند و درصورت لزوم بصورت نرم افزاری تغییر میکنند . برای مثال سه دستورالعمل زیر بانک 3 را فعال کرده سپس محتویات ثبات R7 را (آدرس بایت 1FH) به انباره منتقل میکنند :
SETB RS1
SETB RS0
MOV A, R7
هنگامی که برنامه بالا اسمبل شود آدرس های بیت درست ، جانشین نمادهای "RS0" و "RS1 " میشوند و به این ترتیب دستورالعمل SETB RS1 همان SETB 0D4H میباشد.
5-1-5-2 پرچم سرریز
پرچم سرریز (OV) پس از یک عمل جمع یا تفریق ، اگر یک سرریز حسابی اتفاق بیفتد 1 میشود . هنگامی که اعداد علامت دار جمع یا تفریق میشوند ، نرم افزار میتواند این بیت را بررسی کند تا مشخص شود که نتیجه درمحدوده مناسب قراردارد یا خیر . وقتی که اعداد بدون علامت جمع میشوند از بیت OV صرفنظر میشود . نتایج بزرگتر از 127+ یا کوچکتر از 128- بیت OV را 1 میکنند . برای مثال عمل جمع زیر باعث سرریز شده و بیت OV را در PSW ، 1 میکند :
Hex: 0F Decimal: 15
+7F +127
8E 142
8EH به عنوان یک عدد علامت دار ، با 116- معادل است که به وضوح با نتیجه درست یعنی 142 متفاوت است . بنابراین بیت OV ، 1 میشود .
6-1-5-2 بیت توازن
بیت توازن (P) در هرسیکل ماشین برای ساختن توازن زوج انباره ، بطورخودکار 1 و یا پاک میشود تعداد بیت های 1 در انباره به علاوه بیت P همواره زوج است اگر برای مثال انباره شامل 10101101B باشد P حاوی 1 خواهد بود (برای تامین شش عدد 1 که تعداد زوجی از 1 ها است ). بیت توازن اغلب در ارتباط با روال های درگاه سریال برای اضافه کردن بیک بیت توازن پیش از فرستادن ، و یا بازرسی توازن پس از دریافت به کار میرود .
2-5-2 ثبات B
ثبات B در آدرس F0H به همراه انباره برای عملیات ضرب و تقسیم استفاده میشود . دستورالعمل MUL AB مقادیر هشت بیتی بدون علامت در A و B را ضرب کرده و نتیجه 16 بیتی را در A (بایت پایین) و B (بایت بالا) قرار میدهد . دستورالعمل DIV AB ، A را برB تقسیم میکند و خارج قسمت را در A و باقیمانده را در B میگذارد . ثبات B همچنین به عنوان یک ثبات چرکنویس همه منظوره عمل میکند . این ثبات بیت آدرس پذیر از آدرس F0H تا F7H نیز هست .
3-5-2 اشاره گر پشته
اشاره گر پشته (SP) یک ثبات هشت بیتی در آدرس 81H است . این ثبات حاوی آدرس داده ای است که درهمان هنگام در بالای پشته قرار دارد . عملیات پشته شامل پوش کردن داده به پشته و پاپ کردن داده از پشته میباشد . پوش کردن به پشته SP را یک واحد کاهش میدهد . پشته 8051 در RAM داخلی قرار دارد و محدود به آدرس هایی است که با آدرس دهی غیرمستقیم قابل دسترسی هستند . یعنی 128 بایت اول در 8031 / 8051 یا تمام 256 بایت RAM روی تراشه در 8032 / 8052 .
برای مقدار اولیه دادن دوباره به SP در پشته ای که از آدرس 60H آغاز میشود . دستورالعمل زیر مورد استفاده قرار میگیرد :
MOV SP, 35FH در 8031 / 8051 این دستورالعمل پشته را به 32 بایت محدود میکند ، چون بالاترین آدرس در RAM روی تراشه ، 7FH است . در این دستورالعمل مقدار 5FH به کاررفته چون SP پیش از اولین عمل پوش یک واحد افزایش میبابد و 60H میشود .
طراحان ممکن است نخواهند اشاره گر پشته را مقداردهی اولیه کنند و بگذارند مقدار پیش فرض خود را از هنگام reset شدن حفظ کند . این مقدار یعنی 07H با 8048 که پردازنده ماقبل 8051 است ، سازگاری دارد و باعث میشود که اولین نوشتن در پشته ، داده را در آدرس 08H ذخیره کند . اگر نرم افزار مورد استفاده به SP مقدار اولیه ندهد ، بانک ثابت 1 ( وشاید 2 و 3 ) در دسترس نخواهند بود ، زیرا این ناحیه از RAM داخلی بخشی از پشته میباشد .
پشته بطور صریح توسط دستورالعمل های PUSH و POP برای ذخیره و بازیافت موقتی داده ها قابل دسترسی است . یا بصورت ضمنی با فراخوانی زیر روال ها (ACALL , LCALL ) و بازگشت (RET , RETI) که دستورالعمل هایی برای ذخیره و بازیابی شمارنده برنامه هستند ، میتوان به آن دسترسی پیدا کرد .
4-5-2 اشاره گر داده
اشاره گر داده (DPTR) که برای دستیابی به حافظه کد یا داده خارجی استفاده میشود ، یک ثبات 16 بیتی است که در آدرس های 82H (بایت پایین ، DPL ) و 83H (بایت بالا ، DPH ) قرار دارد . سه دستورالعمل زیر 55H را در مکان 1000H در RAM خارجی می نویسد :
MOV A, #55H
MOV DPTR, #1000H
MOVX @ DPTR,A اولین دستورالعمل از آدرس دهی فوری برای انتقال داده ثابت 55H به انباره استفاده میکند . دومین دستورالعمل نیز آدرس دهی فوری را این بار برای انتقال آدرس ثابت 16 بیتی 1000H به اشاره گر داده به کار میبرد . دستورالعمل سوم از آدرس دهی غیر مستقیم برای انتقال محتوای A (55H) به مکانی از RAM خارجی که آدرسش در DPTR است (1000H) ، استفاده میکند .
5-5-2 ثبات های درگاه
درگاه های I/O در 8051 عبارتند از درگاه 0 در آدرس 80H ، درگاه 1 در آدرس 90H ، درگاه 2 در آدرس A0H و درگاه 3 در آدرس B0H . درگاه های 0 و 2 و 3 درصورت استفاده از حافظه خارجی یا برخی از امکانات خاص 8051 (مثل وقفه ها ، درگاه سریال و غیره)، برای عملیات I/O در دسترس نیستند . با این همه P1.2 تا P1.7 همواره به عنوان خطوط I/O همه منظوره قابل استفاده میباشند .
همه درگاه بیت آدرس پذیر هستند که امکانات قدرتمندی را برای ارتباطات متقابل فراهم میکند . اگر یک موتور از طریق یک سیم پیچ و سوئیچ ترانزیستوری به بیت 7 درگاه 1 وصل باشد ، برای مثال میتواند با یک دستورالعمل 8051 یعنی :
SETB P1.7
روشن شود و با دستورالعمل زیر خاموش گردد :
CLR P1.7
دستورالعمل های فوق از عملگر نقطه برای آدرس دادن به یک بیت دریک مکان بیت آدرس پذیر استفاده میکنند . اسمبلر تغییرات لازم را انجام میدهد ، بدین ترتیب دودستورالعمل زیر معادل هستند :
CLR P1.7
CLR 97H کاربرد نمادهای از پیش تعریف شده اسمبلر (مثل P1) در فصل 7 بطور مفصل بررسی شده است . به عنوان یک مثال دیگر ارتباط با وسیله ای شاملب یک بیت وضعیت به نام BUSY را درنظر بگیرید که هنگام مشغول بودن وسیله ، 1 و هنگام آماده بودن آن پاک میباشد . اگر BUSY بر فرض به بیت 5 درگاه 1 وصل شده باشد ، حلقه زیر باعث میشود که سیستم برای آماده شدن وسیله صبر کند :
WAIT : JB P1.5,WAIT این دستورالعمل یعنی "اگر بیت P1.5 ، شد ، به برچسب WAIT پرش کن" به عبارت دیگر "برگرد و دوباره آن را بررسی کن" .
6-5-2 ثبات های تایمر
8051 دارای دوتایمر / شمارنده 16 بیتی برای زمانبندی فاصله های زمانی و یا شمارش اتفاقات است . تایمر 0 در آدرس های 8AH (بایت پایین ، TL0 ) و 8CH (بایت بالا ، TH0 ) و تایمر 1 در آدرس های 8BH (بایت پایین ، TL1 ) و 8DH (بایت بالا ، TH1 ) قرار دارند . عملکرد تایمر توسط ثبات حالت تایمر (TMOD) در آدرس 89H و ثبات کنترل تایمر (TCON) در آدرس 88H تعیین میشود که از این دو ، تنها TCON بیت آدرس پذیر است . تایمرها در فصل 4 بطور مشروح مورد بحث قرار خواهند گرفت .
7-5-2 ثبات های درگاه سریال
8051 شامل یک درگاه سریال روی تراشه برای ارتباط با ابزارهای سریال مانند پایانه ها و مودم ها و یا برای ارتباط با دیگر IC هایی که خطوط ارتباط سریال دارند (مبدل های آنالوگ به دیجیتال ، ثبات های انتقال RAM های غیرفرار و مانند آن) ، میباشد . ثباتی به نام بافر داده سریال (SBUF) در آدرس 99H هر دو داده دریافتی را در دسترس قرار میدهد . حالت های مختلف عملکرد درگاه سریال از طریق ثبات کنترل درگاه سریال در آدرس (SCON) 98H که بیت آدرس پذیر نیز هست ، قابل برنامه ریزی میباشد . عملکرد درگاه سریال بطور مفصل در فصل 5 بحث و بررسی شده است .
8-5-2 ثبات های وقفه
8051 دارای یک ساختار وقفه با پنج منبع وقفه و دو سطح تقدم میباشد . وقفه ها پ از reset شدن سیستم غیرفعال میشوند و سپس با نوشتن در ثبات فعال سازی وقفه(IE) در آدرس A8H ، فعال میگردند . سطح تقدم از طریق ثبات تقدم وقفه (IP) در آدرس B8H تعیین میشود . هردو ثابت بیت آدرس پذیر هستند . وقفه ها بطور مشروح در فصل 6 بررسی خواهند شد .
9-5-2 ثبات کنترل توان
ثبات کنترل توان (PCON) در آدرس 87H شامل بیت های کنترلی مختلفی است که در جدول 4-2 خلاصه شده اند .
بیت SMOD نرخ ارسال درگاه سریال را در حالت های 1 و 2 و 3 دو براب میکند . (به فصل 5 مراجعه کنید). بیت های 4 و 5 و 6 در PCON تعریف نشده اند و بیت های 2 و 3 بیت های پرچم همه منظوره برای استفاده کاربران میباشند . بیت های کنترل توان یعنی افت تغذیه (PD) و معلق (IDL) ابتدا در همه IC های خانواده MCS-51TM در دسترس بودند اما هم اکنون تنها در نسخه های CMOS منظور
جدول 3-2 خلاصه ثبات PCON
شرح عملکرد
نماد
بیت
بیت دو برابر کننده نرخ ارسال ، هنگام1 شدن ، نرخ ارسال در حالت های 1 ، 2 یا 3 درگاه سریال دو براب میشود
SMOD
7
تعریف نشده

6
تعریف نشده

5
تعریف نشده

4
بیت 1 پرچم همه منظوره
GF1
3
بیت 0 پرچم همه منظوره
GF0
2
افت تغذیه ، برای فعال کردن حالت افت تغذیه 1 میشود تنها راه خروج ، reset شدن است .
PD
1*
حالت معلق ، برای فعال کردن حالت معلق 1 میشود ، تنها راه خروج ، یک وقفه یا reset شدن است .
IDL
0*
میشوند . ثبات PCON بیت آدرس پذیر نیست .
1-9-5-2 حالت معلق
دستورالعملی که بیت IDL را 1 کند ، آخرین دستورالعملی خواهد بود که پیش از ورود به حالت معلق اجرا میشود . درحالت معلق سیگنال ساعت داخلی به CPU اعمال میشود ، اما نه برای کاربردهای وقفه ، تایمر و درگاه سریال . وضعیت CPU حفظ و محتویات ثبات ها تثبیت میگردد . پایه های درگاه ها هم سطح منطقی خود را حفظ میکنند . ALE و PSEN نیز بالا میروند .
حالت معلق توسط هر وقفه ای که فعال شود یا با reset شدن سیستم پایان میابد هریک از این شرایط بیت IDL را پاک میکند .
2-9-5-2 حالت افت تغذیه
دستورالعملی که بیت PD را 1 کند آخرین دستورالعملی خواهد بود که پیش از ورود به حالت افت تغذیه اجرا میشود . درحالت افت تغذیه : 1- نوسان ساز روی تراشه متوقف میشود ، 2- تمامی اعمال متوقف میشوند ، 3- محتویات RAM روی تراشه حفظ میشود ، 4- پایه های درگاه سطح منطقی خود را حقظ میکنند ، 5- ALE و PSEN پایین میروند . تنها راه خروج از این حالت ، reset کردن سیستم است .
هنگامی که سیستم در این حالت قرار دارد Vcc به 5 ولت برگردد .
6-2 حافظه خارجی
برای پرهیز از یک تنگنای بالقوه در طراحی ، میکروکنترلرها باید قابلیت توسعه را فراتر از منابع و امکانات روی تراشه خود داشته باشند . اگر قرار است امکاناتی توسعه یابد (حافظه ، I/O و مانند آن) قابلیت آن باید وجود داشته باشد . معماری MCS-51MT این قابلیت را به صورت K64 بایت فضای حافظه خارجی برای داده فراهم کرده است و درصورت نیاز ROM و RAM اضافی را میتوان به آن افزود . IC های ارتباط با ابزارهای جانبی نیز میتوانند برای افزایش قابلیت I/O اضافه گردند . اینها جزئی از فضای حافظه داده خارجی با استفاده از نقشه حافظه برای I/O میباشند .
هنگامی که حافظه خارجی مورد استفاده قرار میگیرد درگاه 0 به عنوان یک درگاه I/O قابل استفاده نیست . این درگاه به یک گذرگاه آدرس (A0-A7) و داده (D0-D7) مالتی پلکس شده تبدیل میشود . ALE بایت پایین آدرس را در شروع هرسیکل حافظه خارجی ذخیره میکند . درگاه 2 معمولا (اما نه همیشه) برای بایت بالای گذرگاه آدرس به کار گرفته میشود .
پیش از بحث پیرامون جزئیات خاص مالتی پلکس کردن گذرگاه های آدرس و داده ، ایده کلی در شکل 7-2 نشان داده شده است . یک آرایش بدون مالتی پلکس از 16 خط اختصاصی آدرس و 8 خط اختصاصی داده یعنی کلا از 24 پایه استفاده میکند . آرایش مالتی پلکس شده 8 خط گذرگاه داده را با بایت پایین گذرگاه آدرس مالتی پلکس مینماید . این تعداد با 8 خط دیگر برای بایت بالای گذرگاه آدرس ، کلا 16 پایه میشود . این صرفه جویی در پایه ها باعث میشود که امکانات و توانایی های بیشتری در یک بسته بندی دو ردیفه 40 پایه ایجاد شود .
حال ببینیم که آرایش مالیت پلکس شده چگونه کار میکند : درطی نیمه نخست هرسیکل حافظه بایت پایین آدرس در درگاه 0 قرار میگیرد و توسط ALE ذخیره میشود . یک 74HC373 (یا معادل آن) بایت پایین آدرس را درطی سیکل حافظه پایدار نگاه میدارد . درطی نیمه دوم سیکل حافظه درگاه 0 به عنوان گذرگاه داده به کار میرود و داده ، بسته به عمل انجام شده خوانده یا نوشته میشود .
1-6-2 دستیابی به حافظه کد خارجی
حافظه کد خارجی یک حافظه فقط خواندنی است که توسط سیگنال PSEN فعال میشود . هنگامی که از یک EPROM خارجی استفاده میکنیم ، درگاه های 0 و 2 به عنوان درگاه های I/O همه منظوره در دسترس ما نیستند . اتصالات سخت افزاری برای حافظه EPROM خارجی درشکل 8-2 نشان داده شده است .
یک سیکل ماشین در 8051 ، برابر با 12 تناوب نوسان ساز است . برای نوسان ساز روی تراشه با یک کریستال 12 مگاهرتز هرسیکل ماشین یک میکروثانیه طول میکشد . در طی یک سیکل ماشین نوعی ، ALE و پالس میدهد و دو بایت از حافظه برنامه خوانده میشود . (اگر دستورالعمل درحال اجرا ، یک دستورالعمل یک بایتی باشد از بایت دوم استفاده نمی شود). زمانبندی این عملیات که به واکشی کد عملیاتی معروف است درشکل 9-2 نشان داده شده است .
2-6-2 دستیابی به حافظه داده خارجی
حافظه داده خارجی یک حافظه خواندنی – نوشتنی است که با RD و WR فعال میشود . این دو سیگنال عملکرد دیگر پایه های P3.6 و P3.7 میباشند . تنها راه دستیبای به حافظه داده خارجی دستورالعمل MOVX میباشد که از اشاره گر داده 16 بیتی (DPTR) ، R0 و یا R1 به عنوان ثبات آدرس استفاده میکند .
RAM ها میتوانند همانند EPROM ها به 8051 مرتبط شوند ، با این تفاوت که RD به خط OE تراشه RAM و WR به خط W آن وصل میشود . اتصالات گذرگاه آدرس و داده همانند EPROM ها است . همانطور که گفته شد با استفاده از درگاه های 0 و 2 تا K64 بایت از RAM خارجی داده میتواند به 8051 وصل شود .
یک نمودار زمانبندی برای یک عمل خواندن از حافظخ داده خارجی برای دستورالعمل MOVX A, @DPTR درشکل 10-2 نشان داده شده است . توجه کنید که یک پالس ALE و یک پالس PSEN درعوض یک پالس روی خط RD برای فعال کردن RAM حذف شده است .
زمانبندی یک سیکل نوشتن برای MOVX @DPTR , A به همان شکل است . فقط WR پایین میرود و داده از درگاه 0 خارج میشود . (RD در وضعیتن بالا باقی میماند).
در سیستم هایی که با کمترین اجزاء ممکن طراحی میشوند ، از عملکرد دیگر درگاه 2 (یعنی تامین بایت بالای آدرس) صرفنظر میشود . زیرا این سیستم ها از حافظه کد خارجی استفاده نمی کنند وتنها به مقدار کمی حافظه داده خارجی نیاز دارند . اگر حافظه داده خارجی به صورت حافظه های کوچک صفحه گرا پیکربندی شود توسط آدرس های هشت بیتی قابل دسترسی است . اگر بیش از یک صفحه 256 بایتی از RAM موردنیاز باشد چند بیت از درگاه 2 (یا درگاه های دیگر) میتواند مطابق شکل 11-2 به 8051 مرتبط شود .
بیت های 0 و 1 درگاه 2 باید برای انتخاب یک صفحه مقداردهی اولیه شوند و سپس یک دستورالعمل MOVX برای خواندن و نوشتن داده در صفحه استفاده میشود . برای مثال فرض کنید P2.0 = P2.1 = 0 دستورالعمل های زیر میتوانند برای خواندن محتویات RAM خارجی به داخل انباره در آدرس 0050H به کار بروند :
MOV R0 , #50H
MOVX A, @R0
برای خواندن آخرین آدرس در این RAM یعنی 03FFH ، دو بیت انتخاب صفحه باید 1 شوند . رشته دستورالعمل های زیر برای این منظور میتوانند مورد استفاده قرار بگیرند :
SETB P2.0
SETB P2.1
MOV R0 , #0FFH
MOVX A, @R0
یک مزیت این طراحی این است که بیت های 2 تا 7 درگاه 2 به عنوان بیت های آدرس استفاده نمیشوند درحالی که اگر DPTR به عنوان ثبات آدرس به کار میرفت ، موردنیاز بودند . در نتیجه P2.2 تا P2.7 برای مقاصد I/O در دسترس قرار میگیرند .
3-6-2 رمزگشایی آدرس
اگر EPROM ها و یا RAM های متعددی به یک 8051 وصل شوند ، رمزگشایی آدرس موردنیاز خواهد بود . این رمزگشایی مثل رمزگشایی موردنیاز برای اغلب ریزپردازنده هاست . برای مثال اگر از EPROM ها و یا RAM های K8 بایتی استفاده شود ، گذرگاه آدرس باید طوری رمزگشایی گردد که IC های حافظه را در مرزهای K8 بایت مثل 0000H-1FFFH و 2000H-2FFFH و 3000H-3FFFH و مانند آن انتخاب کند .
عموما از یک IC رمزگشا مانند 74HC138 برای این کار استفاده میشود و پایه های خروجی آن به ورودی های انتخاب تراشه (CS) در IC های حافظه وصل میگردد . این مساله درشکل 12-2 برای سیستمی با EPROM های متعدد K8 بایتی از نوع 2764 و RAM های K8 بایتی از نوع 6264 نشان داده شده است . به یاد داشته باشید که به خاطر خطوط فعال سازی مجزا (PSEN برای حافظه کد و RD و WR برای حافظه داده) 8051 میتواند تا K64 بایت EPROM و K64 بایت RAM را به کار گیرد .
دستورالعمل های فوق از عملگر نقطه برای آدرس دادن به یک بیت دریک مکان بیت آدرس پذیر استفاده میکنند . اسمبلر تغییرات لازم را انجام میدهد ، بدین ترتیب دو دستورالعمل زیر معادل هستند :
CLR P1.7 CLR 97H کاربرد نمادهای از پیش تعریف شده اسمبلر (مثلP1) در فصل 7 بطور مفصل بررسی شده است . به عنوان یک مثال دیگر ارتباط با وسیله ای شامل یک بیت وضعیت به نام BUSY را درنظر بگیرید که هنگام مشغول بودن وسیله ، 1 و هنگام آماده بودن آن پاک میباشد . اگر BUSY برفرض به بیت 5 درگاه 1 وصل شده باشد ، حلقه زیر باعث میشود که سیستم برای آماده شدن وسیله صبر کند :
WAIT: JB P1.5 , WAIT
این دستورالعمل یعنی "اگر بیت P1.5 ، 1 شد ، به برچسب WAIT پرش کن "به عبارت
دیگر" برگرد و دوباره آن را بررسی کن".
6-5-2 ثبات های تایمر
8051 دارای دو تایمر / شمارنده 16 بیتی برای زمانبندی فاصله های زمانی و یا شمارش اتفاقات است . تایمر 0 در آدرس های 8AH (بایت پایین ، TL0) و 8CH (بایت بالا، TH0) و تایمر 1 در آدرس های 8BH (بایت پایین ، TL1) و 8DH (بایت بالا، TH1) قرار دارند . عملکرد تایمر توسط ثبات حالت تایمر (TMOD) در آدرس 89H و ثبات کنترل تایمر (TCON) در آدرس 88H تعیین میشود که از این دو ، تنها TCON بیت آدرس پذیراست . تایمرها در فصل 4 بطور مشروح مورد بحث قرار خواهند گرفت .
7-5-2 ثبات های درگاه سریال
8051 شامل یک درگاه سریال روی تراشه برای ارتباط با ابزارهای سریال مانند پایانه ها و مودم ها و یا برای ارتباط با دیگر IC هایی که خطوط ارتباطی سریال دارند (مبدل های آنالوگ به دیجیتال ، ثبات های انتقال RAM های غیر فرار و مانند آن) ، میباشد . ثباتی به نام بافر داده سریال (SBUF) در آدرس 99H هردو داده ارسالی و دریافتی را نگه میدارد . نوشتن در SBUF ، داده را برای ارسال آماده میکند و خواندن از SBUF ، داده دریافتی را در دسترس قرار میدهد . حالت های مختلف عملکرد درگاه سریال از طریق ثبات کنترل درگاه سریال در آدرس (SCON) 98H که بیت آدرس پذیر نیز هست ، قابل برنامه ریزی میباشد . عملکرد درگاه سریال بطور مفصل درفصل 5 بحث و بررسی شده است .
8-5-2 ثبات های وقفه
8051 دارای یک ساختار وقفه با پنج منبع وقفه و دوسطح تقدم میباشد . وقفه ها پس از reset شدن سیستم غیرفعال میشوند و سپس با نوشتن در ثبات فعال سازی وقفه (IE) در آدرس A8H ، فعال میگردند . سطح تقدم ازطریق ثبات تقدم وقفه (IP) در آدرس B8H تعیین میشود . هردوثبات بیت آدرس پذیر هستند . وقفه ها بطور مشروح درفصل 6 بررسی خواهند شد .
9-5-2 ثبات کنترل توان
ثبات کنترل توان (PCON) در آدرس 87H شامل بیت های کنترلی مختلفی است که در جدول 4-2 خلاصه شده اند .
بیت SMOD نرخ ارسال درگاه سریال را در حالت های 1 و 2 و 3 دو برابر میکند . (به فصل 5 مراجعه کنید). بیت های 4 و 5 و 6 در PCON تعریف نشده اند و بیت های 2 و 3 بیت های پرچم همه منظوره برای استفاده کاربران میباشند . بیت های کنترل توان یعنی افت تغذیه (PD) و معلق (IDL) ابتدا در همه IC های خانواده MCS-51TM در دسترس بودند اما هم اکنون تنها در نسخه های CMOS منظور میشوند . ثبات PCON بیت آدرس پذیر نیست .
1-9-5-2 حالت معلق
دستورالعملی که بیت IDL را 1 کند ، آخرین دستورالعملی خواهد بود که پیش از ورود به حالت معلق اجرا میشود . درحالت معلق سیگنال ساعت داخلی به CPU اعمال میشود ، اما نه برای کاربردهای وقفه ، تایمر و درگاه سریال . وضعیت CPU حفظ و محتویات ثبات ها تثبیت میگردد . پایه های درگاه ها هم سطح منطقی خود را حفظ میکنند . ALE و PSEN نیز بالا میبروند .
حالت معلق توسط هر وقفه ای که فعال شود یا با reset شدن سیستم پایان مییابد هریک از این شرایط بیت IDL را پاک میکند .
2-9-5-2 حالت افت تغذیه
دستورالعملی که بیت PD را 1 کند آخرین دستورالعملی خواهد بود که پیش از ورود به حالت افت تغذیه اجرا میشود . درحالت افت تغذیه : 1- نوسان ساز روی تراشه متوقف میشود ، 2- تمامی اعمال متوقف میشوند ، 3- محتویات RAM روی تراشه حفظ میشود ، 4- پایه های درگاه ها سطح منطقی خود را حفظ میکنند ، 5- ALE و PSEN پایین میروند . تنها راه خروج از این حالت ، reset کردن سیستم است .
هنگامی که سیستم دراین حالت قراردارد Vcc میتواند تا 2 ولت افت کند . باید مراقب بود که Vcc پیش از ورود به این حالت افت نکند و دست کم ده سیکل نوسان ساز پیش از پایین رفتن پایه RST (که باعث خروج از این حالت میشود) Vcc به 5 ولت برگردد .
6-2 حافظه خارجی
برای پرهیز از یک تنگنای بالقوه درطراحی ، میکروکنترلرها باید قابلیت توسعه را فراتر از منابع و امکانات روی تراشه خود داشته باشند . اگر قرار است امکانایت توسعه یابد (حافظه ، I/O و مانند آن) قابلیت آن باید وجود داشته باشد . معماری MCS-51MT این قابلیت را به صورت K64 بایت فضای حافظه خارجی برای داده فراهم کرده است و درصورت نیاز ROM و RAM اضافی را میتوان به آن افزود . IC های ارتباط با ابزارهای جانبی نیز میتوانند برای افزایش قابلیت I/O اضافه گردند . اینها جزئی از فضای حافظه داده خارجی با استفاده از نقشه حافظه برای I/O میباشند .
هنگامی که حافظه خارجی مورد استفاده قرار میگیرد درگاه 0 به عنوان یک درگاه I/O قابل استفاده نیست . این درگاه به گذرگاه آدرس (A0-A7) و داده (D0-D7) مالتی پلکس شده تبدیل میشود . ALE بایت پایین آدرس را در شروع هرسیکل حافظه خارجی ذخیره میکند . درگاه 2 معمولا (اما نه همیشه) برای بایت بالای گذرگاه آدرس به کارگرفته میشود .
پیش از بحث پیرامون جزئیات خاص مالتی پلکس کردن گذرگاه های آدرس و داده ، ایده کلی درشکل 7-2 نشان داده شده است . یک آرایش بدون مالتی پلکس از 16 خط اختصاصی آدرس و 8 خط اختصاصی داده یعنی کلا از 24 پایه استفاده میکند . آرایش مالیت پلکس شده 8 خط گذرگاه داده را با بایت پایین گذرگاه آدرس مالتی پلکس مینماید . این تعداد با 8 خط دیگر برای بایت بالای گذرگاه آدرس ، کلا 16 پایه میشود . این صرفه جویی در پایه ها باعث میشود که امکانات و توانایی های بیشتری دریک بسته بندی دو ردیفه 40 پایه ایجاد شود .
حال ببینیم که آرایش مالتی پلکس شده چگونه کار میکند : درطی نیمه نخست هرسیکل حافظه بایت پایین آدرس در درگاه 0 قرار میگیرد و توسط ALE ذخیره میشود . یک 74HC373 (یا معادل آن) بایت پایین آدرس درطی سیکل حافظه پایدار نگاه میدارد . درطی نیمه دوم سیکل حافظه درگاه 0 به عنوان گذرگاه داده به کار میرود و داده ، بسته به عمل انجام شده خوانده یا نوشته میشود .
1-6-2 دستیابی به حافظه کد خارجی
حافظه کد خارجی یک حافظه فقط خواندنی است که توسط سیگنال PSEN فعال میشود . هنگامی که ازیک EPROM خارجی استفاده میکنیم ، درگاه های 0 و 2 به عنوان درگاه های I/O همه منظوره در دسترس ما نیستند . اتصالات سخت افزاری برای حافظه EPROM خارجی در شکل 8-2 نشان داده شده است .
یک سیکل ماشین را 8051 ، برابر با 12 تناوب نوسان ساز است . برای نوسان ساز روی تراشه با یک کریستال 12 مگاهرتز هرسیکل ماشین یک میکروثانیه طول میکشد . درطی یک سیکل ماشین نوعی ، ALE دو پالس میدهد و دو بایت از حافظه برنامه خوانده میشود . ( اگر دستورالعمل درحال اجرا، یک دستورالعمل یک بایتی باشد از بایت دوم استفاده نمیشود). زمانبندی این عملیات که به واکشی کد عملیاتی معروف است درشکل 9-2 نشان داده شده است .
2-6-2 دستیابی به حافظه داده خارجی
حافظه داده خارجی یک حافظه خواندنی – نوشتنی است که با RD و WR فعال میشود. این دو سیگنال عملکرد دیگر پایه های P3.6 و P3.7 میباشند . تنها راه دستیابی به حافظه داده خارجی دستورالعمل MOVX میباشد که از اشاره گر داده 16 بیتی (DPTR) ، R0 و یا R1 به عنوان ثبات آدرس استفاده میکند .
RAM ها میتوانند همانند EPROM ها به 8051 مرتبط شوند ، با این تفاوت که RD به خط OE تراشه RAM و WR به خط W آن وصل میشود . اتصالات گذرگاه آدرس و داده همانند EPROM ها است . همانطورکه گفته شده با استفاده از درگاه های 0 و 2 تا K64 بایت از RAM خارجی داده میتواند به 8051 وصل شود .
یک نمودار زمان بندی برای کی عمل خواندن از حافظه داده خارجی برای دستورالعمل MOVX A, @DPTR درشکل 10-2 نشان داده شده است . توجه کنید که یک پالس ALE و یک پالس PSEN درعوض یک پالس روی خط RD برای فعال کردن RAM حذف شده است .
زمانبندی یک سیکل نوشتن بریا MOVX @DPTR , A به همان شکل است . فقط WR پایین میرود و داده از درگاه 0 خارج میشود . (RD در وضعیت بالا باقی میماند).
در سیستم هایی که با کمترین اجزاء ممکن طراحی میشوند ، از عملکرد دیگر درگاه 2 (یعنی تامین بایت بالای آدرس) صرفنظر میشود . زیرا این سیستم ها از حافظه کد خارجی استفاده نمیکنند و تنها به مقدارکمی حافظه داده خارجی نیاز دارند . اگر حافظه داده خارجی به صورت حافظه های کوچک صفحه گرا پیکربندی شود توسط آدرس های هشت بیتی قابل دسترسی است . اگر بیش از یک صفحه 256 بایتی از RAM موردنیاز باشد چند بیت از درگاه 2 (یا درگاه دیگر) میتواند یک صفحه را انتخاب کند . برای مثال K1 بایت RAM (یعنی چهارصفحه 256بایتی) میتواند مطابق شکل 11-2 به 8051 مرتبط شود .
بیت های 0 و 1 درگاه 2 باید برای انتخاب یک صفحه مقداردهی اولیه شوند و سپس یک دستورالعمل MOVX برای خواندن و نوشتن داده در صفحه استفاده میشود . برای مثال فرض کنید P2.0 = P2.1 = 0 دستورالعمل های زیر میتوانند برای خواندن محتویات RAM خارجی به داخل انباره در آدرس 0050H به کار بروند :
MOV R0 , #50H MOVX A, @R0 برای خواندن آخرین آدرس در این RAM یعنی 03FFH ، دو بیت انتخاب صفحه باید 1 شوند . رشته دستورالعمل های زیر برای این منظور میتوانند مورد استفاده قرار بگیرند :

SETB P2.0 SETB P2.1 MOV R0 , #0FFH MOVX A, @R0
یک مزیت این طراحی است است که بیت های 2 تا 7 درگاه به عنوان بیت های آدرس استفاده نمیشوند در حالی که اگر DPTR به عنوان ثبات آدرس به کار میرفت ، موردنیاز بودند . درنتیجه P2.2 تا P2.7 برای مقاصد I/O در دسترس قرار میگیرند .
3-6-2 رمزگشایی آدرس
اگر EPROM ها و یا RAM های متعددی به یک 8051 وصل شوند ، رمزگشایی آدرس موردنیاز خواهد بود . این رمزگشایی مثل رمزگشایی موردنیاز برای اغلب ریزپردازنده هاست . برای مثال اگر از EPROM ها و یا RAM های K8 بایتی استفاده شود ، گذرگاه آدرس باید طوری رمزگشایی گردد که IC های حافظه را در مرزهای K8 بایت مثل 000H-1FFFH و 2000H-2FFFH و 3000H-3FFFH و مانند آن انتخاب کند.
عموما از یک IC رمزگشا مانند 74HC138 برای این کار استفاده میشود و پایه های خروجی آن به ورودی های انتخاب تراشه (CS) در IC های حافظه وصل میگردد . این مساله درشکل 12-2 برای سیستمی با EPROM های متعدد K8 بایتی از نوع 2764 و RAM های K8 بایتی از نوع 6264 نشان داده شده است . به یاد داشته باشید که به خاطر خطوط فعال سازی مجزا (PSEN برای حافظه کد و RD و WR برای حافظه داده) 8051 میتواند تا K64 بایت EPROM و K64 بایت RAM را به کارگیرد .
4-6-2 اشتراک درفضای حافظه کد و داده خارجی
از آنجا که حافظه کد فقط خواندنی است . ممکن است درحین تهیه نرم افزار 8051 وضعیت نامناسبی رخ دهد . سوالی که در اینجا پیش می آید این است که چگونه یک نرم افزار که در سیستم موردنظر نوشته شده از فضای کد فقط خواندنی قابل عیب یابی است ؟ یک شگرد معمول آن است که فضای حافظه کد و داده خارجی را به اشتراک بگذاریم . چون PSEN برای خواندن حافظه کد ، و RD برای خواندن حافظه داده به کار میروند ، یک RAM میتواند با اتصال خط OE خود به AND (NOR با ورودی منفی) PSEN و RD هم فضای حافظه کد ، و هم فضای حافظه داده در آن نوشته شود و به عنوان حافظه داده یا کد از آن خوانده شود . بدین ترتیب یک برنامه میتواند به داخل RAM (با نوشتن در آن به عنوان حافظه داده) منتقل گردد و (با دستیابی به آن عنوان حافظه کد) اجرا شود .
7-2 امکانات اضافی 8032 / 8052
IC های 8032 / 8052 ( و نسخه های CMOS و یا نسخه های EPROM دار)، دو مزیت بر IC های 8031 / 8051 دارند . اول این که دارای 128 بایت اضافی RAM روی تراشه از آدرس 80H تا FFH میباشند . پس برای این که با SFR ها (که در همان آدرس ها قرار دارند) تداخل بوجود نیاید ، کیلو بایت اضافی RAM تنها از طریق آدرس دهی غیرمستقیم قابل دستیابی است . یک دستورالعمل مثل :
MOV R0 , #0F0H در همه IC های خانواده MCS-51MT محتویات ثبات B را به انباره منتقل میکند . دو دستورالعمل زیر :
MOV R0 , #0F0H MOV A, #R0 محتوای آدرس داخلی F0H را در IC های 8032 / 8052 به انباره منتقل میکند اما در IC های 8031 / 8051 تعریف نشده است . سازمان حافظه داخلی IC های 8032 / 8052 را درشکل (14-2) بطورخلاصه میتوان یافت .
دومین مزیت 8032 / 8052 یک تایمر 16 بیتی اضافی است یعنی تایمر 2 که از طریق پنج ثبات کاربرد خاص اضافی برنامه ریزی میشود که درجدول 5-2 خلاصه شده اند . برای جزئیات بیشتر به فصل 4 مراجعه کنید .
8-2 عملیات راه اندازی مجدد ، reset
8051 با قرار گرفتن RST در وضعیت منطقی بالا برای دست کم دوسیکل ماشین و سپس پایین آمدن آن میتواند reset شود . RST ممکن است بطور دستی با استفاده از یک سوئیچ و یا هنگام اعمال تغذیه توسط یک مدار RC (مقاومت – مخازن) فعال گردد . شکل (15-2) دو مدار برای reset کردن سیستم را نشان میدهد .
وضعیت همه ثبات های 8051 پس از reset سیستم در جدول 6-2 خلاصه شده است . شاید مهمترین این ثبات ها شمارنده برنامه باشد که با 0000H بار میشوند . هنگامی که RST دوباره پایین
جدول 5-2 ثبات های تایمر 2
بیت آدرس پذیر
شرح عملکرد
آدرس
ثبات
بله
کنترل
C8H
T2CON
خیر
تسخیر بایت پایین
CAH
RCAP2L
خیر
تسخیر بایت بالا
CBH
RCAP2H
خیر
بایت پایین تایمر 2
CCH
TL2
خیر
بایت بالای تایمر2
CDH
TH2
جدول 6-2 مقادیر ثبات ها پس از reset سیستم
ثبات ها
محتویات
شمارنده برنامه
0000H
انباره
00H
ثبات B
00H
PSW
00H
SP
07H
DPTR
0000H
درگاه 0-3
FFH
IP (8031/8051)
XXX00000B
IP (8032/8052)
XX000000B
IE (8031/8051)
0XX00000B
IE (8032/8052)
0X000000B
ثبات های تایمر
00H
SCON
00H
SBUF
00H
PCON (HMOS)
0XXXXXXXB
PCON (CMOS)
0XXX0000B
خروجی آنالوگ
در ارتباط با دنیای بیرون گاهی لازم است که شرایط آنالوگ را حس و یا ارسال کرد . تولید و کنترل سیگنال خروجی آنالوگ از میکروکنترلر آسان است . در این مثال طراحی ، از دومقاومت ، دو خازن ، یک پتانسیومتر ، یک LE301 op-amp و یک MC1408L8 که یک مبدل دیجیتال به آنالوگ 8 بیتی است ، استفاده شده است . هردو IC ارزان بوده و براحتی قابل تهیه هستند . هشت داده ورودی به DAC از درگاه 1 در 8031 (شکل 15-10 را ملاحظه کنید) فعال میشوند . مدار ، پس از ساخت و اتصال آن به SBC-51 ، باید با استفاده از فرمانهای نمایش ، آزمایش شود . ولتاژ خروجی پایه 6 را در LM301 (Vo) ، هنگام نوشتن مقادیر مختلف در درگاه 1 اندازه گیری و پتانسیومتر 1K را تنظیم کنید . خروجی باید از صفر ولت (P1 = 00H) تا حدود 10 ولت (P1 = FFH) تغییر کند .
پس از آن که مدار یک بار بطور صحیح کارکرد ، آماده ارتباط نرم افزاری است . برنامه معمول برای آزمایش ، مولد موج دندانه اره ای است که مقداری را به DAC می فرستد ، آن را افزایش میدهد و مجددا میفرستد و همین طور این کار را ادامه میدهد ، (سوال 3 را در انتهای این فصل بیینید). اما ما این کار را با طرحی پیشرفته تر – یعنی مولد موج سینوسی با کنترل دیجیتالی ، انجام میدهیم .
هدف طرح
برنامه ای بنویسید که با استفاده از رابط DAC شکل 15-10 یک موج سینوسی تولید کند . از فراخوانی ثابت STEP برای تنظیم فرکانس موج سینوسی استفاده کنید . برنامه را با وقفه و بهنگام سازی با سرعت 10KHz ، بنویسید .
از آنجا که توانایی خرد کردن عدد در 8031 محدود است ، تنها راه منطقی برای این مساله استفاده زا جدول جستجو میباشد . به یک جدول با مقادیر 8 بیتی متناظر با یک دوره تناوب موج سینوسی نیاز است . مقادیر باید حول 127 شروع شده ، تا 255 افزایش یابد . سپس به 127 و صفر کاهش یافته ، مجددا به 127 باز میگردد و الگوی یک موج سینوسی را تعقیب میکند .
تقریب منطقی موج سینوسی نیاز به جدولی نسبتا بزرگ دارد ، بنابراین چگونگی تولید چنین جدولی مدنظر است . روشهای دستی ، غیرعملی میباشند . آسانترین راه ، نوشتن برنامه ای بزبان سطح بالا جهت تولید جدول و ذخیره کردن آن در یک فایل است . سپس جدول به برنامه منبع 8031 وارد شده کار تمام میشود . شکل 16-10 یک برنامه ساده بزبان C جدول 51.c را که انجام دهنده این عمل است ، نشان میدهد . برنامه یک جدول موج سینوسی با 1024 ورودی با مقادیری بین صفر تا 255 ، تولید میکند . خروجی دریک فایل خروجی به نام sine 51.src نوشته میشود . قبل از هر ورود ، برای سازگار شدن با کد منبع 8031 یک "DB" قرار میگیرد .
برنامه موج سینوسی 8031 درشکل 17-10 نشان داده شده است . حلقه اصلی (خطوط 36 تا 40 ) شامل مواد زیر است : آغاز تایمر 0 هر مقداری از جدول جستجو با استفاده از DPTR خوانده شده و سپس در درگاه 1 نوشته میشود . مقدار ثابتی به نام STEP برای افزایش داخل جدول مورد استفاده قرار میگیرد . STEP به عنوان یک بایت در RAM داخلی ، درخط 26 تعریف شده است و باید توسط یک فرمان نمایش آغاز شود . در هر ISR ، STEP به DPTR افزوده میشود تا آدرس نمونه برداری بعدی به دست آید . آغاز جدول ، ORG ، از محل 8400H (خط 69) ، بنابراین در مرز 1K آغاز میشود . اگر DPTR پس از 87FFH (پایان جدول) باز هم افزایش یابد ، طوری تنظیم میشود که به آغاز جدول بازگردد . از آنجا که جدول بسیار بزرگ است ، دستور $NOLIST اسمبلر ، پس از پنچ ورود اول (خط77) به کار میرود تا به خروج فایل فهرستی پایان بدهد . دستور $NOLIST اسمبلر ، درخط 1092 (که نشان داده نشده است) ، به کار رفته تا برای پنج ورود آخر رجوع به فهرست را امکان پذیر سازد . فرکانس موج سینوسی باسه پارامتر کنترل میشود : STEP ، اندازه جدول و دروه تناوب وقفه تایمر ، که این امر درخطوط 16 تا 20 فهرست مشخص شده است .
ارتباط با LED های هفت قسمتی چندگانه
در مسائل انتهای فصل 3 (شکل 5-3 را ببینید) رابط نمایشگر LED هفت قسمتی ارائه شد . متاسفانه ، رابط به کار رفته از هفت خط درگاه 1 استفاده کرده و بنابراین استفاده بهینه از امکانات روی تراشه 8051 را محدود میسازد . در این بخش رابطی را برای LED های هفت قسمتی فقط با استفاده از سه خط I/O در 8255 ، تشریح میکنیم . بوضوح این طرح بهینه است ، چون میتوان از نمایشگرهای چندگانه استفاده کرد .
مهمترین قسمت طرح ، MC14499 از شکرت موتورولاست که یک رمزگشا / راه انداز نمایشگرهای هفت قسمتی است و ملحقات آن برای اتصال به چهار نمایشگر ، نشان داده شده اند . تنها عناصر اضافی ، یک خازن زمانبندی ، هفت مقاومت محدود کننده جریان 47 اهمی و چهار ترانزیستور 2N3904 هستند . شکل 5-10 اتصالات بین 80C51 ، MC14499 و چهار LED هفت قسمتی را نشان میدهد .

هدف طرح
فرض کنید که رقمهای BCD در RAM داخلی در محلهای 70H و 71H قرار دارند . با استفاده از وقفه ها ، رقمهای BCD را ده بار در ثانیه روی نمایشگرهای LED نمایش دهید .
نرم افزار انجام عمل فوق درشکل 6-10 نشان داده شده است . فهرست ، برخی از مفاهیمی را که قبلا مورد بحث قرار دادیم ، به تصویر کشیده است . جزئیات ارسال داده به MC14499 در زیر روالهای UPDATE و OUT8 فراهم آمده اند . این مثال در سطحی بالاتر ، طراحی کاربردهای راه اندازی شده با وقفه را با توضیح فعالیتهای اصلی و فرعی تشریح میکند ، (برخلاف مثالهای فصل 6 که تنها فعالیتهای اصلی را شرح میداد). وقفه های این مثال با MON51 که از وقفه ها در آن استفاده نشده باشد ، سازگارند . برنامه نمایش در قسمت فرعی ، هنگام اجرای برنامه شکل 6-10 درسطح وقفه در قسمت اصلی ، اجرا میشود . هنگامی که برنامه شروع شود (مثلا با وارد کردن دستور GO8000 در MON51 ، ضمیمه چ را ببینید) ، شرایط برای بهنگام سازی آغاز وقفه برای نمایشگرهای LED ، آماده میشوند ، و سپس کنترل سریعا به برنامه نمایش باز میگردد . فرمانهای نمایش به صورت معمول اجرا میشوند ، در ضمن ، وقفه ها در قسمت اصلی اتفاق می افتند . بطور مثال اگر فرمان SET نمایش برای تغییر محلهای 70H و 71H در RAM داخلی مورد استفاده قرار گیرد ، تغییرات فورا (در عرض 1/0 ثانیه) روی نمایشگرهای LED هفت قسمتی دیده خواهند شد .
به ساختار کلی برنامه توجه کنید . بخشهای زیر بترتیب به چشم میخورند :
 کنترلهای اسمبلر (خطوط 1 تا 3)
 قالب توضیح (خطوط 4 تا 30)
 تعریف نمادها (31 تا 38)
 تعیین نوع ذخیره سازی (خطوط 40 تا 42)
 جدول پرش برای برنامه و نقاط ورود وقفه (خطوط 44 تا 51)
 بخش اصلی (MAIN ، خطوط 56 تا 59)
 زیر روال سرویس وقفه خارجی (EXTOISR ، خطوط 74 تا 77)
 زیر روال بهنگام سازی نمایشگر LED (UPDATE ، خطوط 89 تا 97)
 زیر روال خروج بایت (OUT8 ، خطوط 103 تا 113)
 کد عدم پیاده سازی وقفه ها (خطوط 118 تا 123)
برنامه اجرا در آدرس 8000H در RAM شماره 6264 در SBC-51 ، نوشته شده است . از آنجا که بردار وقفه ها در انتهای حافظه است ، برنامه نمایش شامل یک جدول پرش برای جهت دهی وقفه ها به آدرس آغاز 8000H است ، (ضمیمه چ را ببینید) . نقطه ورود برنامه برای راحیت 8000H درنظر گرفته میشود ، اما یک دستورالعمل LJMP (خط 45 درشکل 6-10 را ملاحظه کنید ) ، کنترل را به برچسب MAIN هدایت میکند . همه دستورالعمل های مقداردهی اولیه در خطوط 56 تا 58 هستند . بخش MAIN با پرش به برنامه نمایش پایان مییابد .

رابط بلندگو
یک رابط بین بلندگو و 8031 درشکل 7-10 نشان داده شده است . بلندگوهای کوچک نظیر آنهایی که در کامپیوترهای شخصی یا اسباب بازینهای کودکان وجود دارند را میتوان مطابق شکل ، با یک گیت منطقی راه اندازی کرد . یک طرف سیم پیچ بلندگو به 5+ ولت ، و طرف دیگر به خروجی وارونگر منطقی 74LS04 متصل میشود . وجود وارونگر لازم است ، چون توانایی راه اندازی آن از خطوط درگاه 8031 بیشتر است .

1 transition
2 transistor – transistor logic
3 I/O port
4 timer/counter
5 serial interface
6 Boolean processor
7 bit-addressable
8 On-chip ROM
9 low power CMOS
10 solenoids
11 external code memory
12 extrnal data memory
13 reset
14 machine cycle
15 On-chip oscillator
16 port latch
17 low power Schottky TTL
18 pull-up resistor
19 read latch
20 read pin
21 Speical Function Registers
22 memory mapped
23 accumulator
24 register banks
25 program status word
—————

————————————————————

—————

————————————————————

1

27


تعداد صفحات : 85 | فرمت فایل : Word

بلافاصله بعد از پرداخت لینک دانلود فعال می شود