'8051 interrupt 레지스터'에 해당되는 글 1건

  1. 2014.04.07 8051기초, 인터럽트의 종류
8051기초 인터럽트의 종류를 알아보기

AT89S51 에서는 인터럽트의 종류에는 외부인터럽트, 타이머인터럽트, 시리얼인터럽트가 있습니다.

인터럽트(Interrupt)란, 영어사전에서 말,행동등을 방해하다. 중간에 중단시키다의 뜻이 있는데요

8051 마이크로 프로세서에서도 인터럽트는 실행중인 프로그램을 잠시 중단시키고 정해진 다른

프로그램을 중간에 끼워넣어 실행시키는 것입니다.

즉, 인터럽트가 발생되면 주어진 인터럽트에 해당하는 프로그램을, 실행중인 프로그램을 일시 정지후

인터럽트 프로그램을 실행한뒤 다시 실행중이던 프로그램을 실행하게 됩니니다. 끼어들기죠,

 

인터럽트의 종류 및 처리 시작번지와 우선순위

 인터럽트의 원인

인터럽트 처리 시작번지

우선순위 

 외부인터럽트 0

0x03

1(가장우선)

 타이머/카운터 인터럽트 0

 0x0b

 2

 외부인터럽트 1

 0x13

 3

 타이머/카운터 인터럽트 1

 0x1b

 4

 시리얼 포트 인터럽트

 0x23

 5

intrrupt 에 사용되는 89S51의 레지스터는

TCON(Time Control) : 타이머를 제어하는데 사용되는 레지스터

SCON(Serial Control) : 통신에 사용되는 제리스터

 

===========TCON(Timer/Counter Control)레지스터=== 어드레스 0x88===비트처리가능=========

IE0(interrupt 0 edge flag) : 외부인터럽트 0이 검출되면 "1"

TF0(timer 0 overflow flag) : 타이머/카운터 0 이 검출되면 "1"

IE1interrupt 1 dge flag) : 외부인터럽트 1 검출되면 "1"

TF1(timer 1 verflow flag) : 타이머/카운터 1이 검출되면 "1"

 

===========SCON(Serial Sontrol) 레지스터=== 어드레스 0x98===비트처리가능================

TI(transmit interrupt flag) : 송신을 마치면 "1"

RI(receive interrupt flag) : 수신을 마치면 "1"

위의 TCON 과 SCON레지스터는 비트 단위로 처리가 가능합니다.

 

인터럽트의 레지스터중

IE(Interrupt Enable) 레지스터(어드레스 0xA8)는 비트 처리가능하며

EX0, ET0, EX1, ET1, ES의 5개의 인터럽트 요청에 의해 인터럽트를 받을것인지 안받을 것인지 결정

하게 됩니다. 나머지 EA(Enable All)은 개개의 인터럽트를 제어하진 않지만 전체의 인터럽터를 받을

것인지 안받을 것인지를 결정합니다. EA=이면 다른 EX0, ET0, EX1, ET1, ES의 인터럽트 요청이

있어도 받아들이지 못하게 됩니다.

EA(enable All interrupt) :EA=1 모든인터럽트 요청 가능

ES(enable Serial interrupt) :ES=1 RI or TI 인터럽트 요청 가능

ET1(enable Timer/counter 1 interrupt) :ET1=1 타이머/카운터 1 인터럽트 요청 가능

EX1(enable External 1 interrupt) :EX1=1 외부 1 인터럽트 요청 가능

ET0(enable Timer/counter 0 interrupt) :ET0=1 타이머/카운터 0 인터럽트 요청 가능

EX0(enable External 0 interrupt) :EX0=1 외부 0 인터럽트 요청 가능

 

IP(Interrupt Priority control) 레지스터(어드레스0xB8)는 5개의 외부, 타이머/카운터, 통신

인터럽트중의 우선순위를 정해주는 레지스터로 높은레벨, 낮은레벨로 우선순위를 결정합니다.

각 비트를 "1" 또는 "0"으로 하면 그에 맞는 인터럽트 요구에 의해 높은레벨이나 낮은레벨로 인터럽트

우선 순위를 결정합니다.

만약  낮은 인터럽트의 요구에 의해 인터럽트 프로그램을 실행하는 중에도 높은 레벨의 인터럽트

요청이 들어오면 낮은 인터럽트를 중단하고 높은 레벨의 인터럽트 프로그램을 실행하게 됩니다.

물론 실행하고 있는 레벨보다 낮은 레벨이거나 같은 레벨이면 인터럽트 요청은 무시됩니다.

PS(Priority of Serial port interrupt) PS=1이면 시리얼 포트 인터럽트를 높은 레벨로 설정

PT1(Priority of Timer/Count 1 interrupt) PT1=1이면 타이머/카운터 1 인터럽트를 높은 레벨로 설정

PX1(Priority of eXternal 1 interrupt) PX1=1이면 외부인터럽트 1 인터럽트를 높은 레벨로 설정

PT0(Priority of Timer/Count 0 interrupt) PT0=1이면 타이머/카운터 0 인터럽트를 높은 레벨로 설정

PX0(Priority of eXternal 0 interrupt) PX0=1이면 외부인터럽트 0 인터럽트를 높은 레벨로 설정

Posted by it is