Upload
sadah
View
133
Download
2
Embed Size (px)
DESCRIPTION
8051 인터럽트 인터페이스. 순천향 대학교 정보기술공학부 이상정. 인터럽트 개념. CPU 내부 또는 외부의 요구에 의해서 정상적인 프로그램의 실행 순서를 변경하여 보다 시급한 작업 ( 인터럽트서비스 루틴 ) 을 먼저 수행한 후에 다시 원래의 프로그램으로 복귀하는 것 인터럽트는 주변장치의 서비스 요청에 CPU 가 가장 빠르게 대응할 수 있는 방법 . 주변장치측으로 부터의 발생 시기를 예측하기 어려운 비동기적인 일 (event, 사건 ) 을 CPU 가 빠르게 처리 . - PowerPoint PPT Presentation
Citation preview
8051 인터럽트 인터페이스
순천향 대학교 정보기술공학부
이상정
순천향대학교 정보기술공학부 이 상 정 2
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트 개념 CPU 내부 또는 외부의 요구에 의해서 정상적인
프로그램의 실행 순서를 변경하여 보다 시급한 작업 ( 인터럽트서비스 루틴 ) 을 먼저 수행한 후에 다시 원래의 프로그램으로 복귀하는 것• 인터럽트는 주변장치의 서비스 요청에 CPU 가 가장
빠르게 대응할 수 있는 방법 .• 주변장치측으로 부터의 발생 시기를 예측하기 어려운
비동기적인 일 (event, 사건 ) 을 CPU 가 빠르게 처리 .• 서로 비동기적으로 동작하는 CPU( 매우 고속으로
동작 ) 와 주변장치 ( 비교적 저속으로 동작 ) 사이에서 효율적으로 일을 수행하는 중요한 수단 .
순천향대학교 정보기술공학부 이 상 정 3
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트 개념
순천향대학교 정보기술공학부 이 상 정 4
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트의 종류 인터럽트 발생 원인에 따른 분류
• 하드웨어 인터럽트• 내부 인터럽트• 외부 인터럽트
• 소프트웨어 인터럽트 인터럽트 발생시 마이크로프로세서의 반응 방식에
따른 분류• 차단 가능 인터럽트 (maskable interrupt)• 차단 불가능 인터럽트 (non-maskable interrupt)
인터럽트를 요구한 외부 하드웨어를 확인하는 방법에 따른 분류• 조사형 인터럽트 (polled interrupt)• 벡터형 인터럽트 (vectored interrupt)
순천향대학교 정보기술공학부 이 상 정 5
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트의 우선순위 제어 인터럽트 우선순위 (priority) 제어의 필요성
• 2 개 이상의 주변장치가 동시에 신호를 보내 인터럽트를 요청하는 경우
• 하 나 의 인 터 럽 트 가 서 비 스 되 고 있 는 동 안 에 또 다 른 인터럽트가 요청되는 경우
조사형 인터럽트의 경우• CPU 가 각 주변장치를 소프트웨어적으로 차례로 폴링하는
순서에 의하여 인터럽트의 우선순위가 결정• 필요할 때마다 소프트웨어를 수정하여 손쉽게 우선순위를
변경하는 것이 가능 인터럽트 제어기를 사용하는 벡터형 인터럽트의 경우
• 하드웨어 인터럽트 인터페이스가 우선순위 결정• 인터럽트 마스크 레지스터 또는 인터럽트 허용 레지스터를
가지고 있어서 인터럽트 허용 여부를 설정• 인터럽트 우선순위 제어 레지스터로 우선순위를 지정
순천향대학교 정보기술공학부 이 상 정 6
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트의 처리 과정
순천향대학교 정보기술공학부 이 상 정 7
마이크로프로세서
8051 인터럽트 인터페이스
80C32 에서의 인터럽트 종류
80C32 에서는 8 가지의 인터럽트 소스와 6가지의 인터럽트 벡터
이 모든 인터럽트들은 SFR 의 레지스터에 인터럽트 요청 사실을 표시하는 플랙 비트를 가지고 있다 . • 따라서 , 인터럽트가 허용되지 않은 상태에서도 이
비트들을 폴링 (polling) 하면 인터럽트 요청 사실을 확인할 수 있고 , 이 비트들을 소프트웨어적으로 세트시킴으로써 인위적으로 인터럽트를 발생시킬 수도 있다 .
순천향대학교 정보기술공학부 이 상 정 8
마이크로프로세서
8051 인터럽트 인터페이스
80C32 에서의 인터럽트 종류
순천향대학교 정보기술공학부 이 상 정 9
마이크로프로세서
8051 인터럽트 인터페이스
80C32 에서의 인터럽트 종류
순천향대학교 정보기술공학부 이 상 정 10
마이크로프로세서
8051 인터럽트 인터페이스
외부 인터럽트 INT0’ INT1’
TCON(Timer CONtrol) 레지스터로 제어
순천향대학교 정보기술공학부 이 상 정 11
마이크로프로세서
8051 인터럽트 인터페이스
TCON 레지스터
TCON 레지스터 • IT0 IT1 = 0 이면 레벨 트리거 (level trigger) 설정• IT0 IT1= 1 이면 하강 에지 (falling edge) 에 의한
에지 트리거 (edge trigger) 방식• 인터럽트 에지 플랙 IE0 및 IE1 은 인터럽트가
발생되면 세트되고 해당 인터럽트 서비스 루틴이 호출되어 처리가 시작되면 자동으로 클리어
• 레벨 트리거인 경우에는 IE0 IE1 에 영향을 주지 않음
• SFR 88H 번지에 매핑되어 비트 단위 제어 가능
순천향대학교 정보기술공학부 이 상 정 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
순천향대학교 정보기술공학부 이 상 정 13
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트의 샘플링 및 허용
80C32 에서 모든 인터럽트 플랙은 각 머신 사 이 클 의 S5P2(p.56) 에 서 한 차 례 씩 샘플링된다 .• 다만 , 예외적으로 타이머 2 의 TF2 플랙만은 각
머신 사이클의 S2P2 에서 샘플링
검출된 인터럽트의 허용 여부는 IE(Interrupt Enable) 레지스터로 설정• 각 인터럽트는 비트 0-5 를 사용하여 개별적으로
허용 여부를 설정• 비 트 7 인 EA(Enable All) 비 트 를 사 용 하 여
전체적으로 허용 여부를 설정한
순천향대학교 정보기술공학부 이 상 정 14
마이크로프로세서
8051 인터럽트 인터페이스
IE(Interrupt Enable) 레지스터
순천향대학교 정보기술공학부 이 상 정 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
순천향대학교 정보기술공학부 이 상 정 16
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트의 우선순위 제어
80C32 에서는 인터럽트 우선순위 제어 레지스터 IP(Interrupt Priority Register) 와 IPH(Interrupt Priority High Register)를 사용하여 4 단계의 인터럽트 우선순위 레벨을 설정
순천향대학교 정보기술공학부 이 상 정 17
마이크로프로세서
8051 인터럽트 인터페이스
인터럽트의 우선순위 제어
낮은 레벨로 설정된 인터럽트가 처리되고 있는 동안에 이보다 높은 레벨의 인터럽트가 발생할 수 있다 .
그 러 나 , 현 재 처 리 되 고 있 는 것 과 동 일 한 우선순위 레벨의 인터럽트나 이보다 낮은 레벨의 인터럽트는 발생될 수 없다 .
서로 다른 우선순위 레벨을 가지는 인터럽트들이 2 개 이상 동시에 요청되면 가장 높은 순위의 인터럽트가 먼저 허용되어 처리된다 .
순천향대학교 정보기술공학부 이 상 정 18
마이크로프로세서
8051 인터럽트 인터페이스
IP 레지스터
• SFR 주소 B8H 로 비트 단위 처리 가능
순천향대학교 정보기술공학부 이 상 정 19
마이크로프로세서
8051 인터럽트 인터페이스
IPH 레지스터
• SFR 주소 B7H 로 비트 단위로 처리 안됨
순천향대학교 정보기술공학부 이 상 정 20
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 21
마이크로프로세서
8051 인터럽트 인터페이스
IP, IPH 레지스터
예• INT0 레벨 3 우선순위 세트
SETB PX0MOV 0B7H, #1 // SETB PX0H
• INT1 레벨 2 우선순위 세트 CLR PX1MOV 0B7H, #4 // SETB PX1H
순천향대학교 정보기술공학부 이 상 정 22
마이크로프로세서
8051 인터럽트 인터페이스
1. INT0 인터럽트 프로그램 예
외부 인터럽트 소스 INT0 에 하강에지의 인터럽트를 가할 때 마다 병렬포트 P0 값이 반전되고 메모리 30H 번지의 내용이 증가하는 프로그램
시뮬레이터에서 내부 주변장치 제어 방법• Peripherals 메뉴• 서브메뉴
InterruptsI/O-Ports -> Port 0,1,2,3Serial Timer -> Timer 0, 1, 2
순천향대학교 정보기술공학부 이 상 정 23
마이크로프로세서
8051 인터럽트 인터페이스
1. INT0 인터럽트 프로그램 예
시뮬레이션에서 외부 인터럽트 인가 방법• INT0 외부 핀은 병렬포트 3 의 2 번째 비트 (P3.2)
에 연결• INT1 외부 핀은 병렬포트 3 의 3 번째 비트 (P3.3)
에 연결• 따라서 메뉴에서 병렬포트 3 을 선택하여 해당
비트의 값을 세팅하면 인터럽트 효과
순천향대학교 정보기술공학부 이 상 정 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
순천향대학교 정보기술공학부 이 상 정 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
순천향대학교 정보기술공학부 이 상 정 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
순천향대학교 정보기술공학부 이 상 정 27
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 28
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 29
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 30
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 31
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 32
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 33
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 34
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 35
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 36
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 37
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 38
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 39
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 40
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 41
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 42
마이크로프로세서
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; }}
순천향대학교 정보기술공학부 이 상 정 44
마이크로프로세서
8051 인터럽트 인터페이스
2. INT0 인터럽트 C 프로그램 예
외부 인터럽트 소스 INT0 에 하강에지의 인터럽트를 가할 때 마다 병렬포트 P0 값이 반전되고 메모리 30H 번지의 내용이 증가하는 C 프로그램
REG52.H 파일에 SFR 등이 정의
순천향대학교 정보기술공학부 이 상 정 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] */}
순천향대학교 정보기술공학부 이 상 정 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) ;}
순천향대학교 정보기술공학부 이 상 정 47
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 48
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 49
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 50
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 51
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 52
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 53
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 54
마이크로프로세서
8051 인터럽트 인터페이스
순천향대학교 정보기술공학부 이 상 정 55
마이크로프로세서
8051 인터럽트 인터페이스
프로그램 과제
프로그램 1,2 를 수행하여라 외부 인터럽트 소스 INT1 에 하강에지로
인터럽트를 가할 때 마다 병렬포트 P1 의 값과 메모리 50H 번지의 값이 증가하는 어셈블리와 C 프로그램을 각각 작성하라 ( 단 , 인터럽트의 우선순위는 2 로 둔다 ).