55
8051 인인인인 인인인인인 인인인 인인인 인인인인인인인 인인인

8051 인터럽트 인터페이스

  • Upload
    sadah

  • View
    131

  • Download
    2

Embed Size (px)

DESCRIPTION

8051 인터럽트 인터페이스. 순천향 대학교 정보기술공학부 이상정. 인터럽트 개념. CPU 내부 또는 외부의 요구에 의해서 정상적인 프로그램의 실행 순서를 변경하여 보다 시급한 작업 ( 인터럽트서비스 루틴 ) 을 먼저 수행한 후에 다시 원래의 프로그램으로 복귀하는 것 인터럽트는 주변장치의 서비스 요청에 CPU 가 가장 빠르게 대응할 수 있는 방법 . 주변장치측으로 부터의 발생 시기를 예측하기 어려운 비동기적인 일 (event, 사건 ) 을 CPU 가 빠르게 처리 . - PowerPoint PPT Presentation

Citation preview

Page 1: 8051 인터럽트 인터페이스

8051 인터럽트 인터페이스

순천향 대학교 정보기술공학부

이상정

Page 2: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 2

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트 개념 CPU 내부 또는 외부의 요구에 의해서 정상적인

프로그램의 실행 순서를 변경하여 보다 시급한 작업 ( 인터럽트서비스 루틴 ) 을 먼저 수행한 후에 다시 원래의 프로그램으로 복귀하는 것• 인터럽트는 주변장치의 서비스 요청에 CPU 가 가장

빠르게 대응할 수 있는 방법 .• 주변장치측으로 부터의 발생 시기를 예측하기 어려운

비동기적인 일 (event, 사건 ) 을 CPU 가 빠르게 처리 .• 서로 비동기적으로 동작하는 CPU( 매우 고속으로

동작 ) 와 주변장치 ( 비교적 저속으로 동작 ) 사이에서 효율적으로 일을 수행하는 중요한 수단 .

Page 3: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 3

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트 개념

Page 4: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 4

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트의 종류 인터럽트 발생 원인에 따른 분류

• 하드웨어 인터럽트• 내부 인터럽트• 외부 인터럽트

• 소프트웨어 인터럽트 인터럽트 발생시 마이크로프로세서의 반응 방식에

따른 분류• 차단 가능 인터럽트 (maskable interrupt)• 차단 불가능 인터럽트 (non-maskable interrupt)

인터럽트를 요구한 외부 하드웨어를 확인하는 방법에 따른 분류• 조사형 인터럽트 (polled interrupt)• 벡터형 인터럽트 (vectored interrupt)

Page 5: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 5

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트의 우선순위 제어 인터럽트 우선순위 (priority) 제어의 필요성

• 2 개 이상의 주변장치가 동시에 신호를 보내 인터럽트를 요청하는 경우

• 하 나 의 인 터 럽 트 가 서 비 스 되 고 있 는 동 안 에 또 다 른 인터럽트가 요청되는 경우

조사형 인터럽트의 경우• CPU 가 각 주변장치를 소프트웨어적으로 차례로 폴링하는

순서에 의하여 인터럽트의 우선순위가 결정• 필요할 때마다 소프트웨어를 수정하여 손쉽게 우선순위를

변경하는 것이 가능 인터럽트 제어기를 사용하는 벡터형 인터럽트의 경우

• 하드웨어 인터럽트 인터페이스가 우선순위 결정• 인터럽트 마스크 레지스터 또는 인터럽트 허용 레지스터를

가지고 있어서 인터럽트 허용 여부를 설정• 인터럽트 우선순위 제어 레지스터로 우선순위를 지정

Page 6: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 6

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트의 처리 과정

Page 7: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 7

마이크로프로세서

8051 인터럽트 인터페이스

80C32 에서의 인터럽트 종류

80C32 에서는 8 가지의 인터럽트 소스와 6가지의 인터럽트 벡터

이 모든 인터럽트들은 SFR 의 레지스터에 인터럽트 요청 사실을 표시하는 플랙 비트를 가지고 있다 . • 따라서 , 인터럽트가 허용되지 않은 상태에서도 이

비트들을 폴링 (polling) 하면 인터럽트 요청 사실을 확인할 수 있고 , 이 비트들을 소프트웨어적으로 세트시킴으로써 인위적으로 인터럽트를 발생시킬 수도 있다 .

Page 8: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 8

마이크로프로세서

8051 인터럽트 인터페이스

80C32 에서의 인터럽트 종류

Page 9: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 9

마이크로프로세서

8051 인터럽트 인터페이스

80C32 에서의 인터럽트 종류

Page 10: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 10

마이크로프로세서

8051 인터럽트 인터페이스

외부 인터럽트 INT0’ INT1’

TCON(Timer CONtrol) 레지스터로 제어

Page 11: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 11

마이크로프로세서

8051 인터럽트 인터페이스

TCON 레지스터

TCON 레지스터 • IT0 IT1 = 0 이면 레벨 트리거 (level trigger) 설정• IT0 IT1= 1 이면 하강 에지 (falling edge) 에 의한

에지 트리거 (edge trigger) 방식• 인터럽트 에지 플랙 IE0 및 IE1 은 인터럽트가

발생되면 세트되고 해당 인터럽트 서비스 루틴이 호출되어 처리가 시작되면 자동으로 클리어

• 레벨 트리거인 경우에는 IE0 IE1 에 영향을 주지 않음

• SFR 88H 번지에 매핑되어 비트 단위 제어 가능

Page 12: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 12

마이크로프로세서

8051 인터럽트 인터페이스

TCON 레지스터

예• CLR TCON.0 ; level trigger for INT0

CLR IT0• SETB TCON.0 ; edge trigger for

INT0SETB IT0

• CLR TCON.2 ; level trigger for INT1CLR IT1

• SETB TCON.2 ; edge trigger for INT1SETB IT1

Page 13: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 13

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트의 샘플링 및 허용

80C32 에서 모든 인터럽트 플랙은 각 머신 사 이 클 의 S5P2(p.56) 에 서 한 차 례 씩 샘플링된다 .• 다만 , 예외적으로 타이머 2 의 TF2 플랙만은 각

머신 사이클의 S2P2 에서 샘플링

검출된 인터럽트의 허용 여부는 IE(Interrupt Enable) 레지스터로 설정• 각 인터럽트는 비트 0-5 를 사용하여 개별적으로

허용 여부를 설정• 비 트 7 인 EA(Enable All) 비 트 를 사 용 하 여

전체적으로 허용 여부를 설정한

Page 14: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 14

마이크로프로세서

8051 인터럽트 인터페이스

IE(Interrupt Enable) 레지스터

Page 15: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 15

마이크로프로세서

8051 인터럽트 인터페이스

IE 레지스터

SFR A8 번지에 매핑되어 비트 단위 제어 가능 예

• 어떤 인터럽트도 허용하지 않음CLR EA ; CLR IE.7

• 외부 인터럽트 0(INT0) 및 직렬포트 인터럽트 허용SETB EA ; SETB IE.7SETB EX0 ; SETB IE.0SETB ES ; SETB IE.4

MOV IE, #10010001B

Page 16: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 16

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트의 우선순위 제어

80C32 에서는 인터럽트 우선순위 제어 레지스터 IP(Interrupt Priority Register) 와 IPH(Interrupt Priority High Register)를 사용하여 4 단계의 인터럽트 우선순위 레벨을 설정

Page 17: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 17

마이크로프로세서

8051 인터럽트 인터페이스

인터럽트의 우선순위 제어

낮은 레벨로 설정된 인터럽트가 처리되고 있는 동안에 이보다 높은 레벨의 인터럽트가 발생할 수 있다 .

그 러 나 , 현 재 처 리 되 고 있 는 것 과 동 일 한 우선순위 레벨의 인터럽트나 이보다 낮은 레벨의 인터럽트는 발생될 수 없다 .

서로 다른 우선순위 레벨을 가지는 인터럽트들이 2 개 이상 동시에 요청되면 가장 높은 순위의 인터럽트가 먼저 허용되어 처리된다 .

Page 18: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 18

마이크로프로세서

8051 인터럽트 인터페이스

IP 레지스터

• SFR 주소 B8H 로 비트 단위 처리 가능

Page 19: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 19

마이크로프로세서

8051 인터럽트 인터페이스

IPH 레지스터

• SFR 주소 B7H 로 비트 단위로 처리 안됨

Page 20: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 20

마이크로프로세서

8051 인터럽트 인터페이스

Page 21: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 21

마이크로프로세서

8051 인터럽트 인터페이스

IP, IPH 레지스터

예• INT0 레벨 3 우선순위 세트

SETB PX0MOV 0B7H, #1 // SETB PX0H

• INT1 레벨 2 우선순위 세트 CLR PX1MOV 0B7H, #4 // SETB PX1H

Page 22: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 22

마이크로프로세서

8051 인터럽트 인터페이스

1. INT0 인터럽트 프로그램 예

외부 인터럽트 소스 INT0 에 하강에지의 인터럽트를 가할 때 마다 병렬포트 P0 값이 반전되고 메모리 30H 번지의 내용이 증가하는 프로그램

시뮬레이터에서 내부 주변장치 제어 방법• Peripherals 메뉴• 서브메뉴

InterruptsI/O-Ports -> Port 0,1,2,3Serial Timer -> Timer 0, 1, 2

Page 23: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 23

마이크로프로세서

8051 인터럽트 인터페이스

1. INT0 인터럽트 프로그램 예

시뮬레이션에서 외부 인터럽트 인가 방법• INT0 외부 핀은 병렬포트 3 의 2 번째 비트 (P3.2)

에 연결• INT1 외부 핀은 병렬포트 3 의 3 번째 비트 (P3.3)

에 연결• 따라서 메뉴에서 병렬포트 3 을 선택하여 해당

비트의 값을 세팅하면 인터럽트 효과

Page 24: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 24

마이크로프로세서

8051 인터럽트 인터페이스

1. INT0 인터럽트 프로그램 예 인터럽트 허용 및 우선순위 , 에지트리거

• 인터럽트 허용IE 레지스터의 IE.7(EA) 와 IE.0 세트

• 인터럽트 우선순위IP, IPH 레지스터의 비트 0 을 1 로 세트하여 최고의 우선순위 부여 (IPH 레지스터는 비트 단위 세트 안됨 )

• TCON 의 비트 0 세트하여 에지 트리리거 동작 세트

SETB IP.0 ; set highest interrupt priorityMOV 0B7H, #1 ; IPH bit 0 set, cannot set a bitSETB EA ; enable global bit IE.7SETB IE.0 ; enable interupt for INT0SETB TCON.0 ; edge trigger for INT0

Page 25: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 25

마이크로프로세서

8051 인터럽트 인터페이스

1. INT0 인터럽트 프로그램 예CSEG AT 8000H

; Initialize interrupt control for INT0SETB IP.0 ; set highest interrupt priorityMOV 0B7H, #1 ; IPH bit 0 set, cannot set a bitSETB EA ; enable global bit IE.7SETB IE.0 ; enable interupt for INT0SETB TCON.0 ; edge trigger for INT0

; initial output of LED dataMOV P0, #0CLR 30H

Page 26: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 26

마이크로프로세서

8051 인터럽트 인터페이스

1. INT0 인터럽트 프로그램 예; main routin

LOOP: JMP LOOP ; infinite loop

; interrupt service routine, ; toggle P0, Increment 30HINT0_ISR: XRL P0,#0FFH

INC 30HRETI

CSEG AT 0003H ; INT0 interrupt vectoring from 0003H

JMP INT0_ISREND

Page 27: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 27

마이크로프로세서

8051 인터럽트 인터페이스

Page 28: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 28

마이크로프로세서

8051 인터럽트 인터페이스

Page 29: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 29

마이크로프로세서

8051 인터럽트 인터페이스

Page 30: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 30

마이크로프로세서

8051 인터럽트 인터페이스

Page 31: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 31

마이크로프로세서

8051 인터럽트 인터페이스

Page 32: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 32

마이크로프로세서

8051 인터럽트 인터페이스

Page 33: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 33

마이크로프로세서

8051 인터럽트 인터페이스

Page 34: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 34

마이크로프로세서

8051 인터럽트 인터페이스

Page 35: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 35

마이크로프로세서

8051 인터럽트 인터페이스

Page 36: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 36

마이크로프로세서

8051 인터럽트 인터페이스

Page 37: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 37

마이크로프로세서

8051 인터럽트 인터페이스

Page 38: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 38

마이크로프로세서

8051 인터럽트 인터페이스

Page 39: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 39

마이크로프로세서

8051 인터럽트 인터페이스

Page 40: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 40

마이크로프로세서

8051 인터럽트 인터페이스

Page 41: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 41

마이크로프로세서

8051 인터럽트 인터페이스

Page 42: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 42

마이크로프로세서

8051 인터럽트 인터페이스

Page 43: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 43

마이크로프로세서

8051 인터럽트 인터페이스

C51 인터럽트 서비스 루틴 함수 인터럽트 서비스 루틴 함수

void function_name(void) [interrupt n][using n] { ………….}• 인수나 리턴값은 지정할 수 없음• interrupt n 으로 벡터번호 지정• using n 으로 레지스터 뱅크 지정

예unsigned int cnt, sec;void timer0(void) interrupt 1 using 2 { if (++cnt == 4000) { sec++; cnt = 0; }}

Page 44: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 44

마이크로프로세서

8051 인터럽트 인터페이스

2. INT0 인터럽트 C 프로그램 예

외부 인터럽트 소스 INT0 에 하강에지의 인터럽트를 가할 때 마다 병렬포트 P0 값이 반전되고 메모리 30H 번지의 내용이 증가하는 C 프로그램

REG52.H 파일에 SFR 등이 정의

Page 45: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 45

마이크로프로세서

8051 인터럽트 인터페이스

2. INT0 인터럽트 C 프로그램 예#include <REG52.H>

sfr IPH = 0xB7; /* define IPH register */unsigned char count _at_ 0x30;

void extint0(void) interrupt 0{ P0 ^= 0xff; /* toggle parallel port 0 */ ++count; /* increment M[30H] */}

Page 46: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 46

마이크로프로세서

8051 인터럽트 인터페이스

2. INT0 인터럽트 C 프로그램 예main(){ /* set highest interrupt priority 3 */ IP = 1; IPH = 1; /* interrupt enable */ IE = 0x81; /* INT0 edge trigger */ TCON = 1; /* initialize memory, parallel port */ count = 0; P0 = 0; /* infinite loop */ while (1) ;}

Page 47: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 47

마이크로프로세서

8051 인터럽트 인터페이스

Page 48: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 48

마이크로프로세서

8051 인터럽트 인터페이스

Page 49: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 49

마이크로프로세서

8051 인터럽트 인터페이스

Page 50: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 50

마이크로프로세서

8051 인터럽트 인터페이스

Page 51: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 51

마이크로프로세서

8051 인터럽트 인터페이스

Page 52: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 52

마이크로프로세서

8051 인터럽트 인터페이스

Page 53: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 53

마이크로프로세서

8051 인터럽트 인터페이스

Page 54: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 54

마이크로프로세서

8051 인터럽트 인터페이스

Page 55: 8051 인터럽트 인터페이스

순천향대학교 정보기술공학부 이 상 정 55

마이크로프로세서

8051 인터럽트 인터페이스

프로그램 과제

프로그램 1,2 를 수행하여라 외부 인터럽트 소스 INT1 에 하강에지로

인터럽트를 가할 때 마다 병렬포트 P1 의 값과 메모리 50H 번지의 값이 증가하는 어셈블리와 C 프로그램을 각각 작성하라 ( 단 , 인터럽트의 우선순위는 2 로 둔다 ).