마이크로프로세서

Download Report

Transcript 마이크로프로세서

8051인터럽트 인터페이스
순천향 대학교 정보기술공학부
이상정
마이크로프로세서
인터럽트 개념

CPU 내부 또는 외부의 요구에 의해서 정상적인
프로그램의 실행 순서를 변경하여 보다 시급한
작업(인터럽트서비스 루틴)을 먼저 수행한 후에
다시 원래의 프로그램으로 복귀하는 것
• 인터럽트는 주변장치의 서비스 요청에 CPU가 가장 빠
르게 대응할 수 있는 방법.
• 주변장치측으로 부터의 발생 시기를 예측하기 어려운
비동기적인 일(event, 사건)을 CPU가 빠르게 처리.
• 서로 비동기적으로 동작하는 CPU(매우 고속으로 동작)
와 주변장치(비교적 저속으로 동작) 사이에서 효율적
으로 일을 수행하는 중요한 수단.
순천향대학교 정보기술공학부
이상정
2
8051 인터럽트 인터페이스
마이크로프로세서
인터럽트 개념
순천향대학교 정보기술공학부
이상정
3
8051 인터럽트 인터페이스
마이크로프로세서
인터럽트의 종류
 인터럽트 발생 원인에 따른 분류
• 하드웨어 인터럽트
• 내부 인터럽트
• 외부 인터럽트
• 소프트웨어 인터럽트
 인터럽트 발생시 마이크로프로세서의 반응 방식에 따
른 분류
• 차단 가능 인터럽트(maskable interrupt)
• 차단 불가능 인터럽트(non-maskable interrupt)
 인터럽트를 요구한 외부 하드웨어를 확인하는 방법에
따른 분류
• 조사형 인터럽트(polled interrupt)
• 벡터형 인터럽트(vectored interrupt)
순천향대학교 정보기술공학부
이상정
4
8051 인터럽트 인터페이스
마이크로프로세서
인터럽트의 우선순위 제어
 인터럽트 우선순위(priority) 제어의 필요성
• 2개 이상의 주변장치가 동시에 신호를 보내 인터럽트를 요청
하는 경우
• 하나의 인터럽트가 서비스되고 있는 동안에 또다른 인터럽트
가 요청되는 경우
 조사형 인터럽트의 경우
• CPU가 각 주변장치를 소프트웨어적으로 차례로 폴링하는 순
서에 의하여 인터럽트의 우선순위가 결정
• 필요할 때마다 소프트웨어를 수정하여 손쉽게 우선순위를 변
경하는 것이 가능
 인터럽트 제어기를 사용하는 벡터형 인터럽트의 경우
• 하드웨어 인터럽트 인터페이스가 우선순위 결정
• 인터럽트 마스크 레지스터 또는 인터럽트 허용 레지스터를 가
지고 있어서 인터럽트 허용 여부를 설정
• 인터럽트 우선순위 제어 레지스터로 우선순위를 지정
순천향대학교 정보기술공학부
이상정
5
8051 인터럽트 인터페이스
마이크로프로세서
인터럽트의 처리 과정
순천향대학교 정보기술공학부
이상정
6
8051 인터럽트 인터페이스
마이크로프로세서
80C32에서의 인터럽트 종류
 80C32에서는 8가지의 인터럽트 소스와 6가지
의 인터럽트 벡터
 이 모든 인터럽트들은 SFR의 레지스터에 인터
럽트 요청 사실을 표시하는 플랙 비트를 가지
고 있다.
• 따라서, 인터럽트가 허용되지 않은 상태에서도 이
비트들을 폴링(polling)하면 인터럽트 요청 사실을
확인할 수 있고, 이 비트들을 소프트웨어적으로 세
트시킴으로써 인위적으로 인터럽트를 발생시킬 수
도 있다.
순천향대학교 정보기술공학부
이상정
7
8051 인터럽트 인터페이스
마이크로프로세서
80C32에서의 인터럽트 종류
순천향대학교 정보기술공학부
이상정
8
8051 인터럽트 인터페이스
마이크로프로세서
80C32에서의 인터럽트 종류
순천향대학교 정보기술공학부
이상정
9
8051 인터럽트 인터페이스
마이크로프로세서
외부 인터럽트 INT0’ INT1’
 TCON(Timer CONtrol) 레지스터로 제어
순천향대학교 정보기술공학부
이상정
10
8051 인터럽트 인터페이스
마이크로프로세서
TCON 레지스터
 TCON 레지스터
• IT0 IT1 = 0 이면 레벨 트리거(level trigger) 설정
• IT0 IT1= 1 이면 하강 에지(falling edge)에 의한 에
지 트리거(edge trigger) 방식
• 인터럽트 에지 플랙 IE0 및 IE1은 인터럽트가 발생
되면 세트되고 해당 인터럽트 서비스 루틴이 호출
되어 처리가 시작되면 자동으로 클리어
• 레벨 트리거인 경우에는 IE0 IE1에 영향을 주지 않
음
• SFR 88H 번지에 매핑되어 비트 단위 제어 가능
순천향대학교 정보기술공학부
이상정
11
8051 인터럽트 인터페이스
마이크로프로세서
TCON 레지스터
예
• CLR
CLR
• SETB
SETB
• CLR
CLR
• SETB
SETB
순천향대학교 정보기술공학부
TCON.0
IT0
TCON.0
IT0
TCON.2
IT1
TCON.2
IT1
이상정
; level trigger for INT0
; edge trigger for INT0
; level trigger for INT1
; edge trigger for INT1
12
8051 인터럽트 인터페이스
마이크로프로세서
인터럽트의 샘플링 및 허용
 80C32에서 모든 인터럽트 플랙은 각 머신 사
이클의 S5P2(p.56)에서 한차례씩 샘플링된다.
• 다만, 예외적으로 타이머 2의 TF2 플랙만은 각 머
신 사이클의 S2P2에서 샘플링
 검출된 인터럽트의 허용 여부는 IE(Interrupt
Enable) 레지스터로 설정
• 각 인터럽트는 비트 0-5를 사용하여 개별적으로 허
용 여부를 설정
• 비트 7인 EA(Enable All) 비트를 사용하여 전체적으
로 허용 여부를 설정한
순천향대학교 정보기술공학부
이상정
13
8051 인터럽트 인터페이스
마이크로프로세서
IE(Interrupt Enable) 레지스터
순천향대학교 정보기술공학부
이상정
14
8051 인터럽트 인터페이스
마이크로프로세서
IE 레지스터
 SFR A8 번지에 매핑되어 비트 단위 제어 가능
예
• 어떤 인터럽트도 허용하지 않음
CLR EA
; CLR IE.7
• 외부 인터럽트 0(INT0) 및 직렬포트 인터럽트 허용
SETB EA
; SETB IE.7
SETB EX0
; SETB IE.0
SETB ES
; SETB IE.4
MOV IE, #10010001B
순천향대학교 정보기술공학부
이상정
15
8051 인터럽트 인터페이스
마이크로프로세서
인터럽트의 우선순위 제어
 80C32에서는 인터럽트 우선순위 제어 레지스터
IP(Interrupt Priority Register) 와 IPH(Interrupt
Priority High Register)를 사용하여 4단계의 인터
럽트 우선순위 레벨을 설정
순천향대학교 정보기술공학부
이상정
16
8051 인터럽트 인터페이스
마이크로프로세서
인터럽트의 우선순위 제어
 낮은 레벨로 설정된 인터럽트가 처리되고 있는
동안에 이보다 높은 레벨의 인터럽트가 발생할
수 있다.
 그러나, 현재 처리되고 있는 것과 동일한 우선
순위 레벨의 인터럽트나 이보다 낮은 레벨의
인터럽트는 발생될 수 없다.
 서로 다른 우선순위 레벨을 가지는 인터럽트들
이 2개 이상 동시에 요청되면 가장 높은 순위
의 인터럽트가 먼저 허용되어 처리된다.
순천향대학교 정보기술공학부
이상정
17
8051 인터럽트 인터페이스
마이크로프로세서
IP 레지스터
• SFR 주소 B8H 로 비트 단위 처리 가능
순천향대학교 정보기술공학부
이상정
18
8051 인터럽트 인터페이스
마이크로프로세서
IPH 레지스터
• SFR 주소 B7H 로 비트 단위로 처리 안됨
순천향대학교 정보기술공학부
이상정
19
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
20
8051 인터럽트 인터페이스
마이크로프로세서
IP, IPH 레지스터
예
• INT0 레벨 3 우선순위 세트
SETB PX0
MOV 0B7H, #1 // SETB PX0H
• INT1 레벨 2 우선순위 세트
CLR PX1
MOV 0B7H, #4 // SETB PX1H
순천향대학교 정보기술공학부
이상정
21
8051 인터럽트 인터페이스
마이크로프로세서
1. INT0 인터럽트 프로그램 예
 외부 인터럽트 소스 INT0에 하강에지의 인터럽
트를 가할 때 마다 병렬포트 P0 값이 반전되고
메모리 30H 번지의 내용이 증가하는 프로그램
 시뮬레이터에서 내부 주변장치 제어 방법
• Peripherals 메뉴
• 서브메뉴
Interrupts
I/O-Ports -> Port 0,1,2,3
Serial
Timer -> Timer 0, 1, 2
순천향대학교 정보기술공학부
이상정
22
8051 인터럽트 인터페이스
마이크로프로세서
1. INT0 인터럽트 프로그램 예
 시뮬레이션에서 외부 인터럽트 인가 방법
• INT0 외부 핀은 병렬포트 3의 2 번째 비트(P3.2)에
연결
• INT1 외부 핀은 병렬포트 3의 3 번째 비트(P3.3)에
연결
• 따라서 메뉴에서 병렬포트 3을 선택하여 해당 비트
의 값을 세팅하면 인터럽트 효과
순천향대학교 정보기술공학부
이상정
23
8051 인터럽트 인터페이스
마이크로프로세서
1. INT0 인터럽트 프로그램 예
 인터럽트 허용 및 우선순위, 에지트리거
• 인터럽트 허용
IE 레지스터의 IE.7(EA)와 IE.0 세트
• 인터럽트 우선순위
IP, IPH 레지스터의 비트 0을 1로 세트하여 최고의 우선
순위 부여(IPH 레지스터는 비트 단위 세트 안됨)
• TCON의 비트 0 세트하여 에지 트리리거 동작 세트
SETB
MOV
SETB
SETB
SETB
순천향대학교 정보기술공학부
IP.0
0B7H, #1
EA
IE.0
TCON.0
이상정
;
;
;
;
;
set highest interrupt priority
IPH bit 0 set, cannot set a bit
enable global bit IE.7
enable interupt for INT0
edge trigger for INT0
24
8051 인터럽트 인터페이스
마이크로프로세서
1. INT0 인터럽트 프로그램 예
CSEG AT
8000H
; Initialize interrupt control for INT0
SETB
IP.0
; set highest interrupt priority
MOV
0B7H, #1
; IPH bit 0 set, cannot set a bit
SETB
EA
; enable global bit IE.7
SETB
IE.0
; enable interupt for INT0
SETB
TCON.0
; edge trigger for INT0
; initial output of LED data
MOV
P0, #0
CLR 30H
순천향대학교 정보기술공학부
이상정
25
8051 인터럽트 인터페이스
마이크로프로세서
1. INT0 인터럽트 프로그램 예
; main routin
LOOP: JMP
LOOP
; infinite loop
; interrupt service routine,
; toggle P0, Increment 30H
INT0_ISR:
XRL
P0,#0FFH
INC
30H
RETI
CSEG
JMP
END
순천향대학교 정보기술공학부
AT
0003H
; INT0 interrupt vectoring from 0003H
INT0_ISR
이상정
26
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
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 인터럽트 인터페이스
마이크로프로세서
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;
}
}
순천향대학교 정보기술공학부
이상정
43
8051 인터럽트 인터페이스
마이크로프로세서
2. INT0 인터럽트 C 프로그램 예
 외부 인터럽트 소스 INT0에 하강에지의 인터럽
트를 가할 때 마다 병렬포트 P0 값이 반전되고
메모리 30H 번지의 내용이 증가하는 C 프로그
램
 REG52.H 파일에 SFR 등이 정의
순천향대학교 정보기술공학부
이상정
44
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] */
}
순천향대학교 정보기술공학부
이상정
45
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)
;
}
순천향대학교 정보기술공학부
이상정
46
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
47
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
48
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
49
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
50
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
51
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
52
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
53
8051 인터럽트 인터페이스
마이크로프로세서
순천향대학교 정보기술공학부
이상정
54
8051 인터럽트 인터페이스
마이크로프로세서
프로그램 과제
 프로그램 1,2를 수행하여라
 외부 인터럽트 소스 INT1에 하강에지로 인터
럽트를 가할 때 마다 병렬포트 P1의 값과 메모
리 50H 번지의 값이 증가하는 어셈블리와 C
프로그램을 각각 작성하라 (단, 인터럽트의 우
선순위는 2로 둔다).
순천향대학교 정보기술공학부
이상정
55
8051 인터럽트 인터페이스