140 likes | 618 Views
8051 마이크로컨트롤러 제 6 장 . 인터럽트 (Interrupt). 인터럽트 (Interrupt). 인터럽트 란 ? - 인터럽트 란 , 주프로그램 수행 중에 주프로그램을 일시적으로 중지시키는 조건이나 사건 (event, 비동기적 ) 의 발생을 말함 - 인터럽트 처리 프로그램 ISR(Interrupt Service Routine) or Interrupt handler
E N D
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 인터럽트(Interrupt) • 인터럽트 란? - 인터럽트 란, 주프로그램 수행 중에 주프로그램을 일시적으로 중지시키는 조건이나 사건(event, 비동기적)의 발생을 말함 - 인터럽트 처리 프로그램 ISR(Interrupt Service Routine) or Interrupt handler - 주프로그램으로 복귀는 “RETI(RETurn from Interrupt)” ISR Time MAIN Program ISR ISR MAIN MAIN MAIN -1-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) IE(Interrupt Enable) - EA : 전역적 인터럽트 가능(“1”)/불가능(“0”) - ET2 : 타이머/카운터 2 인터럽트 가능 (“1”)/불가능(“0”) - (8052) - ES : 시리얼 포트 인터럽트 가능 (“1”)/불가능(“0”) - ET1 : 타이머/카운터 1 인터럽트 가능 (“1”)/불가능(“0”) - EX1 : 외부 1 인터럽트 가능 (“1”)/불가능(“0”) - ET0 : 타이머/카운터 0 인터럽트 가능 (“1”)/불가능(“0”) - EX0 : 외부 0 인터럽트 가능 (“1”)/불가능(“0”) * 비트별 SETB ET1* 전체 MOV IE, #1001000B enable SETB EA enable -2-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) IP(Interrupt Priority) - PT2 : 타이머/카운터 2 인터럽트 우선순위 (“1”) - (8052) - PS : 시리얼 포트 인터럽트 우선순위(“1”) - PT1 : 타이머/카운터 1 인터럽트 우선순위(“1”) - PX1 : 외부 1 인터럽트 우선순위(“1”) - PT0 : 타이머/카운터 0 인터럽트 우선순위(“1”) - PX0 : 외부 0 인터럽트 우선순위(“1”) * 폴링(Polling) 순서 : 외부 0 – T/C 0 - 외부 1 – T/C 1 – Serial – T/C2 IP.4를 “1”로 하면 Serial Port가 가장 우선순위가 높고, 이후 폴링 순서 -3-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) TCON - IE1 : 인터럽트 에지 1 플래그 (외부 인터럽트가 들어오면 하드웨어적으로 “1”, 인터럽트 인지 후 자동 clear) - IT1 : 인터럽트 타입 1 플래그 (외부 인터럽트를 하강에지 or 하위레벨을 소프트웨어적으로 지정) - IE0 : 인터럽트 에지 0 플래그 - IT0 : 인터럽트 타입 0 플래그 -4-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 인터럽트 구조 -5-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 인터럽트 처리 • 인터럽트 처리 순서 - 인터럽트가 발생하면 주프로그램 중단 현재 명령어의 수행을 마친다 스택에 PC를 저장한다 인터럽트가 더 이상 받아들여지지 않는다 ISR의 벡터 주소가 PC에 적재된다 ISR이 수행된다 RETI 복귀 • 인터럽트 벡터 - 인터럽트가 받아들여졌을 때 PC에 적재되는 값, ISR의 시작 주소 외부 0 인터럽트 0003H 시리얼 포트 인터럽트 0023H 타이머/카운터 0 인터럽트 000BH 타이머/카운터 2 인터럽트 002BH 외부 1 인터럽트 0013H 시스템 리셋 0000H 타이머/카운터 1 인터럽트 001BH -6-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 인터럽트 벡터 • 작은/큰 ISR의 처리 - 각각의 인터럽트 벡터 사이에는 8바이트의 코드 공간이 있음. 따라서 ISR이 8바이트 이내이면 이 공간을 사용 예제 6-1 - 하지만 ISR이 8바이트 이상이면 별도 공간을 사용 예제 6-2 * 외부 0, 1, T/C 0, 1은 인터럽트가 발생하면 IE0, IE1, TF0, TF1은 하드웨어에 의해 자동적으로 clear 된다. 하지만 시리얼 포트, T/C2는 안됨 -7-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 실험(예제 6-1) • T/C 0과 인터럽트를 사용하여 P1.0에서 10KHz 구형파 생성 ORG 8000H JMP MAIN ORG 800BH ; T/C 0의 인터럽트 벡터 T0ISR: CPL P1.0 ;ISR RETI ORG 8030H ; 주프로그램 MAIN: MOV TMOD, #02H MOV TH0, #-50 SETB TR0 MOV IE, #82H JMP $ END -8-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 실험(예제 6-2) • 핀 P1.4과 핀 P1.0에 7KHz와 500Hz 구형파를 동시에 발생할 수 있도록 인터럽트를 사용하여 프로그램을 작성 - 12MHz 사용 - 7KHz 반주기(T/2)는 –71us T/C 0(모드2), TH0 : -71 - 500Hz 반주기(T/2)는 –1000us T/C 1(모드1), TH1/TL1 : -1000 -9-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 실험(예제 6-2) ORG 8000H JMP MAIN ; ORG 800BH T0ISR: CPL P1.4 JMP T0ISR RETI ORG 801BH ; JMP T1ISR T1ISR: CLR TR1 ORG 8030H MOV TH1, #HIGH(-1000) MAIN: MOV TMOD, #12H MOV TL1, #LOW(-1000) MOV TH0, #-71 SETB TR1 SETB TR0 CPL P1.0 SETB TF1 RETI MOV IE, #8AH ; JMP $ END -10-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 실험(예제 6-5) • INT0에 고-저 트랜지션 신호가 올 때마다 핀 P1.0에서 10초 동안 400Hz 펄스를 낼 수 있도록 인터럽트를 사용한 시스템을 설계 - 12MHz 사용 - 10초 10초 = 200 50,000us 200은 R7에, 50,000us는 T/C 0 (모드1), TH0/TL0 : -50000 - 400Hz 반주기(T/2)는 –1250us T/C 1(모드1), TH1/TL1 : -1250 -11-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 실험(예제 6-5) ORG 8000H EX0ISR:MOV R7, #200 JMP MAIN SETB TF0 MOV TLO, #LOW(-50000) JMP EX0ISR SETB TF1 SETB TR0 ORG 800BH SETB ET0 EXIT: RETI JMP T0ISR SETB ET1 ; ORG 801BH RETI T1ISR: CLR TR1 JMP T1ISR ; MOV TH1, #HIGH(-1250) ORG 8030H T0ISR: CLR TR0 MOV TL1, #LOW(-1250) MAIN: SETB IT0 DJNZ R7, SKIP CPL P1.0 MOV TMOD, #11H CLR ET0 SETB TR1 MOV IE, #81H CLR ET1 RETI JMP $ JMP EXIT ; SKIP: MOV TH0, #HIGH(-50000) END -12-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제6장. 인터럽트(Interrupt) 과제물(Report) • 기한 : 기말고사 전에 강의도우미가 수거하여 제출 1. 예제 6-5 : 문제, 프로그램, 설명 기재 * 자필로 작성해야 함(가급적 A4지 1장에 기재) -13-청강문화산업대학 이동통신과