توضیحات

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

 مقاله در مورد وقفه ها و سازمان وقفه در 8051 دارای 53 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد مقاله در مورد وقفه ها و سازمان وقفه در 8051  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی مقاله در مورد وقفه ها و سازمان وقفه در 8051،به هیچ وجه بهم ریختگی وجود ندارد


بخشی از متن مقاله در مورد وقفه ها و سازمان وقفه در 8051 :

وقفه ها و سازمان وقفه در 8051

1 مقدمه
وقفه ، حالتی است كه باعث متوقف شدن یك برنامه به صورت موقت می شود ، كه خود توسط یك برنامه دیگر فعال می گردد . وقفه ها نقش مهمی در طراحی و پیاده سازی كاربردهای میكروكنترل دارند ; اما می تواند اجرای یك برنامه به یك درخواست دیگر نیز پاسخ دهد . نباید تصور كنیم كه سیستم دارای وقفه ، می تواند بسیاری از كارها را همزمان انجام دهد . البته ، CPU نمی تواند در هر لحظه بیش از یك دستور العمل را اجرا كند ; دستور العمل دیگر را اجرا كند و مجدداٌ به دستور

اول باز گردد .در هر صورت ، این عمل شبیه یك زیروال است . CPU برنامه دیگر – زیروال – را اجرا كند و مجدداٌ به دستور اول باز گردد . در هر صورت ،‌این عمل شبیه یك زیروال است . CPU برنامه دیگر – زیروال – را اجرا كرده و سپس به برنامه اصلی بر می گردد . شبیه یك زیروال است .تفاوتی كه در یك سیستم راه اندازی شده با وقفه وجود دارد ، این است كه وقفه پاسخی به یك [اتفاق] است كه به طور غیر همزمان با برنامه اصلی به وقوع می پیوندد و حالتی نیست ه برنامه اصلی مورد وقفه قرار میگیرد .
برنامه ای كه مربوط به وقفه می شود یك روال سرویس وقفه (ISR) یا گرداننده وقفه نامیده می شود ISR در پاسخ به یكوقفه عمل كرده و معمولاٌ عملیات ورودی یا خروجی را برای یك دستگاه انجام می دهد . هنگام وقوع وقفه، اجرای برنامه اصلی متوقف شده و به ISR انشعاب صورت می گیرد ; ISR اجرامی شود و با دستورالعمل [برگشت از وقفه] پایان می پذیرد و برنامه اصلی ادامه

می یابد . معمولاٌ برنامه اصلی سطح پایه و ISR سطح وقفه نامیده می شود . اصطلاحات اصلی (سطح پایه ) و فرعی (سطح وقفه) نیزمورد استفاده قرار می گیند . در شكل 1-6 قسمت (الف) ، اجرای برنامه بدون وقفه ، و در قسمت (ب) اجرای سطح پای ، در صورت وقوع وقفه اجرای ISR ها در سطح وقفه ، به نمایش در آمده است .
ورود اطلاعات توسط صفحه كلید ، نمونه ای از یك اجاق مایكروویو را در نظر بگیرید . برنامه

اولیه(اصلی) ممكن است عنصر تغذیه مایكروویو را برای پخت ، و كاهش یا افزایش زمان پخت راكنترل كند . هنگامی كه كاربر كلیدی فشار دهد یك وقفه تولید می شود ، (سیگنالی كه می تواند از سطح پائین به بالا رود ) و برنامه اصلی مورد وقفه قرار می گیرد ، ISR كدهای صفحه كلید را می خواند و شرایط پخت را مطابق با آن تغییر می دهد و با برگشت به برنامه اصلی خاتمه می یابد و اجرای برنامه اصلی ادامه پیدا می كند . نكته مهم در این مثال این است كه ورودی توسط شخص بطور [ غیر همزمان ] صورت می گیرد ، یعنی زمان وقوع آنتوسط نرم افزار راه انداز سیستم قابل كنترل و پیش بینی نیست . این یك وقفه است .

2- سازمان وقفه 8051
در 8051 ، پنج منبع وقفه وجود دارد : دو وقفه خارجی ، دو وقفه تابمر و یك وقفه درگاه سریال . در 8052 ، وقفه دیگیر نیز برای تایمری دیگر ، پیش بینی شده است . هنگام راه اندازی مجدد سیستم همه وقفه ها غیر فعال یشده و بطور جداگانه توسط نرم افزار فعال می گردند .
در صورت وقوع همزمان دو وقفه یاوقوع وقفه در صورتی كه وقفه دیگری در حال اجراست ، دو سطح تقدم برای آنها در نظر گرفته می شود . توالی اجرا ثابت ، اما تقدم وقفه ها قابل برنامه ریزی ی باشد. اكنون چگونگی فعال و غیر فعال كردن وقفه ها را بررسی می كنیم .

1-2- فعال و غیر فعال كردن وقفه
هر یك از منابع مقفه به طور مجزا ، از طریق بیت آدرس پذیر مخصوص ، توسط ثبات IE (فعال كننده وقفه ) و آدرس 0A8H فعال یا غیر فعال می شوند . علاوه بر بیتهای فعال كننده خاص برای هر منبع وقفه ، یك بیت فعال كننده / غیر فعال كننده كلی نیز وجود دارد كه پاك شدن آن كلیه وقفه ها غیر فعال شده و می توانند با 1 شدن آن ، مجدداٌ فعال شوند . (جدول 1) را ببینید )

برای فعال كردن هر وقفه ، دو بیت باید 1 شوند : بیت فعال كنندهخاص و بیت كلی . بطور مثال تایمر 1 وقفه ها ، به صورت زیر فعال می شود :
SETB ET 1 ;ENABLE Timer 1 INTERRUPT
SETB EA ; SET GLOBAL ENABLE BIT
این عمل را می توان با دستور زیر نیز انجام داد :
MOV IE,#10001000B

جدول 1 خلاص ثبات IE (فعال كننده وقفه)

بیت نماد آدرس بیت شرح (غیر فعال = 0 ،، فعال = 1)
IE.7 EA AFH فعال / غیر فعال كلی
IE.6 – AEH نامعین
IE.5 ET2 ADH فعال كردن وقفه تایمر2(8052)
IE.4 ES ACH فعال كردن وقفه درگه سریال
IE.3 ET1 ABH فعل كردن وقفه تایمر 1

IE.2 EX1 AAH فعال كردن وقفه 1 خارجی
IE.1 ET0 A9H فعال كردن وقفه تایمر 0
IE.0 EX0 A8H فعال كردن وقفه 0 خارجی

اگر چه این دو روش ، دقیقاٌ همان اثر راه اندازی مجدد سیستم را دارند ، اگر IE را در وسط برنامه ، به صورت متعلق [معلق] برنامه ریزی كنیم ، اثر متفاوتی در برخواهد داشت . روش اول تأثیری بر پنج بیت دیگر ثبات IE ندارد ، در حالی كه روش دوم بوضوح بیتهای دیگر را پاك می كند . بهتر است كه در شروع برنامه IE را با دستور “MOVE BYTE” مقدار دهی كنیم ، ( یعنی به دنیال تغذیه یا reset( كردن سیستم ) اما برای فعال و غیر فعال كردن وقفه های به ثورت معلق داخل برنامه ، باید از دستورهای Set bit و Clear bit استفاده كرد تا روی بیتهای دیگر ثبات IE تأثیری نداشته باشد .

2-2- تقدیم وقفه
هر منبع وقفه در یكی از دو طریق بیت آدرس پذیر مخصوصی در ثبات IP (تقدیم وقفه) در آدرس 0b8h برنامه ریزی می شود ( جدول 2 را ببینید )
پس از راه اندازی مجدد سیستم IP پاك شده و همه وقفه ها در سطح تقدم پایین به صورت پیش فرض قرار می یگرند . نظریه تقدیم این امكان را می دهد كه وقفه ها بر اساس تقدم بالاتر ، توسط ISR سرویس شوند . در 8051 این امر به آسانی انجام می شود ، چون تنها دو سطح تقدیم وجو

د دارد . چنانچه هنگام سرویس دهی به یك وقفه یا تقدم پائین ، وقفه ای با تقدم بالاترروی دهد ، توسط ISR مورد پذیرش قرار می یگرد ، ولی یك وقفه با تقدم بالاتر مورد وقفه قرار نمی گیرد .
برنامه اصلی ، در سطح پایه اجرا شده و با هیچ وقفه ای همراه نیست ، و همواره می تواند بدون توجه به تقدم وقفه ها مرد وقفه واقه شود . در صورت روی دادن همزمان دووقفه با تقدمهای

متفاوت ، ابتدا وقفه با تقدم بالاتر سرویس دهی می شود .
جدول 2 خلاصه ثبات IP (تقدم وقفه )
بیت نماد آدرس بیت شرح (غیر فعال = 0 ،، فعال = 1)
IP.7 نا معین

IP.6 نامعین
IP.5 PT2 0BDH تقدم وقفه تایمر 2(8052)
IP.4 PS 0BCH تقدم وقفه درگاه سریال
IP.3 PT1 0BBH تقدی موقفه تایمر 1
IP.2 PX1 0BAH تقدی موقفه 1 خارجی
IP.1 PT0 0B9H تقدیم وقفه تامیر 0
IE.0 EX0 0B8H تقدیم وقفه 0 خارجی
3-2 ترتیب اجرا
اگر دو وقفه با یك تقدم ، هممان اتفاق بیفتند ، یك ترتیب اجرای ثابت نوبت سرویس دهی هركدام از آنها تعیین می كد . ترتیب اجرا : 0 خارجی ، تایمر 0;1 خارجی ، تایمر1; درگاه سریال ، و تایمر 2 می باشد .

شكل 2 ، پنج منبع وقه ، فرایند فعال كرد كلی و خاص ، ترتیب اجرا ، و سطوحتقدیم را شرح می دهد . حالت همه منابعوقفه از طریق بیتهای پرچم در SFR ها قابل دستیابی است . البته اگر وقفه ای غیر فعال شده باشد ، اتفاق نخواهد افتاد ، اما نرم افزار باز هم پرچم وقفه را تست می كند . مثالهایدرگاه سریال و تایمر در دو فصل اخیر بدون استفاده واقعی از وقفه ها ، بطوروسیع از پرچمهای وقفه بهره بردند .

یك وقفه درگا سریال ناشی از OR منطقی دریافت وقفه (RI) یا ارسل وقفه (TI) می باشد همچنین وقفه های تایمر2 با سرریز تایمر (TF2) یا پرچم ورودی خارجی (EXF2) توید می شوند . بیتهای پرچم كه مقفه ها را تولید می كنند ، در جدول 3-6 خلاصه شده اند .
3-6 وقفه های پردازنده
هنگام وقوع یك وقفه و پذیرش آن توسط CPU ، برنامه اصلی مورد وقفه قرار می یگرد واعمال زیر انجام می شوند :
اجرای دستورالعمل فعالی كامل می شود .
PC در پشته ذخیره می شود .
وضعیت وقفه جاری بطور داخلی ذخیره می شود .
وقفه های. مسطح با این وقفه متوقف میشوند .
PCبا آدرس برداری ISR بار می شود .
ISR اجرا می شود .
جدول 3 بیتهای پرچم وقفه
وقفه پرچم ثبات SFR و موقعیت بیت

0 خارجی IE0 TCON.1
1 خارجی IE1 TCON.3
تایمر 1 TF1 TCON.7

تایمر 0 TF0 TCON.5
درگاه سریال TI SCON.1
درگاه سریال RI SCON.0

تایمر 2 TF2 T2CON.7(8052)
تایمر 2 EXF2 T2CON.6(8052)

اجرای ISR ، پاسخگویی به وقفه است ، و با دستورالعمل RETI (برگشت از وقفه) خاتمه می یابد. با انجام این عمل مقدار قبلی PC از پشته بازیابی شده و وضعیت قبلی نیز ذخیره می گردد . اجرای برنامه اصلی پس از وقفه ادامه می‌یابد .

1-3 بردارهای وقفه

هنگامی كه یك وقفه مورد پذیرش قرار می گیرد ، عدد بار شده در PC بردار وقفه نامیده می شود ; كه در واقع آدرس شروع ISR برای منبع وقفه است . بردارهای وقفه در جدول 4-6 ارائه شده اند .
بردار reset سیستم (RST در آدرس 0000H ) نیر در جدول آمده است . از آن جا كه این حالت

مانند یك وقفه است ، برنامه اصلی رامورد وقفه قرار داده و PC را با مقدار بار می كند .
هنگام ” بردار كردن یك وقفه ” پرچمیكه باعث وقه می شود ، بطور خودكار توسط سخت افزار پرك می گردد . RI و TI برای وقفه های درگاه سریال و TF2 و EXF2 برای وقفه های تایمر2 ، از این امر مستثنا هستند . چون برای هر یك از یوقفه ها دو منبع وجود دارد ، پاك كردن پرچم وقفه توسط CPU عملی نیست . این بیتها باید در ISR برای تعیین منبع وقفه ، آزمایش شوند ؛ و سپس پرچم

وقفه دهند توسط نرم افزار پاك می شود . معمولاٌ با توجه به مبنع وقفه انشعابی به عملیاتی مناسب صورت می گیرد .
چون بردارهای وقفه در انتهای حافظه كد هستند ، اولین دستورالعمل بر نامه اصلی غالباٌ یك پرش از رویناحیه حافظه ، مانند LJMP 0030H می باشد .

جدول 4 بردارهای وقفه
وقفه پرچم ثبات SFR و موقعیت بیت
Reset سیستم RST 0000H

0 خارجی IE0 0003H
0 تایمر TF0 000BH
1 خارجی IE1 0013H
تایمر 1 TFI 001BH
درگاه سریال TIیاRI 000023
تایمر 2 EXF2 یا TF2 002BH

4- طراحی برنامه با استفاده از وقفه ها
در مثالهای فصل 3و 4 از وقفه ها استفاده نشد ، حلقه های انتظاربرای تست پرچمهای سرریژ تایمر (TF0 ، TF1 یا TF2 ) یا پرچمهای دریافت و ارسال درگاه سریال (T1 یا RI ) ، ب

ه طور گسترده ای بكار رفتند . مشكل این روش اسن است كه تمامی وقت CPU صرف تست پرچمهایی كه باید 1 شوند ، می گردد . این امر هنگامی كه در مقاصد كنترلی ، میكروكنترل باید دستگاههای ورودی وخروجی زیادی را بطور همزمان كنترل كند ، مناسب نیست .

در این بخش ، مثالهایی برای تشریح عملیروشهای پیاده سازی نرم افزار برای مقاصد كمترلی ، ارائه می شوند . نكته اصلی ، وقفه است . اگرچه مثالها لزوماٌ بزرگ نیستند ، اما پیچیده می باشند و برای شرح انها قدم به قدم حركت خواهیم كرد . به خواننده توصیه می كنیم كه مثالها را به آرامی مطالعه كرده و نرم افزار را بادقت زیاد بررسی كند . پیچیده ترین خطاها در طراحی سیستم غالباٌبا وقفه ها در ارتباط می باشند و جزئیات باید بدرستی درك شوند .
چون ما از وقفه ها استفاده می كنیم ، مثالها كامل و خود كفا خواهند بود . هر برنامه ، با این فرض كه پس از reset شدن سیستم اجرای آن شروع می شود ، از آدرس 0000H آغاز می شود . این برنامه ها برای مقاصد كاملاٌ جدید و تاز در ROM یا EPROM ذخیره می شوند .
قالب پیشنهادی برای یك برنامه خد كفا با استفاده از وقفه ها ، در زیر نشان داده شده است :
ORG 0000ا ;RESET ENTRY POINT
LJMP MAIN
. ;ISR ENTRY POINTS
.
ORG 0030H ;MAIN PROGRAM ENTY POINT
MAIN : . ; MAIN PROGRAM BEGINS

.
.
اولیت دستور ، مطابق جدول 4-6 به آدرس 0030H ، درست بالای محل برداری كه ISR ها می شوند ، پرش می كند . چنانچه در شكل 3-6 نشان داده شده است ، برنامه اصلی از آدرس 0030H شروع می شود .

1-4- رولهای سرویس وقفه كوچك
روالهای سرویس وقفه باید از انتهای حافظه در آدرسهای نشان داده شده در جدول 4-6 شروع شوند اگرچه بین نقطه ورود هر یك از وقفه ها ، فقط هشت یاب وجوددارد ، این مقدا

ر حافظه غالباٌ برای انجام عملیات مناسب و بازگشت از از ISR به برنامه اصلی ، كافی است .
اگر تنهااز یك منبع وقفه استفاده شود ، مثلاٌ تایمر 0 ، بایدقالب زیر را به كار برد :
ORG 0000H ;RESET
LJMP MAIN
ORG 000BH ;Timer 0 ENTRY POINT
TOTSR . ;Timer 0 ISR BEGINS
.
RETI ;RETURN TO MAIN PROGRAM

MAIN .
.
.
اگر وقفه ها بیشتر باشند ، باید از شروع شدن آنها از محل صحیح ( جدول 4-6را ملاحظه كنید ) كه باعث راه اندازی مجدد ISR بعدی نشود ، اطمینان حصل كرد، چون در مثال بالا از یك

2-4 روالهای سرویس وقفه بزرگ
اگر یك ISR از هشت بایت بیشتر باشد ، باید آن را ب حافظه كد انتقال داد یا نقطه ورود آن را برای وقفه بعدی تغییر داد . برای مثال ، ISR با یم پرش به ناحیه ای ازحافظه كد كه بتوان آن را وسعت داد ، آغاز می شود . با در نظر گرفتن تایمر 0 در حال حاضر بتنهایی ، می توان از قالب زیر استفاده كرد .
ORG 000H ;RESET ENTRY POINT
LJMP MAIN
ORG 000BH ;TIMER 0 ENTRY POINT
LJMP TOIGR
ORG 0030H ;ABOVE INTERRUPT VETORS
MAIN .
.
.

TOISR: .
. ;TIMER 0 ISR
RET ;RETURN TO MAIN PROGRM
برای سهولت ، برنامه ها تنها یك كار را در یك زمان انجام خواهندداد . برنامه اصلی ، تایمر ، درگاه سریال ، و ثباتهای وقفه را بطور مناسب مقدار دهی می كند و سپس یچ كاری انجام نمی دهد . تمامی كار توسط IS انجام می شود . پس از دستور العمل مقدار دهی ، برنامه اصل

ی شامل دستور العمل زیر است :
HERE : SJMP HERE
هنگام وقوع یك وقفه ، برنامه اصلی موقتاٌمتوقف شده و ISR اجرا می شود ، دستور RETI در پایان ISR كنترل را به برنامه اصلی برگردانده و پس از آن كاری انجام نمیدهد . این عمل چندان سهم دور از ذهن نیست . در بسیاری ازمابردهای كنترلی قسمت عمده كار در حقیقت توسط روال سرویس وقفه انجام می شود .
وقفه های تایمر هنگامی روی می دهند كه ثباتهای تایمر (TLx/THx) سرریز كرده و پرچم سرریز (TFx) را 1 كنند . این مثال در فصل 4 بدون استفاده از وقفه ها آمده است (مثال راملاحظه كنید ) . بدنه برنامه ، همان است اما در این جا از وقفه ها استفاده خواهیم كرد . برنامه مزبور عبارت است از :
0000 5 ORG 0 ; RESET ENTRY POINT
0000 020030 6 LJMP MAIN ;Jump above interrpt vectors
000B 7 ORG 000BH ;Timer 0 interrupt vector

000B B290 8 TOISER; CPL P1.0 ;Toggle port bit
این یك برنامه كامل است ، كه می تواند درون EPROM ریخته شده و در كامپیوتر تك بورد 8051 نصب شود . بلافاصله پس از راه اندازی مجدد شمارنده برنامه با عدد 0000H بار می شود ،‌اولین دستورالعملیكه اجرا می شود ، ljmp main است ، كه isr تابمر را به آدرس 0030h در حافظه كد انشعاب می دهد . سه دستور العمل بعدی (خط های 11 تا 13 ) تایمر 0 را در حالت بار شدن سخودكار 8 بیتی ، با سرریزه ها در هر 5 یكبار ، مقدار دهی می كنند . دستورالعل IE MOV ,

#82H وقفه های تایمر 0را فعال می كند ، بگونه ای كه سرریز تایمر تولید یك وقفه می نماید . البته اولین سرریز پس از اتفاق می افتد ، برنامه اصلی متوقف شده و ISR تایمر 0اجرا می گردد . ISR بسادگی بیت درگاه را متمم كرده و پس از حلقه انجام ندادن كار به مدت ، به برنامه اصلی باز می گردد .
توجه كنید كه پرچم ایمر TF0 بوضوح توسط نرم افزار پاك نمی شود . هنگامی كه وقفه ها فعال شوند ، TFO هنگام پاسخ CPU به وقفه بطور خودكار توسط سخت افزار پاك می شود .

آدرس بازگشت در برنامه اصلی ، لزوماٌ در محل دستورالعمل SJMP می باشد . این آدرس در پشته داخلی 8051 ، پوش می شود تا هر یك از وقفه ها را جهت دهی كند و در پایان ISR و اجرای دستورالعمل RETI از پشته ، پاپ می شود . چون به SP مقداری داده نشده است ، مقدار 07H

به صورت پیش فرض برای آن درنظر گرفته می شود . عملیات پوش آدرس بازگشت به RAM داخلی را در محل و قرار می دهد .

آرایش سخت افزاری و زمان بندی های لازم برای شكل موجها در شكل 4 نشان داده شده است . این تركیب خروجی ها برای تولید در یك سیستم بدون وقفه ،

برای دریافت اینجا کلیک کنید

سوالات و نظرات شما

برچسب ها

سایت پروژه word, دانلود پروژه word, سایت پروژه, پروژه دات کام,
Copyright © 2014 icbc.ir