موضوع : وقفه یا اینتراپت
توضیح: این فایل به صورت ورد و آماده چاپ می باشد
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
اين عمل را مي توان با دستور زير نيز انجام داد :
وقفه ها و سازمان وقفه در 8051
فهرست مطالب1 مقدمه 1
سازمان وقفه 8051 4
1-2- فعال و غير فعال كردن وقفه 4
2-2- تقديم وقفه 7
3-2 ترتيب اجرا 8
3-6 وقفه هاي پردازنده 9
بردارهاي وقفه 11
4- طراحي برنامه با استفاده از وقفه ها 13
1-4- رولهاي سرويس وقفه كوچك 15
2-4 روالهاي سرويس وقفه بزرگ 16
5- وقفه هاي درگاه سريال 22
6- وقفه هاي خرجي 25
7-6 زمان بندي وقفه 31
8-6 خلاصه 33