|
2. 196 ÀÎÅÍ·´Æ®
5.
Interrupt
5-1.
Interrupt¶õ?
interruptÀÇ
»çÀüÀû Àǹ̴ "°¡·Îä´Ù"ÀÌ´Ù.
interrupt´Â
processor°¡
¾î¶² ÀÏÀ» ó¸®ÇÏ´Â
µµÁß¿¡
Ưº°ÇÑ ÀÔ·ÂÀ̳ª »ç°ÇÀÌ
¹ß»ýÇßÀ»
¶§ ƯÁ¤ »ç°Ç¿¡
ÇØ´çÇÏ´Â
ÀÏÀ» ¼öÇàÇϵµ·Ï Çϱâ
À§Çؼ
»ç¿ëÇÑ´Ù. º¸Åë ÇÁ·Î±×·¡¹Ö
¹æ½Ä¿¡´Â
interrupt¹æ½Ä°ú
polling¹æ½ÄÀÇ
µÎ °¡Áö°¡ Àִµ¥,
pollingÀ̶õ,
¾î¶² event°¡
ÀϾ±â¸¦ ±â´Ù¸®´Â
¹æ½ÄÀÌ´Ù. µû¶ó¼ ¾î¶²
signalÀ»
pollingÇϰí
ÀÖÀ» ¶§¿¡´Â ´Ù¸¥
ÀÛ¾÷À»
¼öÇàÇÒ ¼ö°¡ ¾ø´Ù.
µû¶ó¼
processorÀÇ
È¿À²ÀÌ ¶³¾îÁø´Ù. ±×·¯³ª
interrupt¸¦
»ç¿ëÇϸé, ÀÛ¾÷À» ¼öÇà
Áß¿¡
ƯÁ¤ ÀԷ¿¡ ´ëÇÑ
󸮸¦
ÇÒ ¼ö°¡ ÀÖÀ¸¹Ç·Î
ÈξÀ
È¿À²ÀûÀÏ °ÍÀÌ´Ù. ¿¹¸¦
µé¾î
C¿¡¼ scanf()¸¦
»ç¿ëÇÑ´Ù¸é, ÀÌ´Â data
pollingÀ»
ÇÏ´Â °ÍÀ̹ǷÎ, À̸¦
½ÇÇàÇÏ´Â
µ¿¾È CPU´Â ´Ù¸¥
ÀÏÀ»
ÇÒ ¼ö°¡ ¾ø´Ù.
µû¶ó¼
ÀÔ·ÂÀÌ randomÀ¸·Î
µé¾î¿À´Â ½ÅÈ£¸¦
ó¸®ÇØ¾ß ÇÏ´Â °æ¿ì¶ó¸é,
interrupt¸¦
»ç¿ëÇÏ´Â °ÍÀÌ
È¿À²ÀûÀÌ´Ù.
ÀÌ
interrupt¸¦ ó¸®Çϱâ À§Çؼ´Â ÇöÀç interrupt ½ÅÈ£°¡ °ËÃâµÇ¾ú´Â°¡¸¦ ³ªÅ¸³»´Â interrupt pending
register°¡ ÇÊ¿äÇϰí, ¶Ç ¿©·¯
°³ÀÇ interrupt source¸¦ »ç¿ëÇÏ´Â °æ¿ì interruptÀÇ ¿ì¼± ¼øÀ§¸¦ °áÁ¤Çϱâ À§ÇÑ interrupt priority
register, ±×¸®°í interrupt¸¦ enable/disableÇϱâ À§ÇÑ interrupt mask
register°¡
ÇÊ¿äÇÏ´Ù. ¶Ç, º¸Åë
controller´Â
¸¹Àº interrupt¸¦
°¡Áö°í ÀÖÀ¸¹Ç·Î,
ÀÌ °¢°¢ÀÇ
registerµéÀÇ °¢
bit´Â °¢°¢ÀÇ
interrupt¿¡ ÇØ´çÇÏ°Ô µÉ °ÍÀÌ´Ù. ±×¸®°í ¸ðµç interrupt¸¦ enable/disableÇÏ´Â bitµµ ÀÖ°Ô µÈ´Ù. ¶Ç À̶§,
°¢°¢ÀÇ interrupt ¿äûÀÌ µé¾î¿ÔÀ» °æ¿ì ¾î¶² routineÀ» ½ÇÇàÇÒ °ÍÀΰ¡¿¡ ´ëÇÑ Á¤º¸°¡ ÇÊ¿äÇѵ¥, À̰ÍÀÌ ¹Ù·Î IVT(Interrupt Vector
Table)ÀÌ´Ù. ¿©±â¿¡´Â
interrupt ¿äûÀÌ µé¾î¿ÔÀ» °æ¿ì ºÐ±âÇÒ °÷ÀÇ ÁÖ¼Ò°¡ µé¾î°¡°Ô µÇ°í, °¢°¢ÀÇ Àý´ëÀûÀÎ VectorÀÇ À§Ä¡°¡ °áÁ¤µÇ¾î ÀÖ´Ù. ¶Ç ºÐ±âÇÏ´Â À§Ä¡¿¡´Â ISR(Interrupt Service Routine)ÀÌ Á¸ÀçÇÏ¿©, ÀÌ
routineÀ»
½ÇÇàÇÑ ÈÄ
interrupt ÀÌÀüÀÇ »óÅ·Πµ¹¾Æ°¡°Ô µÈ´Ù. PCÀÇ °æ¿ì¿¡µµ PC¸¦ setup ÇÒ ¶§ IRQ¸¦ settingÇÏ´Â °æ¿ì¸¦ ¸¹ÀÌ º¸¾ÒÀ» °ÍÀÌ´Ù. ÀÌ´Â °¢°¢ÀÇ IRQ¸¦ ¾î¶² IO°¡ ¾µ
°ÍÀΰ¡¿¡ ´ëÇÑ
¼³Á¤À» ÇØ ÁÖ´Â
°úÁ¤ÀÌ´Ù.
¿©±â¼´Â
196ÀÇ interrupt ±¸Á¶¿¡ ´ëÇØ¼ ¾Ë¾Æº¸ÀÚ.
5-2.
196KCÀÇ Interrupt 󸮰úÁ¤ ¹× ¿øÀÎ
5-2-1.
Interrupt ó¸®
°úÁ¤
196KCÀÇ
interrupt 󸮰úÁ¤Àº ´ÙÀ½°ú °°´Ù.

(1) up
edge °ËÃâ±â(transition
detector)°¡
interrupt request(interrupt ¿äû
½ÅÈ£ÀÇ »ó½Â
¸ð¼¸®(¡è))¸¦ ÀνÄÇØ¼
(2)
interrupt pending register¿¡ interrupt
source¿¡
ÇØ´çÇÏ´Â bit¸¦ set
½ÃŲ´Ù. ÀÌ
¶§, ÀÌ register¿¡
ÀÖ´Â
´Ù¸¥ bitµéÀº À̹Ì
´Ù¸¥ interrupt
source¿¡¼
¹ÞÀº interrupt¸¦
Ç¥½ÃÇϱâ À§ÇÏ¿©
setµÇ¾îÀÖÀ»
¼öµµ ÀÖ´Ù.
(3)
interrupt request¸¦ CPU°¡ ¹Þ¾Æ¼ ó¸®Çϱâ À§Çؼ´Â ´ÙÀ½°ú °°Àº Á¶°ÇÀ» ¸¸Á·ÇÏ¿©¾ß ÇÑ´Ù.
interrupt
pending registerÀÇ ÇØ´ç bit°¡ setµÇ¾îÀÖ¾î¾ß ÇÑ´Ù.
interrupt
mask register¿¡
ÇØ´çµÇ´Â bit°¡
setµÇ¾îÀÖ¾î¾ß ÇÑ´Ù.
PSW³»¿¡
ÀÖ´Â Àüü interrupt enable bit(global
interrupt enable bit, PSW.9)°¡ set
µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.
(4)
ÀÌ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â
interrupt´Â
°¡Àå ³ôÀº
priority¸¦ °®´Â
interrupt¸¦
¼±ÅÃÇÏ´Â priority encoder¸¦ Åë°úÇϰÔ
µÈ´Ù. ÀÌ
priority´Â
¾Æ·¡ Ç¥¿Í °°ÀÌ
hardwareÀûÀ¸·Î
°áÁ¤µÇ¾î ÀÖ´Ù.
(5)
°¢ interrupt´Â
¾Æ·¡ Ç¥¿¡¼¿Í
°°ÀÌ interrupt vector
table¿¡
ÇÒ´çµÈ address¸¦ °¡Áö°í ÀÖÀ¸¸ç ±× address¿¡´Â °¢ ISRÀÇ
½ÃÀÛ address¸¦ ½á³Ö¾î¾ß ÇÑ´Ù. (±×·¯¹Ç·Î, TableÀÇ
ÇÑ
°ø°£Àº word°¡ µÈ´Ù.)
ÀÌ·¸°Ô
ÇØ¼ °¢ ó¸®
routineÀ¸·Î
branchÇØ¼
programÀ»
½ÇÇàÇÏ°Ô µÈ´Ù. ÀÌ
¶§
branch´Â º¸Åë
branch¿Í ´Þ¸®
subroutine call (CALL)°ú °°Àº ¹æ½ÄÀ¸·Î ÀÌ·ç¾îÁö¹Ç·Î, ISRÀÇ ³¡¿¡¼´Â
¹Ýµå½Ã main programÀ¸·Î return
ÇØ¾ß
ÇÑ´Ù. (RET)
|
interrupt ¹øÈ£ |
interrupt
source |
IVT |
priority |
|
INT00 |
Timer
overflow |
2000H |
0 |
|
INT01 |
AD conversion
done |
2002H |
1 |
|
INT02 |
HSI data
set |
2004H |
2 |
|
INT03 |
HSO |
2006H |
3 |
|
INT04 |
HSI.0
pin |
2008H |
4 |
|
INT05 |
software
timer |
200AH |
5 |
|
INT06 |
serial I/O (TXD,
RXD) |
200CH |
6 |
|
INT07 |
EXTINT (External
interrupt) |
200EH |
7 |
|
Ưº° |
TRAP
instruction |
2010H |
- |
|
Ưº° |
unimplemented OP
code |
2012H |
- |
|
INT08 |
TI flag
(TX) |
2030H |
8 |
|
INT09 |
RI flag
(RX) |
2032H |
9 |
|
INT10 |
HSI FIFO
4 |
2034H |
10 |
|
INT11 |
Timer 2
capture |
2036H |
11 |
|
INT12 |
Timer 2
overflow |
2038H |
12 |
|
INT13 |
EXTINT1 |
203AH |
13 |
|
INT14 |
HSI FIFO
FULL |
203CH |
14 |
|
PTS |
|
|
|
INT15 |
NMI |
203EH |
15 |
5-2-2.
Interrupt Source
¾ÕÀÇ
interrupt ¿øÀε鿡 ´ëÇØ¼ ´õ ÀÚ¼¼È÷
¼³¸íÇÏ¸é ´ÙÀ½°ú
°°´Ù.

À§ÀÇ ±×¸²¿¡¼
¾î¶²
interrupt´Â
ÇØ´çµÇ´Â IO control
register¸¦
¹Ì¸® ¼³Á¤ÇØ¾ß interrupt°¡ ÀϾ
¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë
¼ö ÀÖÀ» °ÍÀÌ´Ù. interruptÀÇ ¹ß»ý
¿øÀÎÀº µÚÀÇ °¢°¢ÀÇ device¸¦ ¼³¸íÇÏ¸é¼ ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇÑ´Ù. °¢°¢ÀÇ interrupt¸¦ ´ëÃæ ¼³¸íÇØº¸¸é ´ÙÀ½°ú °°´Ù.
(1) INT00
: Timer1°ú Timer2ÀÇ overflow interrupt·Î¼ timer°¡ FFFFH¿¡¼ 0000H°¡ µÇ¸é interrupt°¡ ¹ß»ýÇÑ´Ù. IOC1ÀÇ bit2¸¦ set½Ã۸é, timer1¿ëÀ¸·Î
»ç¿ëÇϸç,
bit3À» set
½Ã۸é timer2¿ëÀ¸·Î
»ç¿ëÇÑ´Ù. ±×¸®°í
overflow¸¸
checkÇÏ·Á¸é
IOS1ÀÇ bit4(timer2),
bit5(timer1)¸¦
checkÇÏ¸é µÈ´Ù. timer2¸¦ interrupt
source·Î
»ç¿ëÇÒ °æ¿ì IOC2ÀÇ
bit5¸¦
"0"À¸·Î Çϸé
timer2°¡ FFFFH¡æ0000H·Î µÉ ¶§ interrupt°¡ ¹ß»ýÇϰí, "1"·Î Çϸé, 7FFFH¡æ8000HÀÏ ¶§ interrupt°¡ ¹ß»ýÇÑ´Ù.
(2) INT01
: ADCÀÇ conversionÀÌ ³¡³ª¸é ¹ß»ýÇÏ´Â interruptÀÌ´Ù.
(3) INT02
: IOC1.7=1ÀÏ ¶§
HSIÀÇ FIFO¿¡
¿©¼¸ °³ÀÇ data°¡
loadµÇ¸é
¹ß»ýÇÏ´Â interruptÀÌ´Ù. IOC1.7=0À̸é holding register¿¡ °ªÀÌ loadµÉ ¶§¸¶´Ù
interrupt°¡ ¹ß»ýÇÑ´Ù.
(4) INT03
: ÀÌ interrupt´Â
HSO event°¡ ÀϾ¸é ¹ß»ýÇÏ´Â interrupt·Î¼ HSO.0~HSO.5¿¡ ´ëÇØ¼ °¢°¢
interrupt¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
HSO_COMMAND registerÀÇ bit0~3¿¡ HSOÀÇ pin
¹øÈ£¸¦
¾²°í bit4¿¡
interrupt enable/disableÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
¶Ç IOS2¸¦ ÀÌ¿ëÇÏ¿© HSOÀÇ event¸¦ checkÇÒ ¼ö ÀÖ´Ù.
(5) INT04
: ÀÌ interrupt´Â
HSI.0 pinÀÇ up-edge¿¡¼ ¿ÜºÎ interrupt·Î µÈ´Ù. ÀÌ
interrupt¸¦ »ç¿ëÇÒ
°æ¿ì¿¡´Â HSI FIFO¸¦
enableÇÒ ÇÊ¿ä´Â
¾ø´Ù.
(6) INT05
: software timer interrupt·Î¼ ³×
°³ÀÇ software timer°¡ µ¿½Ã¿¡ interrupt¸¦ ¹ß»ýÇÒ
¼ö ÀÖ´Ù. interrupt ¼³Á¤Àº HSO_COMMANDÀÇ bit0~3¿¡ software timer¹øÈ£¸¦ ¾²°í
bit4¸¦ "1"·Î
¼³Á¤ÇÏ¸é µÈ´Ù.
(7) INT06
: serial ÀÔ/Ãâ·Â
interrupt·Î¼ ¼Û/¼ö½Å interruptÀÌ´Ù.(¼Û½ÅµÉ ¶§¿Í ¼ö½ÅµÉ ¶§ ¸ðµÎ
interrupt°¡ ¹ß»ýÇÑ´Ù.)
(8) INT07
: ¿ÜºÎ interrupt·Î¼ µÎ °³ÀÇ ¿øÀÎÀÌ ÀÖ´Ù. IOC1.1=0À̸é P2.2(EXTINT)°¡, IOC1.1=1À̸é
P0.7(EXTINT1)ÀÌ ¼±ÅõȴÙ. ¶È°°ÀÌ up-edge¿¡¼ triggerµÈ´Ù.
(9)
INT08, INT09 : serial Åë½ÅÀÇ ¼Û/¼ö½Å interrupt·Î
INT08˼
¼Û½Å, INT09´Â ¼ö½Å
interrupt·Î
INT06°ú ´Þ¸®
¼Û/¼ö½Å¿¡
µ¶¸³ÀûÀ¸·Î »ç¿ëÇÒ ¼ö
ÀÖ´Ù.
ÀÌ interrupt¸¦
»ç¿ëÇÒ °æ¿ì¿¡´Â
INT06˼
disable½ÃŲ´Ù.
(10)
INT10 : HSIÀÇ FIFO·Î ³× °³
ÀÌ»óÀÇ data°¡ ÀԷµÉ
¶§
¹ß»ýÇÏ´Â interruptÀÌ´Ù.
(11)
INT11 : P2.7(T2CAPTURE)ÀÇ up-edge¿¡¼ ¹ß»ýÇÏ´Â interruptÀ̸ç, timer2ÀÇ °ªÀÌ T2CAPTURE
register·Î º¹»çµÈ´Ù.
(12)
INT12 : INT00¿¡¼ ¼³¸íÇÑ timer2ÀÇ overflow interruptÀÌ´Ù.
(13)
INT13 : ¿ÜºÎ interrupt·Î P0.7ÀÇ up-edge¿¡¼ interrupt¸¦ ¹ß»ýÇÑ´Ù.
(14)
INT14 : HSIÀÇ FIFO°¡ fullÀÌ µÉ ¶§ ¹ß»ýÇÏ´Â interruptÀÌ´Ù.
5-3.
Interrupt Control
5-3-1.
Interrupt Pending Register
interrupt
pending register´Â ¾Õ¼ ¼³¸íÇÑ °Íó·³ ÇöÀç ¾î¶² interrupt
request°¡
µé¾î¿Ô´ÂÁö¸¦ ³ªÅ¸³»´Â registerÀÌ´Ù. 196KC¿¡´Â INT_PEND,
INT_PEND1ÀÇ
µÎ register°¡
ÀÖÀ¸¸ç ÀÌ´Â
´ÙÀ½°ú °°ÀÌ
µ¿ÀÛÇÑ´Ù.
(1)
interrupt sourceÁß¿¡¼ 0¡æ1ÀÇ
transitionÀÌ »ý±â¸é, PSW.9ÀÇ IE bit ¶Ç´Â interrupt mask register¿Í °ü°è¾øÀÌ
¾Æ·¡ ±×¸²ÀÇ interrupt source¿¡
´ëÀÀµÇ´Â
bit°¡ setµÈ´Ù.
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
12H:
INT_PEND1
13H:
INT_MASK1 |
NMI |
FIFO
full |
EXTINT1 |
T2
overflow |
T2
capture |
HSI FIFO
full |
RI |
TI |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
09H:
INT_PEND
08H:
INT_MASK |
EXTINT |
serial
port |
software
timer |
HSI.0
pin |
HSO
pin |
HSI
data |
A/D
done |
timer
overflow |
(2)
interrupt vector¸¦ ¾òÀ¸¸é pending registerÀÇ ÇØ´ç bit´Â clearµÈ´Ù.
(3)
interrupt pending bit¸¦ software·Î set½Ãų ¼ö ÀÖÀ¸¸ç À̸¦ ÀÌ¿ëÇϸé softwareÀûÀÎ ¹æ¹ýÀ¸·Î interrupt request¸¦ ÇÒ ¼ö
ÀÖ´Ù.
(4)
INT_PEND, INT_PEND1Àº ¾ðÁ¦µçÁö ¾î´À interrupt°¡ ´ë±â ÁßÀÎÁö¸¦ °Ë»çÇϱâ À§Çؼ ÀÐÀ» ¼ö
ÀÖ´Ù.
5-3-2.
Interrupt Mask Register
interrupt
mask register´Â
°³°³ÀÇ interrupt¸¦
mask registerÀÇ ÇØ´ç bit¸¦ set, clear
½ÃÅ´À¸·Î¼
°¢°¢ÀÇ interrupt¸¦ enable/disable½Ãų
¼ö
ÀÖ´Â registerÀÌ´Ù.
196KC¿¡´Â INT_MASK, INT_MASK1ÀÇ µÎ register°¡ ÀÖ°í
À̵éÀº interrupt pending register¿Í °°Àº
ÇüŸ¦
°¡Áø´Ù. ¾Æ·¡ Ç¥´Â
interrupt source¿Í ÇÊ¿äÇÑ IO control registerµéÀÌ´Ù.
|
interrupt |
mask |
control
bit |
required register or
bit |
|
NMI |
INT_MASK1.7 |
NMI
pin |
|
|
HSI FIFO
full |
INT_MASK1.6 |
IOC1.7=1 |
IOC0 |
|
EXTINT1
pin |
INT_MASK1.5 |
IOC1.1 |
|
|
T2
overflow |
INT_MASK1.4 |
IOC1.3=1,
IOC2.5 |
|
|
T2
capture |
INT_MASK1.3 |
P2.7(¡è) |
|
|
HSI FIFO
4 |
INT_MASK1.2 |
|
IOC0 |
|
RI |
INT_MASK1.1 |
|
|
|
TI |
INT_MASK1.0 |
|
IOC1.5 |
|
EXTINT |
INT_MASK.7 |
IOC1.1 |
|
|
serial
port |
INT_MASK.6 |
|
SP_CON, baud rate,
IOC1.5=1 |
|
software
timer |
INT_MASK.5 |
HSO_COMMAND |
|
|
HSI.0 |
INT_MASK.4 |
HSI pin(¡è) |
|
|
HSO |
INT_MASK.3 |
HSO_COMMAND |
|
|
HSI data
valid |
INT_MASK.2 |
IOC1.7=0 |
IOC0 |
|
AD conversion
done |
INT_MASK.1 |
|
AD_Command,
HSO_Command |
|
timer
overflow |
INT_MASK.0 |
IOC1.2,
IOC1.3=1 |
|
Interrupt
mask register´Â
´ÙÀ½°ú °°ÀÌ
µ¿ÀÛÇÑ´Ù.
(1)
INT_MASK, INT_MASK1Àº byte register·Î¼ read/write¸¦ ÇÒ
¼ö ÀÖÀ¸¸ç, ÇØ´çµÇ´Â bit¸¦ set½Ã۸é interrupt enable,
clear½Ã۸é interrupt disableÀÌ µÈ´Ù.
(2)
INT_MASK, INT_MASK1ÀÇ bit°¡ clearµÇ¾î ÀÖ´õ¶óµµ interrupt request°¡ ÀÖÀ¸¸é interrupt pending
registerÀÇ
ÇØ´ç bit´Â
setµÇ¹Ç·Î, softwareÀûÀ¸·Î interrupt request¸¦ °Ë»çÇÒ
¼öµµ ÀÖ´Ù.
(3)
interrupt vector¸¦ ¾ò¾îµµ interrupt pending registerÀÇ ÇØ´çµÇ´Â
bit´Â
clearµÇÁö¸¸,
interrupt mask register´Â clearµÇÁö ¾ÊÀ¸¹Ç·Î softwareÀûÀ¸·Î
clear½ÃÄѾß
ÇÑ´Ù.
(4)
INT_MASK1¿¡ ÀÖ´Â
NMI bit´Â ¾Æ¹«
±â´ÉÀÌ ¾ø´Ù. Áï, NMI
bit°¡
"0"À̰Ç, "1"À̰Ç
NMI(None Maskable Interrupt)¸¦ enable/disable½Ãų
¼ö
¾ø´Ù.
(5) reset
ÈÄ¿¡ interrupt mask
register´Â
¸ðµÎ clearµÈ´Ù. (interrupt
disable)
(6)
PUSHF/POPF ¸í·ÉÀ¸·Î INT_MASK,
PSW¸¦
stack¿¡ ÀúÀåÇϰųª »©¿Ã ¼ö
ÀÖÀ¸¸ç, INT_MASK1Àº byte registerÀ̱â
¶§¹®¿¡
WSR°ú °°ÀÌ
PUSHA/POPA ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ÀúÀåÇϰųª
´Ù½Ã »© ¿Ã
¼ö
ÀÖ´Ù. ¶Ç PUSHF,
PUSHA ¸í·ÉÀº PSW¿Í
interrupt mask register¸¦ clearÇϱ⠶§¹®¿¡ ÀÌ ¸í·ÉÀ» ½ÇÇàÇÏ°í ³ª¸é interrupt´Â disableµÈ´Ù.
µû¶ó¼
º¸ÅëÀÇ ISR¿¡¼´Â ÀÌ
¸í·ÉÀ»
ISRÀÇ ¸Ç óÀ½¿¡
µÎ¾î¾ß¸¸
ÀÌÀüÀÇ routine¿¡
¿µÇâÀ» ÁÖÁö
¾Ê´Â´Ù. ¶Ç ISRÀÇ
¸Ç
³¡¿¡¼´Â POPF/POPAÀ» »ç¿ëÇÏ¿©, interrupt mask register¿Í PSW, WSR°ªÀ»
¿ø·¡´ë·Î
µ¹·Á³õ¾Æ¾ß
ÇÑ´Ù.
5-3-3.
Interrupt Àüü
enable
NMI,
TRAP, unimplemented OP code interrupt¸¦ Á¦¿ÜÇÑ
¸ðµç interrupt´Â PSWÀÇ I bit(PSW.9)¸¦ clear½Ã۸é disableµÇ°í, PSW.9°¡ setµÇ°í, INT_MASK, INT_MASK1ÀÇ ÇØ´ç
bit°¡ setµÇ¾î
ÀÖÀ¸¸é enableµÈ´Ù.
196¿¡´Â À̸¦
À§ÇÑ Æ¯º°ÇÑ ¸í·ÉÀÌ
ÀÖ´Ù.
EI
(Enable Interrupt) ; Àüü interrupt enable
DI
(Disable Interrupt) ; Àüü interrupt disable
5-4.
Ưº°ÇÑ Interrupt
5-4-1.
NMI (None Maskable Interrupt)
NMI´Â
°¡Àå ³ôÀº priority¸¦ °®´Â´Ù.
¼³°è»óÀÇ ´ëĪ ¶§¹®¿¡ INT_MASK1¿¡ NMI bit°¡ Á¸ÀçÇÏÁö¸¸, Àǹ̰¡ ¾ø´Ù. ÇÑÆí ȣȯ¼º
¶§¹®¿¡ NMI bit´Â 0À¸·Î µÎ´Â
°ÍÀÌ ÁÁ´Ù. ¸¸¾à NMI¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸·Á¸é, ¿ÜºÎÀÇ NMI pinÀ» groundÇÏ¸é µÈ´Ù.
5-4-2.
TRAP
TRAP
¸í·ÉÀº software interrupt ȤÀº software
debugger¸¦
¼³°èÇÏ´Â µ¥ ÀÖ¾î¼ single stepÀ¸·Î À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. TRAP ¸í·ÉÀº ´ÙÀ½
¸í·ÉÀ» ½ÇÇàÇÒ ¶§±îÁö´Â interrupt ÀÎÁ¤À» ¹æÁöÇÑ´Ù.
5-4-3.
Unimplemented OP code
80C196KC¿¡¼
Á¤ÀǵÇÁö ¾ÊÀº OP code¸¦ ½ÇÇàÇÒ
°æ¿ì¿¡ ¹ß»ýÇÏ´Â interruptÀÌ´Ù.
5-5.
Interrupt Priority
priority
encoder´Â ´ë±â
ÁßÀ̰ųª enableµÈ
interruptÁß¿¡¼
°¡Àå ³ôÀº
priority¸¦ °®´Â
interrupt°¡
ISRÀ» ½ÇÇàÇÏ°Ô ÇÑ´Ù.
¾ÕÀÇ
Ç¥¿¡ ÀÖ´Â °Íó·³
priority´Â
hardwareÀûÀ¸·Î
Á¤ÇØÁ®ÀÖ´Ù. ¿©±â¼ 15°¡
°¡Àå
³ôÀº priorityÀÌ´Ù.
ÀÌ priority¸¦
º¯°æÇÏ·Á¸é softwareÀûÀÎ ¹æ¹ýÀ¸·Î mask register¸¦ º¯°æÇÏ¿©¾ß ÇÑ´Ù.
¿¹¸¦ µé¾î
serial(RX) interrupt routine¿¡¼ ¿ÜºÎ interrupt¸¦ Á¦¿ÜÇϰí
´Ù¸¥ interrupt¸¦ Çã¿ëÇÏÁö ¾ÊÀ¸·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
interrupt
vector table 2038H¿¡´Â label SERIAL_RI_ISRÀÇ °ªÀÌ
ÀúÀåµÇ¾î ÀÖ¾î¾ßÇϸç, ÀÌ routineÀ» ½ÇÇàÇϱâ
À§ÇÏ¿© interrupt´Â enableµÇ¾î ÀÖ¾î¾ß
ÇÑ´Ù.
CSEG
AT
2038H
DCW
SERIAL_RI_ISR
::
::
::
::
CSEG
AT
3000H
SERIAL_RI_ISR: PUSHA
LDB
INT_MASK, #10000000B ; EXTINT¸¸ enable
EI
; interrupt enable
::
::
POPA
RET
ISRÀ»
¼³¸íÇÏ¸é ´ÙÀ½°ú °°´Ù.
(1)
ISR·Î µé¾î°¡´Â
ÀýÂ÷´Â,
¨ç IP¸¦
stack¿¡
pushÇϰí,
¨è ´ë±âÁßÀ̰í
maskµÇÁö
¾ÊÀº °¡Àå ³ôÀº
priority¿¡
´ëÀÀµÇ´Â vectorÀÇ
³»¿ëÀ» IP¿¡
loadÇÑ´Ù.
¨é
hardware´Â interrupt call ¸í·É ¹Ù·Î Á÷ÈÄ¿¡´Â ´Ù¸¥ interrupt´Â Çã¿ëµÇÁö ¾È´Â´Ù. À̰ÍÀº interrupt callÀÌ
½ÃÀ۵Ǹé
ISRÀÇ Ã¹ ¹øÂ°
¸í·ÉÀÇ
½ÇÇàÀ» º¸ÁõÇϱâ À§ÇÑ
°ÍÀÌ´Ù.
(2) PUSHA
¸í·É
¨ç stack¿¡
PSW¸¦
ÀúÀåÇϰí PSW¸¦
clear½ÃŲ´Ù.
¨è ¶Ç
INT_MASK1°ú
WSRÀ» stack¿¡
pushÇϰí INT_MASK1Àº clearµÈ´Ù. À̰ÍÀº ISR¿¡¼ INT_MASK1°ú WSRÀ»
Á¶Á¤ÇÒ ¼ö ÀÖ°Ô Çϱâ
À§ÇÑ °ÍÀÌ´Ù.
¨é
80C196KC´Â PUSHA¸í·ÉÀ» ½ÇÇàÇÒ ¶§±îÁö´Â interrupt¸¦ Çã¿ëÇÏÁö ¾Ê´Â´Ù. LDB ¸í·ÉÀ» ½ÃÀÛÇÒ ½ÃÁ¡¿¡ interrupt enable
flag´Â
¸ðµÎ clearµÇ¾î
ÀÖÀ¸¹Ç·Î LDB INT_MASK1,.... ¸í·ÉÀÇ ½ÇÇàÀ» º¸ÁõÇÏ°Ô µÇ´Â °ÍÀÌ´Ù.
¨ê
LDB INT_MASK1,.. ¸í·ÉÀº SERIAL_RI_ISR interrupt
service routine¿¡¼ ´Ù¸¥ interrupt¸¦ Çã¿ëÇϵµ·Ï
interrupt¸¦ enable ½ÃŰ´Â °ÍÀÌ´Ù. ÀÌ
¿¹¿¡¼´Â ´ÜÁö EXTINT interrupt¸¸ enable
½ÃÄ×´Ù. ¿©±â¼
EXTINT°¡
¾Æ´Ñ ´Ù¸¥
interruptµµ enable½Ãų ¼ö ÀÖ´Ù.
INT_MASK1 register¸¦ ÀÌ¿ëÇÏ¿© ƯÁ¤ interrupt¸¸À» enable½ÃÅ´À¸·Î¼ hardware¿¡ °ü°è¾øÀÌ
softwareÀûÀ¸·Î interruptÀÇ priority¸¦
°áÁ¤ÇÒ
¼ö°¡ ÀÖ´Ù.
¨ë EI ¸í·ÉÀº
interrupt enable bit(PSW.9)¸¦ setÇÔÀ¸·Î¼ interrupt¸¦ enable ½ÃŲ´Ù. ½ÇÁúÀûÀÎ ISRÀº software¿¡
ÀÇÇØ
¼¼¿öÁø priority ±¸Á¶ ³»¿¡¼ ½ÇÇàµÈ´Ù.
¨ì ISR ³¡¿¡
POPA ¸í·ÉÀº
¿ø·¡ PSW¿Í
interrupt mask register ¹× WSRÀ» ´Ù½Ã ã¾Æ¿Â´Ù. ISR¿¡¼ interrupt mask
register°¡ º¯°æµÇ¾ú´ø °ÍÀÌ POPA ¸í·ÉÀ¸·Î ÀÒ¾î¹ö¸®°Ô
µÈ´Ù. hardware¿¡¼
POPA ¸í·É°ú RET¸í·É±îÁö interrupt request´Â ¹«½ÃµÈ´Ù.
Âü°í
¼Àû : Micro controller 80196 ±âÃʺÎÅÍ ÀÀ¿ë±îÁö - Â÷¿µ¹è
Àú

|