LAB‎ > ‎

Lab 13

13 Interrupt Handler

1) 다음 두 개의 프로그램을 실행하며 관찰하시오.
-  V09에서 프로그램에서 요구하는 만큼 Button을 추가한다. (1개, 2개, 3개)
- 아래 프로그램을 실행해본다. 이 때 버튼을 여러번 누르면서 관찰한다. 두개 이상인 경우 번갈아 가며 눌러본다.
- 실행 흐름을 파악하여 설명해본다. (PC의 변화 및 변화하는 이유)
[CPU]
- IH 레지터의 역할
- iRTN 레지스터 변화 및 역할
- IRET 명령어의 역할
[PIC]
- ISR 레지스터의 역할
[Button 장치]
- IO 주소
- IRQ 

/**************** 프로그램 1 *******************/
// V09 one button
IO_BRIDGEEQU0
PIC_IRREQU96
PIC_ISREQU97
PIC_CMDEQU98
PIC_IMREQU99
SIMPLE_INTSTART0
 LD  A P_IHENTRY// initialize IH register
LDIH A
LOOP    COB
JMP LOOP
        
ORG 10
IHENTRYINCX
MOVA X
OUT0
        LD A PIC_EOI
    OUTPIC_CMD
IRET
        
P_IHENTRY BOX IHENTRY
PIC_MASKONBOX100
PIC_MASKOFFBOX200
PIC_MASKSETBOX300
PIC_ICLBOX997
PIC_ICEBOX998
PIC_EOI BOX 999



/**************** 프로그램 2 *******************/
// V09 two buttons
IO_BRIDGE EQU 0
PIC_IRR EQU 96
PIC_ISR EQU 97
PIC_CMD EQU 98
PIC_IMR EQU 99
SIMPLE_INT START 0
  LD   A P_IHENTRY // initialize IH register
LD IH A
LOOP    
INC D0
DEC D0
JMP  LOOP
        
ORG  10
IHENTRY IN PIC_ISR
MOV C A
LD  A =1
CMP A C
SKZ
JMP NEXT_CASE
INC X
JMP OUT_RESULT
NEXT_CASE LD  A =2
CMP A C
SKZ
JMP OUT_RESULT
DEC X
OUT_RESULT MOV A X
OUT IO_BRIDGE
INT_END LD  A PIC_EOI
     OUT PIC_CMD
IRET
P_IHENTRY  BOX  IHENTRY
        
PIC_MASKON BOX 100
PIC_MASKOFF BOX 200
PIC_MASKSET BOX 300
PIC_ICL BOX 997
PIC_ICE BOX 998
PIC_EOI  BOX  999

Comments