8051마이크로 프로세서 AT89S51 외부인터럽트 INT0, INT1

마이크로프로세서 8051의 AT89S51에는 2개의 외부인터럽트가 있습니다. 외부인터럽트 신호가 하강

모서리나 레벨(L)입력중에 어느것을 사용할것인지를 소프트웨어로 선택할수 있는 2개의 핀을 가지고

있습니다.  포트 3번 2번과, 3번 (P3.2  P3.3)

외부인터럽트 제어에 사용되는 레지스터는 TCON(Timer/Counter Control) 레지스터에서 하위 4개의

비트를 사용합니다.

이 TCON 레지스터는 각각의 비트 번호를 따로 제어할수 있게 비트 단위로 처리가 가능합니다.

 =>IT0(interrupt 0 type) :인터럽트 0의 외부 신호 결정함

    : INT0=1 _ INT0(P3.2) 핀의 하강 모서리에서 인터럽트를 요청

    :INT0=0 _ INT0(P3.2)핀의  "L"레벨에서 인터럽트를 요청

=>IE0(interrupt 0 Edge flag) 외부인터럽트 0이 검출되면 "1"

=>IT1(interrupt 1 type) :인터럽트 1의 외부 신호 결정함

    : INT1=1 _ INT1(P3.3) 핀의 하강 모서리에서 인터럽트를 요청

    :INT1=0 _ INT1(P3.3)핀의  "L"레벨에서 인터럽트를 요청

=>IE1(interrupt 1 Edge flag) 외부인터럽트 1이 검출되면 "1"

 

사용예)

#include<io89s51.h>

interrupt [0x13] void EX1_interrupt(void)

{

}

void main()

{

IT1=1;    //외부인터럽트1 에지모드

EX=1;    //외부인터럽트 1 인터럽트 인에이블

PX=1;    //외부인터럽트 1 을 높은레벨로 설정함

EA=1;    //모든인터럽트 가능하게 함

.

.

}

외부인터럽트 사용시 하강에지 모드보다  "L"레벨 모드를 사용시 주의하여야 할점은 인터럽트 처리 루틴이 끝난 후에도

계속 "L"레벨로 설정되어 있으므로 인터럽트 처리 루틴이 끝날즘에 "H"레벨로 변경하여주어야 합니다.

Posted by it is