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´Â ¹«½ÃµÈ´Ù.
Âü°í : http://www.postech.ac.kr/group/poweron/ -
lectures/Micro processor, controller, µ¿¾Æ¸® °ÀÇ
Âü°í ¼Àû : Micro controller
80196 ±âÃʺÎÅÍ ÀÀ¿ë±îÁö - Â÷¿µ¹è Àú

|