مقدمهای بر میکروکنترلر 8051
باوجود اینکه بیش از بیست سال از تولد ریز پردازنده نمیگذرد، تصور وسیال الکترونیکی و ...
بدون آنکه کار مشکی است در سال 1971 شرکت اینتل: 8080 را به عنوان اولین ریز پردازنده موفق عرضه کرد مدت کوتاهی پس از آن، موتورولا، RCA و سپس Mostechnoloy و zilog انواع مشابهی را به ترتیب به نامهای Z80 , 6502 , 6800 عرضه کردند.
گرچه این مدارهای مجتمع به خودی خود فایده چندانی نداشتند. اما به عنوان بخشی از یک کامپیوتر تک بورد (SBC) به جزء مرکزی فرآوردههای مفیدی برای آموزش طراحی با ریز پردازنده ها تبدیل شدند.
از این SBC کمه به سرعت به آزمایشگاههای طراحی در کالجها، دانشگاهها و شرکت های الکترونیکی راه پیدا کردند ومی توان برای نمونه از D2 موتورولا KIM-1 ساخت Mostechnology و SDK-85 متعلق به شرکت اینتل نام برد.
میکروکنترلر قطعهای شبیه به ریز پردازنده است.
در 1976 اینتل 8745 را به عنوان اولین قطعه خانوادهی یک CPU، 1 کیلو بایت EPROM ، 64 بایت، RAM، 27 پایه I/O و یک تایمر 8 بیتی بود.
توان، ابعاد و پیچیدگی میکروکنترلرها با اعلام ساخت8051 یعنی اولین عضو خانواده میکروکنترلرهای MCS-51 در 1980 توسط اینتل پیشرفت چشمگیری کرد.
در مقایسه با 8048 این قطعه شامل بیش از 60000 ترانزیستور، K4 بایت ROM، 128 بایت RAM، 32 خط I/O یک درگاه سریال و دو تایمر 16 بیتی است.
که از لحاظ مدارات داخلی برای یک IC بسیار قابل ملاحظه است.
امروزه انواع گوناگونی از این IC وجود دارند که بصورت مجازی این مشخصات را دو برابر کردهاند.
شرکت زیمنس که دومین تولیدکننده قطعات MCS-51 است SAB80515 را به عنوان یک 8051 توسعه یافته در یک بستهی 68 پایه با شش درگاه I/O 8 بیتی، 13 منبع وقفه و یک مبدل آنالوگ به دیجیتال با 8 کانال ورودی عرضه کرده است خانواده 8051 به عنوان یکی از جامعترین و قدرتمندترین میکروکنترلرهای 8 بیتی شناخته شده و جایگاهش را به عنوان یک میکروکنترلر مهم برای سالهای آینده یافته است.
اصطلاحات فنی
یک کامپیوتر توسط دو ویژگی کلیدی تعریف میشود: (1) داشتن قابلیت برنامهریزی برای کار کردن روی داده بدون مداخله انسان و (2) توانایی ذخیره و بازیابی عموماً یک سیستم کامپیوتری شامل ابزارهای جانبی برای ارتباط با انسانها به علاوه برنامههایی برای پردازش داده نیز میباشد تجهیزات کامپیوتر سخت افزار و برنامه های آن نرم افزار نام دارند.
یک سیستم کامپوتری شامل یک واحد پردازش مرکزی است که از طریق گذرگاه آدرس، گذرگاه داده و گذرگاه کنترل به حافظه قابل دستیابی تصادفی و حافظهی فقط خواندنی متصل میباشد.
مدارهای واسطه گذرگاههای سیستم را به وسایل جانبی متصل می کنند.
واحد پردازش مرکزی
CPU بعنوان مغز سیستم کامپیوتری تمامی فعالیتهای سیستم را اداره کرده و همهی عملیات روی داده را انجام میدهد این تراشه فقط مجموعهای از مدارهای منطقی است که بطور مداوم دو عمل انجام میدهند.
واکشی دستورالعملها و اجرای آن CPU توانایی درک و اجرای دستورالعمل ها را بر اساس مجموعهای از کدهای دودویی دارد که هر یک از این کدها نشان دهندهی یک عمل است.
این دستورالعملها معمولاً حسابی یا منطقی.
انتقال داده هستند و با مجموعهای از کدهای دودویی با نام مجموعهی دستورالعملها نشان داده میشوند.
(instruction set) واکشی یک دستورالعمل از RAM سیستم یکی از اساسیترین اعمال است که توسط CPU انجام میشود و شامل این مراحل است: الف) محتویات شمارنده برنامه در گذرگاه آدرس قرار میگیرد. ب) یک سیگنال کنترل READ فعال میشود پ) داده یا کد عملیاتی دستورالعمل از RAM خوانده میشود و روی گذرگاه داده قرارمیگیرد ت) کد عملیاتی در ثبات داخلی دستورالعمل CPU ذخیره میشود و شمارنده برنامه یک واحد افزایش مییابد تا برای واکشی بعدی از حفاظه آماده شود.
مرحله ای اجرا مستلزم رمز گشایی کد عملیاتی و ایجاد سیگنالهای کنترلی برای گشودن ثباتهای درونی به داخل و خارج از ALU است همچنین باید به ALU برای انجام عملیات مشخص شده فرمان داده شود.
به علت تنوع زیاد عملیات ممکن این توضیحات تا حدی سطحی می باشد و در یک عملیات ساده مثل افزایش یک واحدی ثبات مصداق دارند دستورالعملهای پیچیدهتر نیاز به مراحل بیشتری مثل خواندن بایت دوم و سوم به عنوان داده برای عملیات دارند.
مقایسه ریز پردازندهها با میکروکنترلرها
میدانیم که ریز پردازندهها CPU هایی تک تراشه هستند و در میکرو کامپیوترها به کار میروند پس فرق میکروکنترلرها با ریزپردازندهها چیست؟
با این سوال از سه جنبه می توان برخورد کرد: معماری سخت افزار کاربردها و ویژگیهای مجموعهی دستورالعملها.
معماری سخت افزار
یک ویژگی مهم میکروکنترلرها سیستم وقفهی موجود در داخل آنهاست.
میکروکنترلرها به عنوان ابزارهای کنترلگرا اغلب برای پاسخ بیدرنگ به محرکهای خارجی مورد استفاده قرار میگیرند.
یعنی باید در پاسخ به یک اتفاق سریعا یک فرآیند را معوق می گذارد به فرآیند دیگر بپردازند.
باز شدن در یک اجاق مایکروویومثالی است از یک اتفاق که ممکن است باعث ایجاد یک وقفه در یک سیستم میکروکنترلری شود.
البته اغلب ریز پردازنده ها می توانند سیستمهای وقفه قدرتمندی را به اجرا بگذارند.
اما برای این کار معمولا نیاز به اجزای خارجی دارند.
مدارات روی تراشه یک میکروکنترلر شامل تمام مدارات مورد نیاز برای بکارگیری وقفهها می باشد.
کاربردها:
ریز پردازندهها اغلب به عنوان CPU در سیستمهای میکروکامپیوتری بکار میروند.
این کاربرد دلیل طراحی آنها و جایی است که می توانند توان خود را به نمایش بگذارند.
بااین وجود میکروکنترلرها در طراحیهای کوچک با کمترین اجزا ممکن که فعالیتهای کنترلگرا انجام میدهند نیز یافت میشوند.
این طراحی ها در گذشته با چند دوجین یا حتی صدها IC دیجیتال انجام میشد یک میکروکنترلر می تواند در کاهش تعداد کل اجزا کمک کند.
آنچه که مورد نیاز است عبارتست از یک میکروکنترلر تعداد کمی افراد پشتیبان و یک برنامه کنترلی در ROM میکروکنترلرها برای کنترل، ابزارهای I/O در طراحیهایی با کمترین تعداد اجزا ممکن مناسب هستند، اما ریز پردازندهها برای پردازش اطلاعات در سیستمهای کامپیوتری مناسبند.
ویژگیهای مجموعهی دستورالعملها
به علت تفاوت در کاربردها، مجموعهی دستورالعملهای مورد نیاز برای میکروکنترلرها تا حدودی با ریزپردازندهها تفاوت دارد.
مجموعه دستورالعملهای ریز پردازندهها بر عمل پردازش تمرکز یافتهاند و در نتیجه دارای روشهای آدرس قدرتمند به همراه دستورالعملهایی برای انجام عملیات روی حجم زیاد داده میباشند.
دستورالعملها روی چهار بیتها بایتها، کلمهها یا حتی کلمههای مضاعف عمل میکنند.
روش های آدرس دهی با استفاده از فاصلههای نسبی و اشارهگرهای آدرس امکان دسترسی به آرایههای بزرگ را فراهم میکنند.
حالت های افزایش یک واحدی اتوماتیک و کاهش یک واحدی اتوماتیک، حرکت گام به گام روی بایتها، کلمهها و کلمههای مضاعف را در آرایهها آسان میکنند.
دستورالعملهای رمزی نمی توانند در داخل برنامه کاربر اجرا شوند.
از طرف دیگر میکروکنترلرها مجموعه دستورالعملهایی مناسب برای کنترل ورودیها و خروجیها دارند ارتباط با بسیاری از ورودیها و خروجیها تنها نیازمند یک بیت است.
برای مثال یک موتور میتواند توسط یک سیمپیچ که توسط یک درگاه خروجی یک بیتی انرژی دریافلت می کند.
روشن و خاموش شود.
میکروکنترلرها دستورالعمل هایی برای 1 کردن و 0 کردن بیت های جداگانه دارند ودیگر عملیات روی بیتها مثل EXOR , OR , AND عملکرد منطقی بیتها، پرش در صورت 1 کردن یا پاک بودن یک بیت و مانند آنها را نیز انجام میدهند.
برای کنترل و نظارت ابزارها میکروکنترلرهامدارات داخلی و دستورالعملهایی برای عملیات ورودی و خروجی زمانبندی اتفاقات و تعینی اولویت وقفه ها دارند ریز پردازندهها اغلب به مدارات اضافی برای انجام اعمال مشابه نیاز دارند.
از آنجا که فضاهای واقعی در تراشه برای میکروکنترلرها اهمیت دارند.
دستوالعملها باید بینهایت شده باشند و اساساً در یک بایت پیادهسازی شوند یکی از کلمات در طراحی جا دادن برنامه کنترلی در داخل ROM روی تراشه است .
زیرا افزودن حتی یک ROM خارجی هزینههای نهایی تولید را بسیار افزایش میدهد.
به رمز درآوردن فشرده برای مجموعه دستورالعملهای میکروکنترلر اساسی است در حالی که ریز پردازندهها بندرت دارای این ویژگی میباشند.
روشهای آدرسدهی قدرتمند آنها باعث به رمز درآوردن غیر فشردهی دستورالعملها میشود.
برای کنترل و نظارت ابزارها میکروکنترلرهامدارات داخلی و دستورالعملهایی برای عملیات ورودی و خروجی زمانبندی اتفاقات و تعینی اولویت وقفه ها دارند ریز پردازندهها اغلب به مدارات اضافی برای انجام اعمال مشابه نیاز دارند.
روشهای آدرسدهی قدرتمند آنها باعث به رمز درآوردن غیر فشردهی دستورالعملها میشود.
مروری بر خانواده MCS-51 MCS-51 خانوادهای از میکروکنترلرهاست که توسط شرکت اینتل به بازار عرضه شده است.
دیگر تولید کنندگان IC نظیر زیمنس، AND فیلیپس بعنوان تولید کننده، ثانویه،ICهای این خانواه را تحت مجوز اینتل تولید میکنند.
هر میکروکنترلر این خانواده از امکاناتی مناسب با یک سری طراحیهای مشخص برخوردار است.
8051 یک IC نوعی و اولین عضو این خانواده است که بصورت تجاری مطرح شد خلاصه مشخصات این IC بدین شرح است: 1- K4 بایت ROM 2- 128 بایت RAM 3- چهار درگاه I/O هشت بیتی 4- دوتایمر شمارنده 16 بیتی 5- رابطه سریال 6- k64 بایت فضای حافظه خارجی برای کد 7- k64 بایت فضای حافظه خارجی برای داده 8- پردازنده بولی 9- 210 مکان بیتی آدرس پذیر 10- انجام عملیات ضرب و تقسیم در 4 میکروثانیه دیگر اعضا خانواده MCS-51 هر یک از امکانات دیگری از قبیل ROM روی تراشه.
RAM , EPROM روی تراشه و یا یک تایمر سوم را دارا هستند.
در ضمن هر یک از انواع ICهای این خانواده یک نسخه مشابه با CMOS کم مصرف نیز دارد.
بررسی پایهها: 32 پایه از 40 پایه 8051 به عنوان درگاه I/O عمل میکند.
معهذا 24 خط از این خطوط دو منظوره هستند.
هر یک از این خطوط میتوانند به عنوان I/O یا خط کنترل و یا بخشی از گذرگاه آدرس یا داده بکار روند.
در طراحیهایی که با کمترین مقدار حافظه ودیگر قطعات خارجی انجام میشوند.
از این درگاهها به عنوان I/O همه منظوره استفاده میکنند.
هر هشت خط یک درگاه می تواند به صورت یک واحد در ارتباط با وسایل موازی مانند چاپگرها و مبدلهای دیجیتال به آنالوگ بکار روند و یا هر خط به تنهایی با وسایل تک بیتی مثل سویئچها، LED،ها، ترانزیستورها، سیمپیچها، موتورها و ....
ارتباط برقرار کنند.
درگاه 0 این درگاه یک درگاه دو منظوره از پایه 32 تا 39 تراشه 8051 می باشد.
این درگاه در طراحی های با کمترین اجزای ممکن به عنوان یک درگاه I/O عمومی استفاده می شود.
در طراحی های بزرگتر که ازحافظه خارجی استفاده می کنند، این درگاه یک گذرگاه آدرس و داده مالتی پلکس شده می باشد.
درگاه 1 درگاه 1 ، درگاه اختصاصی I/O روی پایه های 1 تا 8 است .
پایه های P1.0 تا P1.1 در صورت نیاز برای ارتباط با وسایل خارجی بکار میروند.
وظیفه دیگری برای پایه های در تا 1 در نظر گرفته نشده است.
بنابراین آنها گهگاه برای ارتباط با وسایل خارجی بکار می روند.
استثنائاً در IC های 8032/8052 که از P1.0 و P1.1 به عنوان خطوط I/O و یا ورودی تایمر سوم استفاده می شود.
درگاه 2 درگاه 2 (پایه های 21 تا 28 یک درگاه دو منظوره است که به عنوان I/O عمومی و یا بایت بالای گذرگاه آدرس در طراحی با حافظه کد خارجی به کار می رود.
این درگاه همچنین در طراحی هایی که به بیش از 256 بایت از حافظه داده خارجی نیاز دارند نیز استفاده می شود.
درگاه 3 درگاه 3، یک درگاه دو منظوره روی پایه های 10 تا 17 می باشد.
علاوه بر I/O عمومی این پایه ها هر یک وظایف دیگری نیز در رابطه با امکانات خاص 8051 دارند.
(Program store Enable) PSEN 8051 چهار سیگنال اختصاص یافته برای کنترل گذرگاه دارد.
PSEN یک سیگنال خروجی روی پایه 29 است که حافظه برنامه کد را فعال میکند.
این پایه معمولاً به پایه ی OE یک EPROM وصل می گردد.
تا خواندن بایت های برنامه از EPROM امکان پذیر شود.
سیگنال PSEN در طی مرحله خواندن یک دستورالعمل پایین می رود.
کدهای دودویی برنامه از EROM خوانده می شوند، در گذرگاه داده منتقل می گردند و بریا رمزگشایی در ثبات دستورالعمل 8051 ذخیره می شوند.
هنگام اجرای برنامه از ROM داخلی PSEN در حالت غیرفعال باقی می ماند.
(Address latoh Enable) ALE سیگنال خروجی ALE در پایه 30 برای هر فردی که باریزپردازندههای اینتل مثل 8088, 8086, 8085 کارکرده باشد، آشناست.
8051 بطور مشابهی ALE برای جداسازی گذرگاه آدرس و داده استفاده می کند.
هنگامیکه درگاه 0 در حالت خاص خود به عنوان گذرگاه داده و بایت پایین گذرگاه آدرس استفاده می شود.
سیگنال ALE آدرس را یک ثبات خارجی در طی نیمه ی نخست سیکل حافظه نگاه می دارد.
پس از آن خطوط درگاه 0 برای ورود و خروجی داده در طی نیمه ی دوم سیکل حافظه یعنی هنگامی که انتقال داده انجام میشود، در دسترس هستند.
سیگنال ALE با فرکانس یک ششم فرکانس نرمال ساز روی تراشه نوسان می کند و می تواند به عنوان یک پالس ساعت هم منظوره در بقیه سیستم بکار رود.
اگر 8051 از یک کریستال 12 مگاهرتز پالس دریافت کند، ALE با فرکانس 2 مگاهرتز نوسان می کند.
تنها استثناء در طی انجام دستورالعمل MOVX است که یک پالس ALE حذف میشود.
EA (External Access) سیگنال ورودی EA در پایه ی 31 معمولاً به سطح منطقی بالا (57+) یا زمین وصل می شود.
اگر این پایه در وضعیت بالا قرار گرفته باشد 8051/8052 برنامه را از ROM داخلی یعنی k4یا k8 بایت پایین حافظه اجرا می کند.
هنگامی که پایین باشد ROM داخلی غیرفعال میشود و برنامه ها از EPROM خارجی اجرا می شود.
همچنین نوع EPROM دار 8051 از خط EA برای تغذیه 21 ولت (VPP) در برنامه ریزی EPROM داخلی استفاده می کند.
(Reset) RST ورودی RST در پایه و آغازگر اصل 8051 است.
هنگامی که این سیگنال حداقل برای دو سیکل ماشین در وضعیت بالابهانه، ثبات های داخلی 8051 با مقادیر مناسبی برای یک شروع به کار سازمان یافته بار می شوند.
8051 دارای یک نوسان ساز روی تراشه است و معمولاً با یک کریستال که به پایههای 18 و 19 متصل می شود، به راه می افتد.
خازنهای پایدار کننده نیز مورد نیاز هستند.
فرکانس خاصی کریستال برای اغلب ICهای خانواده MCS-51 MHz12 است، هر چند که 80c310H-1 می تواند با فرکانس هایی تا MHz16 نیز کار کند.
ساختار درگاه I/O نوشتن در پایه یک درگاه داده را در یک ذخیره ساز درگاه بار می کند، در اثر این عمل یک ترانزیستور اثر میدانی (FET) که به پایه درگاه وصل شده است.
راه اندازی می شود، قابلیت راه اندازی برای درگاههای 1،2 و 3 به اندازه چهار TTL شاتکی کم مصرف و برای درگاه 0 به اندازه ی هشت عدد از همین نوع TTL می باشد.
در 8051 دو قابلیت خواندن ذخیره ساز و خواندن پایه وجود دارد.
دستورالعملهایی که عمل بخوان تغییر بده بنویس را بکار می برند مثل OPL.p1.5 برای پرهیز از تشخیص نادرست سطح ولتاژ در مواقعی که پایه بشدت تحت بار است مثل هنگامی که بیس یک ترانزیستور را تحریک می کند، عمل خواندن مثل هنگامی که بیس یک ترانزیستور را تحریک می کند ، عمل خواندن را از ذخیره ساز انجام می دهد و دستورالعمل هایی که مگابیت از درگاه وارد می کنند مثل (MOVC,p1.5) پایه را می خوانند.
ذخیره ساز درگاه در این مورد باید شامل 1 منطقی باشد وگرنه FET راه انداز روشن می شود و خروجی را پایین می کشد.
reset کردن سیستم های ذخیره سازی های درگاه را 1 می کند.
پس اگر یک ذخیره ساز درگاه پاک شود مثل CLRp1.5 متعاقب آن نمی توان از پایه به عنوان ورودی استفاده کرد، مگر این که ابتدا ذخیره شود.
سازمان حافظه: اغلب ریزپردازنده ها یک فضای حافظه مشترک برای داده و برنامه در نظر می گیرند، این کار معقولی چون برنامه ها معمولاً روی یک دیسک ذخیره شده و برای اجرا به RAM منتقل می گردند .
به این ترتیب در برنامه ها و داده هر دو RAM سیستم مقیم می شوند، از طرف دیگر میکروکنترل ها به ندرت به عنوان CPU در سیستم های کامپیوتری مورد استفاده قرار می گیرند.
در عوض به عنوان جزء مرکزی در طراحی های کنترل گرا به کار می روند که در این موارد حافظه محدود است، دیسک درایوها سیستم عامل دیسک وجود ندارد و برنامه کنترلی باید در ROM قرار داده شود.
به همین دلیل 8051 یک فضای حافظه جداگاه برای برنامه کد و داده در نظر می گیرد، همان طور که کد و داده هر دو ممکن است داخلی باشند .
با این وجودهر دو با استفاده از بغداد خارجی تا حد k64 بایت حافظه کد و k64 بایت حافظه داده قابل توسعه هستند.
حافظه داخلی شامل ROM روی تراشه (فقط در 8051/52) و RAM داده ی روی تراشه است.
RAM روی تراشه شامل آرایش مناسبی از حافظه همه منظوره، حافظه بتن آدرس پذیر، بانک های ثبات و ثبات های کاربر خاص می باشد.
دو ویژگی جاب توجه در 8051 بدین قرار است: الف) ثباتها و درگاههای ورودی - خروجی بصورت نقشه ی حافظه هستند و مانند هر مکان دیگر حافظه قابل دسترس می باشند.
ب) پشته، برخلاف معمول دیگر ریزپردازنده ها که ؟؟
در RAM خارجی قرار می دهند، در RAM داخلی قرار دارد.
80 بایت از آدرس 30H تا 7FH برای RAM همه منظوره است.
32 بایت پایین از آدرس OOH تا 2FH نیز می توانند بصورت مشابهی استفاده شوند.
هر مکانی در RAM همه منظور با استفاده از روش های آدرس های مستقیم یا غیر مستقیم قابل دسترسی است.
برای مثال خواندن محتویات RAM داخلی در آدرس 5FH به داخل انباره این دستورالعمل می تواند بکار رود: MOV A,5FH این دستورالعمل یک بایت داده را با استفاده از آدرس دهی مستقیم برای مشخص کردن مکان مبدأ منتقل می کند.
قصد داده بطور ضمنی در کد عملیاتی دستورالعمل با عنوان انباره (accumulator) مشخص شده است.
در ضمن RAM داخلی با استفاده از آدرس دهی غیرمستقیم و R0 یا R1 نیز قابل دسترسی است.
RAM بیت آدرس پذیر 8051 2100 مکان بیت آدرس پذیر دارد که 128 مکان آن در آدرس بایت 20H تا 2FH قرار داشته و بقیه ثبات های کاربرد خاص هستند.
اندیشه دستیابی به بیت های منفرد از طریق نرم افزار، یکی از امکانات قدرتمند اغلب میکروکنترلرها است بیت ها می توانند توسط یک دستورالعمل OR, AND, 0.1 گردند.
اغلب ریزپردازنده ها به یک رشته از دستورالعمل های بخوان تغییر بده - بنویس برای انجام همین اعمال نیاز دارند، بعلاوه درگاه های I/O در 8051 بصورت بیت های آدرس پذیر هستند که ارتباط نرم افزاری را با مگابیت های ورودی و خروجی داده می کند.
تعداد 128 مگابایت آدرس پذیر همه منظوره در آدرس بایت 20H تا 2FH وچود دارد.
(128، 16*8 بیت) این آدرس مابسته به نوع دستورالعمل به عنوان بایت به عنوان بیت قابل دسترس هستند.
برای مثال برای کدکردن بیت 67H این دستور را می توان بکار برد: 8PU A=2CH ORL A=1000000 B MOV 2CH, A بانک های ثبات بانکهای ثبات در 32 مکان پایین حافظه داخلی قرار دارند .
مجموعه دستورالعمل های 8051 هشت ثبات را از R0 تا RU پشتیبانی می کند و به صورت پیش فرض (پس از reset شدن) این ثبات ها، در آدرس OOH تا 07H قرار می گیرند، دستورالعمل زیر محتوای آدرس 05H را به داخل انباره منتقل می کنند.
MOV A, R5 این دستورالعمل یک دستورالعمل یک بایتی است که از آدرس دهی ثبات استفاده می کند.
البته همین عملیات با یک دستورالعمل دوبایتی با استفاده از آدرس دهی مستقیم در بایت دوم نیز انجام پذیر است.
MOV A,05H دستورالعمل هایی که از ثباتهای R0 تا R7 استفاده می کنند کوتاهتر و سریعتر از دستورالعمل های معادلی هستند که از آدرس دهی مستقیم استفاده می کنند داده هایی که بطور متناوب استفاده می شوند، بهتر است یکی از این ثبات ها را استفاده کنند.
بانک ثبات فعال با تغییر بیت های انتخاب بانک ثبات در کلیه وضعیت برنامه قابل تغییر است.
با فرض آنکه بانک ثبات شماره 3 فعال باشد دستورالعمل زیر محتوای انباره را در مکان 8H را می نویسد و MOV R0,A اندیشه بانک های ثبات امکان سوئیچ متن را بصورت سریع و کار را فراهم می کند، که به موجب آن بخش های جداگانه یک نرم افزار،مستقل از دیگر بخش ها از یک مجموعه ثبات خاص خود استفاده میکنند.
ثباتهای کاربرد خاص ثبات های داخلی در اغلب ریزپردازنده ها توسط مجموعه ی دستورالعمل ها به صورت ضمنی قابل دسترس هستند برای مثال INCA در ریزپردازنده 6809 محتوای انباره را یک واحد افزایش می دهد.
عملیات به صورت ضمنی در کد عملیاتی دستورالعمل ها مشخص شده است.
روش دستیابی مشابهی برای ثباتها در میکروکنترلر 8051 امکان پذیر است.
در حقیقت دستورالعمل INCA در 6051 همان عمل را انجام می دهد.
ثبات های داخلی 8051 به عنوان بخشی از RAM روی تراشه پیکربندی شده اند.
بنابراین هر ثبات دارای یک آدرس نیز هست .
این برای 8051 منطقی است چون ثبات های زیادی دارد.
علاوه بر R0 تا R7 ، 21 ثبات کاربرد خاص (SFR) در ناحیه بالای RAM از آدرس 80H تا FFH وجود دارد.
کلمه وضعیت برنامه کلمه وضعیت برنامه (PSW) در آدرس DOH شامل بیت های وضعیت میباشد.
psw.1 CY D7H psw.6 AC D6H psw.5 FO D5H psw.4 RS1 D4H psw.3 RS0 D3H psw.2 OV D2H psw.1 __ D1H psw.0 P D0H پرچم نقلی بیت نقلی (CY) یک بیت دو منظوره است که کاربرد رایج آن برای عملیات حسابی است.
اگر در طی عمل جمع یک بیت نقلی از بیت 6 خارج شود یا در طی عمل تفویق ، یک بیت قرضی به بیت 7 وارد شود، پرچم نقلی 1 می شود برای مثال اگر انباره شامل FFH باشد دستورالعمل ADD A, #1 به انباره مقدار 00H را داده و پرچم نقلی را در 1.psw می کند.
پرچم نقلی در ضمن یک انباره بولی نیز هست ، که به عنوان یک ثبات تک بیتی برای دستورالعملهای بولی که روی بیتها عمل میکنند به کار میآید.
برای مثال دستورالعمل زیر بیت 25H را با پرچم نقلی AND میکند و نتیجه را به پرچم نقلی بر میگرداند: ANL C, 25H پرچم نقلی کمکی هنگام جمع کردن مقدیر دهدهی کد شده بصورت دودویی (BCD) اگر یک انتقال از بیت 3 به بیت 4 اتفاق افتد، یا نتیجه در چهار بیت پایین بین 0AH تا OFH باشد.
پرچم نقلی کمکی Set میشود.
اگر مقادیری که جمع شدهاند BCD باشند.
دستورالعمل جمع باید با DAA دنبال شود تا نتایج بزرگتر از و به محدودهی کار برگردانده شود.
پرچم0 پرچم 0 تا f0 یک بیت پرچم همه منظوره برای استفاده هست.
بیت های انتخاب بانک ثبات بیت های انتخاب بانک ثبات (Rs0, RS1) بانک ثبات فعال را مشخص میکنند، در پی reset شدن سیستم پاک میشوند و در صورت لزوم بصورت نرم افزاری تغییر میکنند.
برای مثال سه دستورالعمل زیر بانک 3 را فعال کرده سپس محتویات ثبات R1 را به انباره منتقل میکند.
SET B Rs1 SET B Rs0 MOV A,R1 هنگامیکه برنامه بالا اسمبل شود آدرسهای بیت درست ، جانشین نمادهای RS1, RS0 میشوند و به این ترتیب دستورالعمل SET D RS1 همان SET BOD4H میباشد.
پرچم سرریز (Overflow) پرچم سرریز (ov) پس از یک عمل جمع یا تفریق، اگر یک سرریز حسابی اتفاق افتد 1 میشود.
هنگامی که اعداد علامتدار جمع یا تفریق میشوند.
نرمافزار میتوان این بیت را بررسی کند تا مشخص شود که نتیجه در محدودهی مناسب قرار دارد یا خیر .
وقتی که اعداد بدون علامت جمع میشوند از بیت oV صرف نظر میشود.
نتایج بزرگتر از +12v یا کوچکتر از 128 بیت ov را 1 میکنند.
برای مثال عمل جمع زیر باعث سرریز شده و بیت ov را در psw می کند.
بیت توازن بیت توازن (p) در هر سیکل ماشین برای ساختن توازن زوج انباره، بطور خودکار 1 و یا پاک میشود، تعداد بیت های 1 در انباره به علاوه بیت p همواره زوج است اگر برای مثال انباره شامل 10101101B باشد، pحاوی 1 خواهد بود.
بیت توازن اغلب در ارتباط با روالهای درگاه سریال برای اضافه کردن یک بیت توازن پیش از فرستادن و یا بازرسی توازن پس از دریافت به کار میرود.
ثبات B ثبات B در آدرس FOH به همراه انباره برای عملیات ضرب و تقسیم استفاده می شود.
دستورالعمل MULAB مقادیر هشت بیتی بدون علامت در A و B را ضرب کرده و نتیجه 16 بیت را در A و B قرار میدهد.
دستورالعمل DIVAB را بر B تقسیم میکند و خارج قسمت را در A و باقی مانده را در B میگذارد.
ثبات B همچنین به عنوان یک ثبات چرکنویس همه منظوره عمل میکند.
این ثبات بیت آدرس پذیر از آدرس FOH تا F1H نیز هست.
اشاره گر پشته: اشارهگر پشته (SP) یک ثبات هشت بیتی در آدرس 81H است.
این ثباتداری آدرس دادهای است که در همان هنگام در بالای پشته قرار دارد.
عملیات پشته شامل پوشش کردن داده به پشته و پاپ کردن داده از پشته میباشد.
پوشش کردن به پشته SP یک واحد کاهش میدهد.
پشته ای 8051 در RAM داخلی قرار دارد و محدود به آدرس هایی است که با آدرس دهی غیرمستقیم قابل دسترس هستند.
یعنی 128 بایت اول در 8031/8051 یا تمام 256 بایت RAM روی تراشه در 8032/8052.
بخش 1-12: اتصال LCD به یک 8051 این بخش مدهای عملکرد LCD ها را توصیف کرده و چگونگی برنامهنویسی و اتصال LCD به یک 8051 را توضیح میدهد.
طرز کار LCD در سالهای اخیر LCD بطور گستردهای کاربرد پیدا کرده و جایگزین LED ها (LEDهفت قسمتی یا چند قسمتی) شده است.
این جایگزینی به دلایل زیر است: 1- پایین بودن قیمت LCDها 2- توانایی نمایش اعداد، کاراکترها و گرافیک.
این برخلاف LEDها است که تنها به اعداد و چند حرف محدود شدهاند.
3- وجود کنترل کنده تازهسازی در خود LCD،که به این طریق CPU آزاد می شود.
برعکس در LED، CPU باید کار تازهسازی را نیز انجام دهد تا داده نشان داده شود.
4- سادگی برنامهریزی کاراکترها و گرافیک توصیف پایههای LCD LCD مورد بحث در این بخش دارای 14 پایه است.
وظیفه هر پایه در جدول 1-12 داده شده است.
شکل 1-2 مکان پایهها را در انواع LCD نشان میدهد.
VEE , VSS , VCC در حالیکه VSS , VCC به ترتیب ولتاژ 5V و زمین را فراهم میسازند.
VEE برای کنترل درخشندگی LCD بکار میرود.
RS، انتخابگر ثبات: در داخل LCD دو ثبات وجود دارد و پایه RS برای انتخاب آنها به ترتیب زیر بکار میرود.
اگر RS=0 باشد ثبات دستورالعمل فرمان انتخاب میشود و اجازه میدهد فرمانهایی همچون پاک کردن نمایشگر، نشاندن مکاننما و غیره صادر شوند.
اگر RS=1 باشد ثبات داده انتخاب میگردد، و به کاربر اجازه ارسال داده (یا بازیابی) روی LCD برای نمایش را میدهد.
R/W /خواندن/نوشتن: ورودی R/W به کاربر اجازه نوشتن اطلاعات در LCD و یا خواندن از آن را فراهم میسازد.
R/W=1 برای خواندن و R/W=0 برای نوشتن است.
E، فعال: LCD از این پایه برای لچ کردن اطلاعات ارائه شده به پایههای دادهاش استفاده میکند.
وقتی داده به پایههای داده اعمال شدع یک پالس بالا- پائین به این پایه، اعمال میگردد تا به این وسیله LCD داده موجود در پایههای داده را لچ کند.
این پالس باید حداقل 450 ns عرض داشته باشد.
D0-D7: 8 بیت خط داده برای ارسال اطلاعات به LCD یا خواندن محتوای ثباتهای داخلی LCD بکار میروند.
برای نمایش حروف و اعداد، کدهای سکی برای حروف A-Z و a-z و اعداد 0-9 به پایهها ارسال میشود و همزمان RS=1 میگردد.
همچنین کدهای دستوالعمل فرمانی وجود دارند که برای پاک کردن نمایشگر به بازگرداندن مکاننما به نقطه شروع، یا چشمک زدن آن بکار میروند.
جدول 2-12 کدهای دستورالعمل فرمان را نشان میدهد.
از RS=0 نیز برای تست بیت پرچم مشغول به منظور طلاع از آمادگی LCD در دریافت اطلاعات استفاده میشود.
پرچم مشغول D7 است و هنگام R/W=1 و RS=0 به طریق زیر قابل خواندن است: یعنی درحالت R/W=1 و RS=0 وقتی D7=1 باشد (پرچم مشغول=1)، LCD مشغول بوده و از عملیات درونی مراقبت می کند و هیچ اطلاعات جدیدی را نخواهد پذیرفت، وقتی D7=0 باشد.
LCD برای دریافت اطلاعات جدید آماده است.
توجه کنید: پیشنهاد میشود قبل از نوشتن هر دادهای در LCD، پرچم مشغول چک شود.
شکل 1-12: مکان پایهها برای انواع LCDها شکل 5-13: ماتریس اتصال صفحه کلید به پورتها بخش 2-13: اتصال 8051 به صفحه کلید صفحه کلیدها و LCD ها و پرمصرف ترین وسایل ورودی/خروجی برای 8051 هستند و دانستن اصول ؟؟آنها الزامی است در این بخش، ابتد اساس صفحه کلید و بحی میکنیم و فشردن و تشخیص کلید و پس از آن بررسی خواهیم کرد سپس چگونگی اتصال صفحه کلید به 8051 نشان داده شده است.
اتصال صفحه کلید به CPU در پایینترین سطح، صفحه کلیدها در ماتریسهایی از ستونها و سطرها سازماندهی میشوند.
CPU سطرها و ستونها را از طریق پورتهای خود دستیابی می کند بنابراین به دو پورت 8 بیت یک ماتریس؟؟
از کلیدها قابل اتصال به کامپیوتر خواهد بود.
هنگامی که کلیدی فشرده شود، یک سطر به یک ستون میچسبد و در غیر این صورت اتصالی بین سطرها و ستونها موجود نیست.
در صفحه کلیدهای IBM PC یک میکروکنترلر شامل ریزپردازنده EPROM .
RAM به همراه چند پورت در یک توشه مراقبت از سختافزار و نرمافزار اتصال صفحه کلید را بر عهده دارند.
در چنین سیستمهایی وظیفه برنامه ذخیره شده EPROM میکروکنترلر پویش مداوم کلیدهاست.
تا کلید فعال شده را بیاید وآن را به بورد اصلی ارائه دهد.
در این بخش به مکانیزمی که 8051 کلید و پویش و شناسایی میکند نگاه خواهیم کرد.
پویش و شناسایی کلید شکل 5-13 یک ماتریس متصل به دو پورت را نشان میدهد.
سطرها به یک پورت خروجی و ستونها به یک پورت ورودی وصل میباشند.
اگر کلید فشرده نشود.
خواندن پورت ورودی 1 را برای همه ستونها نتیجه خواهد داد زیرا همه آنها به ولتاژ سطح بالا (VCC) متصل میباشند.
اگر همه سطرها به زمین وصل شوند و کلیدی فشردهشود،؛ یکی از ستونها 0 خواهد شد زیرا کلید فشرده شده مسیری را به زمین ایجاد میکند.
این به عهده میکروکنترلر است که صفحه کلید را دائماً برای تشخیص و شناسایی کلید فشرده شده پویش کند.
چگونگی این عمل را در زیر توضیح داده شده است.
زمین کردن سطرها و خواندن ستونها برای تشخیص کلید فشرده شده، میکروکنترلر همه سطرها را با تهیه0 در لچ خروجی به زمین وصل میکند.
و سپس ستون را میخواند.
اگر داده خوانده شده از ستون D3-D0=1111 باشد، کلیدی فشرده نشده است.
و فرآیند تشخیص کلید فشرده شده ای ادامه خواهد داشت با این وجود، اگر یکی از بیتهای ستون، حاوی 0 باشد به این معنی است که کلید فشرده شده است.
مثلاً اگر D3-D0=1101 باشد، کلیدی در ستون D1 فشرده شده است.
پس از تشخیص کلید فشرده شده، میکروکنترلر وارد فرآیند شناسایی کلید میگردد.
با شروع از سطر بالا، میکروکنترلر با زمین کردن سطر D0 آن را به زمین وصل مینماید.
سپس ستونها را میخواند.
اگر داده خوانده شده تماماً 1باشد کلید در آن سطر فشرده نشده است.
و فرآیند به سطر بعدی منتقل میگردد.
سپس سطر بعد را زمین میکند و ستونها را خوانده و به دنبال0 میگردد.
این عمل تا شناسایی سطر ادامه مییابد.
پس از شناسایی سطری که در آن کلید فشرده شده است یافتن ستونی که کلید به آن متعلق است کار بعدی میباشد.
پس شناسایی ساده است زیرا میکروکنترلر در هر لحظه میداند که کدام سطر یا ستون و دستیابی کرده است به مثال 3-3 توجه نمایید.
مثال 3-13: از شکل 5-13 سطر وستون کلید فشرده شده را برای هر یک از حالات زیر بیابید.