8051
AVR
EZLab
PIC
80C196KC
DSP
ARM
VHDL
¸¶ÀÌÅ©·Î¸¶¿ì½º
·Îº¿Ã౸
Battle ·Îº¿
·Îº¿´ëȸ
È޸շκ¿
Embeded Linux
HW/SW °­ÁÂ
RTOS
 
 


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 ±âÃʺÎÅÍ ÀÀ¿ë±îÁö - Â÷¿µ¹è Àú



 

»óÈ£ : (ÁÖ) ·Îº¸ºí·° »ç¾÷ÀÚµî·Ï¹øÈ£:214-86-56219 Åë½ÅÆǸž÷½Å°í19-2544 ´ëÇ¥: ½Å´ë¼· ÀüÈ­:(02)2679-8556 Fax :(02)2679-8557 [°³ÀÎÁ¤º¸Ã³¸®¹æħ]
º»»ç : °æ±âµµ ºÎõ½Ã ¿ø¹Ì±¸ ¾à´ëµ¿ ºÎõ Å×Å©³ëÆÄÅ© 401µ¿ 502È£     ¼­¿ï»ç¹«¼Ò : ¼­¿ï½Ã ¿µµîÆ÷±¸ ¹®·¡µ¿ 4°¡ 8-1 4Ãþ
Copyright(C) 2004, (ÁÖ) ·Îº¸ºí·° ½Ã½ºÅÛÁî All Rights Reserved E-Mail : WebMaster