صفحه 1:
وقفهها
حسین منتظری کردی
دانشکده مهندسی برق و کامپیوتر
دانشگاه صنعتی نوشیروانی بابل
ياييز ٩۱
ل
صح
صول میکروکامپیو ترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه کی
شم درس. حسین منتظری کردی
صفحه 2:
رئوس مطالب:
۱-مقدمه
۲- سازماندهی وقفه ۸۰۵۱
۳- پردازش وقفهها
۴- طراحی برنامه با وقفهها
۵- وقفههای درگاه سری
۶- وقفههای خارجی
۷- زمانبندی وقفه
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
te
صفحه 3:
١-مقدمه
* اوقفةا درخواستى از زيزيردازندة جهت قطع برنامه جارئ واياسخ به يك زيريزنامة بنام زيريرنائه وقفه (1518) مئياش
” درخواست وقفه بر دو نوع مىباشد:
- نرمافزارى
- سختافزارى
v
درخواست وقفه از نظر أولويت:
Won-Maskable) iy 1.2 -
- قابل 25 (Maskabley
ریزپردازنده در ابتدای فراخوانی هر دستوره شرایط درخواست وقفه را بررسی میکند
بازگشت از سره
یس وقفه با یک دستور بازگشت از وقفه
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
ite
صفحه 4:
Time
(a) Program execution without interrupts
Inerrupttevel
execution
i
Base-level ۱ 1
execution بسب Main wan “an
Time “{terrupt
> **Retum from interrupt instruction
(b) Program execution with interrupts
FIGURE 6-1
Program execution with and without interrupts, (a) Without interrupts (b) With interrupts.
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
A
صفحه 5:
۲- سازماندهی وقفه ۸۰۵۱
” وجود ۵ منبع وقفه برای ۱۸۰۵۱ ۲ منبع وقفه خارجی: ۲ منبع وقفه زمانسنج. و ۱ منبع وقفه درگاه سری
"۲ غير فعال شدن تمام وقفدها با راداندازى سيستم و فعال شدن توسط نرمفزار
” باسخ دهى به زيربرنامه وقفه براساس يك رشته آراء و اولويت وقفه. امكان درخواست همزمان جند وقفه از ريزيردازنده
فعال سلؤى و غيرفعال كردن وقفه
” امكان فعال كرذن يا غيرفعال كردن منابع وقفه با ثبات ويزه 115 بصورت بيت آدرس بذير در آدرس 08811
” وجود بيت جهت تواناسازى جداكانه منابع وقفه و همجنين تواناسازى كلى وقفدها
نشاندارکردن دو بیت جهت تواناسازی هر منبع وقفه با دستورات پردازش بیت يا با مقدار دهی ثبات "1 با دستهر 0[
SETB ETL
SETB EA
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ۹۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
Me
صفحه 6:
BIT DESCRIPTION
TABLE 6-1
BIT SYMBOL ADDRESS (1 = ENABLE, 0 = DISABLE) و ایس تا
۱7 ۸ AFH Global enable/disable
1E.6 7 AEH Undetined
3 ADH Enable Timer 2 Interrupt (8052)
۱4 ES ACH Enable serial port interrupt
۲3 ETH ABH Enabie Timer 1 interrupt
۴2 0 AAH Enable external 1 interupt
۱۴1 ETO ASH Enable Timer 0 interrupt
Exo ASH Enable external 0 interrupt مع
اولویت وقفه
Y امکان برنامهریزی جداگلنه هر منبع وقفه به دو سطح از اولویت وقفه از طریق ثبات ویژه
با بیت آدرسپذیر در مکان 0۳5811
۲ پاک شدن 1 در راندازی و قرارگرفتن همه منابع وقفه در سطح پایین
” امکان پذیرش وقفه جدید در زیربرنامه وقفه درصورتیکه وقفه جدید در سطح بالاتری از
اولویت نسبت به وقفه درحال اجرا قرارداشته باشد د
—
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه و
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 7:
TABLE 6-2
IP (interrupt priority) register summary
Bi DESCRIPTION
BIT SYMBOL = ADDRESS (1 = HIGHER LEVEL, 0 = LOWER LEVEL)
۳7 8 ۰ Undefined
۳6 : : Undefined
۳ PTZ 080 Priority for Timer 2 interrupt (6082)
۳۹4 PS OBCH Priority for serial port interrupt
۳3 811 0881 Priority for Timer 1 interrupt
۳2 ام 08۸۲ Priority for external 1 interrupt
۳1 PTO و0 Priority for Timer 0 interrupt
۳0 PXO OB8H Priority for external 0 interrupt
” در ۸۰۵۱ اگر یک *51] با اولویت پایین درحال اجرا باشد. آنگاه وقفه با اولویت بالاتر باعث ایجاد
وقفه در این 191۴ میگردد؛ امکان پذیرش وقفه برای 11۴ اولویت بالا وجود ندارد
7 درصورت ایجاد دو وقفه بطور همزمان. وقفه با اولويت بالاتر اجرا مى شود
رشته وقفه
۷ ترتیب بررسی لیجاد وقفه بصورت: ,1,۰۲ "1,۰1 1,۰ 1 و درگاه سری ( 01
te
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
انى بابل جلسه ششم درس, حسین منتظری کردی
صفحه 8:
tere سا
—
۱ a
كسم و im اه مف 11 mere
7 fae tow
1
=
۱ ليله
wo - se >|
aT 1 = ليله
met om 3 و — >| —
° 0 سس
1 Ea
: ليله
5 wee ~~ 9
ee لیا اجه
cone |, TI
م 3 ا
1 >|
vow لت
ia 1 set
cue سا
, FIGURE 6-2
{ Overview of 8051 intarrupt structure
صون میحرو تامپیوترض برم پاییر سال تحصیتی 1۱-7۱ داسحده مهندسی پرق و دامييوبر دانسحاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی و
صفحه 9:
SFR REGISTER AND BIT POSITION
TCON.1
TCON.3
TCON7
TCON.S
SCON.1
SCON.0
T2GON.7 (8052)
T2CON.6 (8052)
۳- پردازش وقفهها
FLAG
۳0
۴
1۳
1۳0
11
RI
TF2
EXF2
” با پذیرش وقفه توسط ریزپردازنده مراحل زیر انجام میشود:
تکمیل اجرای دستور جاری
ذخیره مقدار ۳6 در پشته
ذخیره وضعیت فعلی وقفه جاری
مسدود شدن وقفههای هم سطح با وقفه جاری
صول میکرو کا
ترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
TABLE 6-3
Interrupt flag bits INTERRUPT
External 0
External 1
Timer 1
Timer
Serial port
Serial port
Timer 2
Timer 2
1۳
صفحه 10:
- باركذارى 20 با بردار آدرس 1518 جاری
اجرای 1518 جاری
% أتمام يك +151 با دستور 10511 که موجب اجرای مراحل زیر میشود
بازیابی مجدد وضعیت وقفه
بارگناری مجدد PC با مقدرقبلی
- اجرای برنامه اصلی از جاییکه وقفهایجاد شد
بردار وقفه
۴ آدرس بارگذاری 20 بهنگام پذیرش وقفه را بردار وقفه مینامند آدرس شروع 158 برای منبع درخواست وقفه
RST ¥ مانند عموقفه ب دلیلیجدوقفه در برناماصلیو بلرگذاری۳ با آدیس00001
پاک شدن خودکار پرچم منبع درخواست وقفه توسط سختافزار پساز بارگذاری بردار وقفه. باستثنای 11 و 101 (۲۴۲ و ۳26۳2
ite
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 11:
” بدلیل قرارداشتن بردارهایوققه در ابتدای حافظمبرنم. بکارگیری دستور 1۳4 1۳ در شروع هر برنامهای که از زببرنامه 1518 استفاده
م ىكتد
sane ا و _<$_— TABLE 6-4 SS
vectors INTERRUPT FLAG _VECTOR ADDRESS !|
System reset RST 80000۳
External 6 1۳0 0002۲
Timer 0 TFO 0008۳
External 1 let 0013H
ارت 1۳1 1 Timer
Serial port RiorT! 00290
Timer 2 TF2 or EXF2 0028
9
——
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه ۳
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 12:
ORG 0000H 5 wv
LOMP MAIN ISR چارچوب کلی یک برنامه بهمراه
ORG 00308
Extemal code FIGURE 6-3
Memory organization when
memory
15 using interrupts
' ۱
5 ۱
Main program
0030
Reset and
interrupt
ry point
0000 [_LIMP main ا
مپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
MAIN:
te
صفحه 13:
زیربرنامههای وقفه کوچک
برنمهای که ۸ بایت مکان حافنه بدا قفهبرای آن کافی باشد
ORG 0000H
LUMP MAIN
ORG OOOBII
TOLSR:
5 درصورت استفاده از چند 1518 توجه به غدم ه
Ems زیربرنامههای وقفه بزرگ
MAIN:
¥ برنامهی که ۸ بایت مکان حافظه بردار وقفه براى
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
ite
صفحه 14:
ORG 000011
TJMP MAIN
۳ 000
1:71 ۴
ORG 0030H
MAIN:
اگر برنامه اضلی برای پاسنخ به وقفه درگاه ©
Here: SJMP Here
RETT با ایجاد یک وقفه. خارج شدن برنامه اصلی ”
۷ مثال: تولید یک موج مربعی 10 1612 در P.O قفه زمانسنج صفر
ite
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 15:
9000 5 orc 0
0000 020030 6 LIMP MAIN
0008 7 ORG 909
0008 0 8 TOISR: CPL P1.0
0008 2 9 RETI
0030 10 oRG 0030H
0030 756902 12 MAIN: MOV 100 4028
0033 758ccE 2 Mov THO, #-50
0036 9286 013 SETB TRO
0038 752882 14 Mov IB, #82H
0038 8028 15 مرو
16 END
“* مثال: برنامهای جهت تولید دو موج مربعی با فرکانسهای 7 16۳12 و 500 312 در ۳1۰7 و P1.6
بنویسید.
% استفاده از دو زمانسنج صفر و یک بترتیب در حالتهای ۲ و ۱ جهت تولید موج 7 112 و 500 112
۲ آمادهسازی زمانسنج یک در زیربرنامه وقفه 111518 طی مراحل: ۱) توقف زمانستج. ۲) بارگذاری, OF
راهاندازی زمانسنج. و ۴) مکمل نمودن ۳1.6
ite
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 16:
0
MAIN
000BH
TOISR
001BH
TLISR
0030H
TMOD, #12H
THO, #-71
TRO
TFL
IE, #8aH
5
21.7
TRL
TH1, #HIGH(-1000)
TL1, #LOW{-1000)
TRI
216
صول میکرو کا
ORG
LIMP
ORG
LOMP
ORG
LIMP
ORG
Mov
MOV
SETB
SETB
MOV
SoMP
cPL
RETI
CLR
MOV
MOV
SETB
نامع
RETI
END
MAIN:
TOISR:
TLISR:
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
22
23
24
25
26
27
28
0000
9000 020030
0008
000B 02003F
0018
0018 2
0030
0030 72
0033 758CB9
0036 6
0038 ۳
003A 75A88A
003D 80FE
003F B297
0041 32
0042 288
0044 6
0047 8
0042 5288
0040 6
00458 2
ترها ترم پاییز سال تحصیلی ۹۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
te
صفحه 17:
۵- وقفههای درگاه سری
” درصورت نشاندارشدن 11 يا 181 اتفاق مىافتد؛ برخلاف وقفه زمانسنج. برجم وقفه توسط
سختافزار ياك نمىشود
ps ——>} 143 »مم
|> بر ۳-7۱ 8051
PLT 7 kHz
|FIGURE 6-4
= Waveform example
=
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه و
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 18:
v
تعیین منبع وقفه در 1515 و سپس. پاک کردن پرچم مربوطه توسط نرمافزار
” مثال: برنامهاى با وقفه جهت انتقال بيوسته كد اسكى (شامل كد كنترل) به يك ترمينال
متصل به درگاه سری ۸۰۵۱ بنو
0
MAIN
0023H
و
0030H
TMoD, #20H
TH, #-26
TRL
SCON, #42H
A, #208
IE, #904
$
A, #7FH, SKIP
A, #208
SBUF,A
A
TL
صول میکرو کامپ
SPISR:
SKIP:
سنعتی نوشیروانی بسن ست سم -رس. سین ری ری
6
7
8
9
10
1
12
13
14
15
16
17
18
19
20
21
22
23
24
25
نرخ انتقال برابر ۱۲۰۰ است
020030
020042
758920
758DE6
D28E
759842
7420
75A890
80FE
2702
7420
F599
04
299
32
0000
0000
0023
0023
0030
0036
0033
0036
0038
0038
003D
0040
0042
0045
0047
0049
صفحه 19:
لين مثال. جا نرخ انتقال 17٠٠ يك بيت در مدت 1 + 1200 - 01833 1135 ارسال میشود؛بتوجهبه 8 11/8177 بودن درگاه سری. برای
٠١ بيت مدت 8/33 105 يا Ally Sco ATTY طول مىكشده اجراى +151 در 8 ميكروثانيه. لذا 15/8 - 867 + 8018 از وقت 0817©
صرف اجرای دستور 5191۳ 5 میشود
۶- وقفههای خارجی
¥ اعمال يك وقفه خارجى به میکروکنترر با سطح صفر یا لبهمنفی بهپیههای وقفه ,1317 و ,1317 در 3ظ
% پرچمهای اصلی مولد این وقفهه ,1 و TCON JIE, حساس به سطح يا لبه بودن قابل كنترل با ,15 و ,۳ از ۳00031 1
0 باشد آنگاهوفه خارچن حساس به سطح ودر غیر ایتصوزت حساین یه لبه
۲ مثال: با استفاده از وقفه ۸۰۵۱ برنمهای جهت کنترل حرارت یک کوره بنویسید: حرارت کوره بایستی در "20 * 1 6 تثبیت شود: فرض
خاموش اروشن شدن کوره با 821.7 انجام مىشود و حسكرهاى داغ اسرد بودن كوره Sah. Jae INT, INT,
Ae
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 20:
aor
cor
are
T= 20°C
۲
for
cD
جم
dle
FIGURE 6-5
Furnace example. (a) Hardware connections (b) Timing,
۳4 سس سیم رین اف لتر ران
صفحه 21:
0
MAIN
vector at 0003K 0 ۲۲ ز
;turn furnace off 217
0013H
jturn furnace on 1.1
30H
TE, 485H enable external interrupts
megative edge triggered 110
1781
turn furnace off 2111
P3.2,SKIP ;if T > 21 degrees,
i turn furnace off 21.1
;do nothing $
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
ابل جلسه ششم درس. حسین منتظری کردی
ORG
المآ
CLR
RETI
ORG
SETB
RETI
SETB
SETB
SETB
CLR
SOMP
EXOISR:
EXLTSR:
MAIN:
SKIP:
0000
0000 020030
0003 7
0005 2
0013
0013 7
0015 2
0030
0010 85
0033 D288
0035 2
0037 D297
0039 2
0030 7
0038 8
اله
—
SS
صفحه 22:
مثال: برنامماى با استفاده از وقفه جهت تولید اخطر ورود بدون اجازهبنویسید. اخطار. یک صدای 400 ۳12 برای ۱ ثانیه در ۳1:7
توليد مىكند و حسكر متصل به ,11801 باعث توليد يك لبه متفی میشود.
يو كليل #توق وقنه عارجی سفر ili حنگردزیه وقفه وناو سيسمر يراي لزه سذلي فق عاق و وق ومانبسج ی يراق
تخیر ۱ ثانيه
پساز مقداردهی اولیهبرخی از ثباتهای ویژه و تاناسازی وقفه خارجی صفر در وضعیت تحریک با له منفی.اجاد قفه با بازشدن درب
وقفه بازشدن درب باعت اجرای ۲2601518 و در لين زیربرنام.فعالسازی وقفههای زمانسنجها بترتیب ادا زمنسنج صفر و سپس,
زفانسنع یک
بعد از تواناسازی وقفه زمانسنج صفر. ایجاد لین وقفه اجباری و رفتن به 101518 برای مقداردهی اولیه باتهای زمان سنج صفر (1
S= 1000000 ps
¥ با بازگشت از 101518 رفتن به 111618 و راهندازی زمانسنج یک برای تولید یک آهنگ با فرکانس 400 132 در ۳1۰7
Ae
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 23:
FIGURE 6-6
Loudspeaker intertace using interrupts. (a) Hardware connections (b) Timing.
صفحه 24:
0000 5 ORG 0
0000 020030 6 LIMP MAIN j3-byte instruction
0003 020038 7 Laue EXOISR ;EXT 0 vector address
0008 8 ORG 000814 «معستدر 0 vector
0008 020045 9 LIMP TOTSR
001B 10 ORG 001BH ;Timer 1 vector
001B 020059 11 LUMP TLISR
0030 12 ORG 0030H
0030 2288 3 MAIN: 68 220 megative edge activated
0032 758911 14 Mov TMoD,#11H ©; 16-bit timer mode
0035 758881 15 MoV 18,4818 jenable EXT 0 only
0038 8088 16 0و $ jnow relax
17 3
003A 7714-18 «= EXOISR: ۷ R7, #20 20ز x 5000 us = 1 second
0030 0288 ۰ 9 577 0 ;force timer 0 interrupt
0038 0288 0 1م 88م ;force timer 1 interrupt
0040 0289 ۰ 41 SETB ETO begin tone for 1 second
0042 هط 22 SETRB ETL jenable timer interrupts
0044 2 23 RETI stimer ints will do the work
24 :
—
——
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
صفحه 25:
TRO istop timer
RT, SKIP ;i£ not 20th time, exit
ETO iif 20th, disable tone
211 jdisable itself
EXIT
THO, #HIGH(-50000) ;0.05 sec. delay
‘TLO, FLOW (-50000)
TRO
TRL
TH1,#HIGH(-1250) ;count for 400 Hz
‘TLL, #LOW(~1250)
P17 music maestro!
TRL
صول میکرو کامپیوترها ترم پاییز سال تحصیلی ٩۱-۹۲ دانشکده مهندسی برق و کامپیوتر دانشگاه
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی
CLR
CLR
CLR
LUMP
MOV
SETB
RETI
CLR
MOV
cPL
SETB
RETI
TOISR:
SKIP:
EXIT:
TLISR:
25
27
28
29
30
31
32
33
34
35
36
17
38
39
41
0045 60
0047 7
0049 C2A9
0048 288
004D 020058
0050 6
0053 0
0056 6
0058 2
0059 8
0058 5
0058 812
0061 7
0063 5
0065 2
تل
—
SS
صفحه 26:
۷- زمانبندی وقفه
"۲ باتوجه به نحوه نمونعبرداری از سیگنال وقفه توسط 2[17). وجود یک تاخیر بين زمان
مشاهده وقفه تا شروع 1516 بنام زمانعکسالعمل؛ ميزان زمانعكس العمل حداقل برابر
5 119 برای وقفه سطح صفر تا حداکثر 9 11٩ برای سطح یک با کریستال 1/1112
FIGURE 6-7
‘Sampling of interrupts on | 1 machine cycte (1 ps) او
on res “ULL
[si | s2 | 53 | saf ss | مد
اضكق | ssez | sop: | مد
0.25 us.
1
3 ۱
= Interrupts
sampled °
سنعتى نوشيروانى بابل جلسه ششم درس. حسین منتظری کردی
صفحه 27:
Cycle Cycle 2° Cycle 3 Cycle 4 Cycle 5
سس سس 2 تسس تسس »سس تمه
Interrupts Interrupt accepted ISR
552 polled (PC pushed on stack) begins
“Must be last machine cycle of instruction
FIGURE 6-8
Polling of interrupts
<< 1010 18 —~--—>}— Main program ———>J كم bevel 15 >
RETI MUL AB ‘Save PC on stack
سس
Level | imerrupt
‘occurs here (missed
last chance before
RET! instruction)
-
FIGURE 6-9 =
Interrupt latency
سنعتی نوشیروانی بابل جلسه ششم درس حسین منتظری کردی ۳
