1 / 55

8051 인터럽트 인터페이스

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

sadah
Download Presentation

8051 인터럽트 인터페이스

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8051인터럽트 인터페이스 순천향 대학교 정보기술공학부 이상정

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

  3. 인터럽트 개념 순천향대학교 정보기술공학부 이 상 정 3

  4. 인터럽트의 종류 • 인터럽트 발생 원인에 따른 분류 • 하드웨어 인터럽트 • 내부 인터럽트 • 외부 인터럽트 • 소프트웨어 인터럽트 • 인터럽트 발생시 마이크로프로세서의 반응 방식에 따른 분류 • 차단 가능 인터럽트(maskable interrupt) • 차단 불가능 인터럽트(non-maskable interrupt) • 인터럽트를 요구한 외부 하드웨어를 확인하는 방법에 따른 분류 • 조사형 인터럽트(polled interrupt) • 벡터형 인터럽트(vectored interrupt) 순천향대학교 정보기술공학부 이 상 정 4

  5. 인터럽트의 우선순위 제어 • 인터럽트 우선순위(priority) 제어의 필요성 • 2개 이상의 주변장치가 동시에 신호를 보내 인터럽트를 요청하는 경우 • 하나의 인터럽트가 서비스되고 있는 동안에 또다른 인터럽트가 요청되는 경우 • 조사형 인터럽트의 경우 • CPU가 각 주변장치를 소프트웨어적으로 차례로 폴링하는 순서에 의하여 인터럽트의 우선순위가 결정 • 필요할 때마다 소프트웨어를 수정하여 손쉽게 우선순위를 변경하는 것이 가능 • 인터럽트 제어기를 사용하는 벡터형 인터럽트의 경우 • 하드웨어 인터럽트 인터페이스가 우선순위 결정 • 인터럽트 마스크 레지스터 또는 인터럽트 허용 레지스터를 가지고 있어서 인터럽트 허용 여부를 설정 • 인터럽트 우선순위 제어 레지스터로 우선순위를 지정 순천향대학교 정보기술공학부 이 상 정 5

  6. 인터럽트의 처리 과정 순천향대학교 정보기술공학부 이 상 정 6

  7. 80C32에서의 인터럽트 종류 • 80C32에서는 8가지의 인터럽트 소스와 6가지의 인터럽트 벡터 • 이 모든 인터럽트들은 SFR의 레지스터에 인터럽트 요청 사실을 표시하는 플랙 비트를 가지고 있다. • 따라서, 인터럽트가 허용되지 않은 상태에서도 이 비트들을 폴링(polling)하면 인터럽트 요청 사실을 확인할 수 있고, 이 비트들을 소프트웨어적으로 세트시킴으로써 인위적으로 인터럽트를 발생시킬 수도 있다. 순천향대학교 정보기술공학부 이 상 정 7

  8. 80C32에서의 인터럽트 종류 순천향대학교 정보기술공학부 이 상 정 8

  9. 80C32에서의 인터럽트 종류 순천향대학교 정보기술공학부 이 상 정 9

  10. 외부 인터럽트 INT0’ INT1’ • TCON(Timer CONtrol) 레지스터로 제어 순천향대학교 정보기술공학부 이 상 정 10

  11. TCON 레지스터 • TCON 레지스터 • IT0 IT1 = 0 이면 레벨 트리거(level trigger)설정 • IT0 IT1= 1 이면 하강 에지(falling edge)에 의한 에지 트리거(edge trigger) 방식 • 인터럽트 에지 플랙IE0및 IE1은 인터럽트가 발생되면 세트되고 해당 인터럽트 서비스 루틴이 호출되어 처리가 시작되면 자동으로 클리어 • 레벨 트리거인 경우에는 IE0 IE1에 영향을 주지 않음 • SFR 88H 번지에 매핑되어 비트 단위 제어 가능 순천향대학교 정보기술공학부 이 상 정 11

  12. TCON 레지스터 • 예 • CLR TCON.0 ; level trigger for INT0CLR 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 순천향대학교 정보기술공학부 이 상 정 12

  13. 인터럽트의 샘플링 및 허용 • 80C32에서 모든 인터럽트 플랙은 각 머신 사이클의 S5P2(p.56)에서 한차례씩 샘플링된다. • 다만, 예외적으로 타이머 2의 TF2 플랙만은 각 머신 사이클의 S2P2에서 샘플링 • 검출된 인터럽트의 허용 여부는 IE(Interrupt Enable) 레지스터로 설정 • 각 인터럽트는 비트 0-5를 사용하여 개별적으로 허용 여부를 설정 • 비트 7인 EA(Enable All)비트를 사용하여 전체적으로 허용 여부를 설정한 순천향대학교 정보기술공학부 이 상 정 13

  14. IE(Interrupt Enable) 레지스터 순천향대학교 정보기술공학부 이 상 정 14

  15. IE 레지스터 • SFR A8번지에 매핑되어 비트 단위 제어 가능 • 예 • 어떤 인터럽트도 허용하지 않음CLR EA ; CLR IE.7 • 외부 인터럽트 0(INT0) 및 직렬포트 인터럽트 허용SETB EA ; SETB IE.7SETB EX0 ; SETB IE.0SETB ES ; SETB IE.4MOV IE, #10010001B 순천향대학교 정보기술공학부 이 상 정 15

  16. 인터럽트의 우선순위 제어 • 80C32에서는 인터럽트 우선순위 제어 레지스터 IP(Interrupt Priority Register)와 IPH(Interrupt Priority High Register)를 사용하여 4단계의 인터럽트 우선순위 레벨을 설정 순천향대학교 정보기술공학부 이 상 정 16

  17. 인터럽트의 우선순위 제어 • 낮은 레벨로 설정된 인터럽트가 처리되고 있는 동안에 이보다 높은 레벨의 인터럽트가 발생할 수 있다. • 그러나, 현재 처리되고 있는 것과 동일한 우선순위 레벨의 인터럽트나 이보다 낮은 레벨의 인터럽트는 발생될 수 없다. • 서로 다른 우선순위 레벨을 가지는 인터럽트들이 2개 이상 동시에 요청되면 가장 높은 순위의 인터럽트가 먼저 허용되어 처리된다. 순천향대학교 정보기술공학부 이 상 정 17

  18. IP 레지스터 • SFR 주소 B8H로 비트 단위 처리 가능 순천향대학교 정보기술공학부 이 상 정 18

  19. IPH 레지스터 • SFR 주소 B7H로 비트 단위로 처리 안됨 순천향대학교 정보기술공학부 이 상 정 19

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

  21. IP, IPH 레지스터 • 예 • INT0 레벨 3 우선순위 세트 SETB PX0MOV 0B7H, #1 // SETB PX0H • INT1 레벨 2 우선순위 세트 CLR PX1MOV 0B7H, #4 // SETB PX1H 순천향대학교 정보기술공학부 이 상 정 21

  22. 1. INT0 인터럽트 프로그램 예 • 외부 인터럽트 소스 INT0에 하강에지의 인터럽트를 가할 때 마다 병렬포트 P0 값이 반전되고 메모리 30H 번지의 내용이 증가하는 프로그램 • 시뮬레이터에서 내부 주변장치 제어 방법 • Peripherals메뉴 • 서브메뉴InterruptsI/O-Ports -> Port 0,1,2,3Serial Timer -> Timer 0, 1, 2 순천향대학교 정보기술공학부 이 상 정 22

  23. 1. INT0 인터럽트 프로그램 예 • 시뮬레이션에서 외부 인터럽트 인가 방법 • INT0 외부 핀은 병렬포트 3의 2 번째 비트(P3.2)에 연결 • INT1 외부 핀은 병렬포트 3의 3 번째 비트(P3.3)에 연결 • 따라서 메뉴에서 병렬포트 3을 선택하여 해당 비트의 값을 세팅하면 인터럽트 효과 순천향대학교 정보기술공학부 이 상 정 23

  24. 1. INT0 인터럽트 프로그램 예 • 인터럽트 허용 및 우선순위, 에지트리거 • 인터럽트 허용IE 레지스터의 IE.7(EA)와 IE.0 세트 • 인터럽트 우선순위IP, IPH 레지스터의 비트 0을 1로 세트하여 최고의 우선순위 부여(IPH 레지스터는 비트 단위 세트 안됨) • TCON의 비트 0 세트하여 에지 트리리거 동작 세트 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 순천향대학교 정보기술공학부 이 상 정 24

  25. 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

  26. 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 AT 0003H ; INT0 interrupt vectoring from 0003H JMP INT0_ISR END 순천향대학교 정보기술공학부 이 상 정 26

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  43. 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

  44. 2. INT0 인터럽트 C 프로그램 예 • 외부 인터럽트 소스 INT0에 하강에지의 인터럽트를 가할 때 마다 병렬포트 P0 값이 반전되고 메모리 30H 번지의 내용이 증가하는 C 프로그램 • REG52.H파일에 SFR 등이 정의 순천향대학교 정보기술공학부 이 상 정 44

  45. 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

  46. 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

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

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

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

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

More Related