8051 인터럽트 예제

여기서 MSB 네 비트는 타이머에 사용됩니다. 그러나 LSB 네 비트는 외부 인터럽트에 사용됩니다. 우리는 그 비트를 볼 수 있습니다. 이 자습서에서는 8051 인터럽트를 살펴보겠습니다. 인터럽트는 프로세스가 단순히 주요 작업을 계속하고 다른 단위 (타이머 또는 외부 이벤트)가 필요할 때 주의를 기울이기를 원하는 많은 경우에 유용합니다. 즉, 마이크로 컨트롤러는 타이머, 직렬 통신 또는 외부 핀 P3.2 및 P3.3을 모니터링할 필요가 없습니다. 이러한 장치와 관련된 이벤트가 발생할 때마다 인터럽트를 사용하여 마이크로 컨트롤러에 알수 있습니다. IP 레지스터를 사용하면 그림과 같이 인터럽트 우선 순위(IP) 레지스터에서 개별 비트를 지우거나 설정하여 인터럽트의 우선 순위 수준을 변경할 수 있습니다. 우선 순위가 낮은 인터럽트를 사용하면 우선 순위가 높은 인터럽트를 중단할 수 있지만 우선 순위가 낮은 다른 인터럽트를 사용하여 중단을 금지합니다. 인터럽트의 우선 순위가 프로그래밍되지 않은 경우 마이크로 컨트롤러는 미리 정의된 방식으로 명령을 실행하고 순서는 INT0, TF0, INT1, TF1 및 SI입니다. 이 예제에서는 직렬 인터럽트를 사용하여 데이터를 수신하고 전송합니다. 주요 프로그램은 P0에 연결된 LED에 수신 된 char의이 8 비트 ascii 값을 표시합니다. 재설정 시 8051은 INT0 및 INT1 낮은 l 레벨 트리거 인터럽트를 만듭니다.

엣지 -트리거 인터럽트를 만들려면 TCON 레지스터의 비트를 프로그래밍해야 합니다. TCON 레지스터는 다른 비트와 IT0 및 IT1 플래그 비트 를 사용하여 하드웨어 인터럽트의 레벨 또는 에지 트리거 모드를 결정합니다. 프로그래밍에 들어가기 전에 인터럽트에 사용되는 레지스터를 거쳐야합니다. 직렬 인터럽트를 사용 하 여 9600 baud 속도 직렬 포트를 통해 `E`를 보내는 프로그램을 보자: 마이크로 컨트롤러 8051 두 개의 외부 하드웨어 인터럽트구성: INT0 및 INT1 위에서 설명한 대로. 이러한 인터럽트는 핀 3.2 및 핀 3.3에서 사용할 수 있습니다. 레벨 트리거 또는 에지 트리거될 수 있습니다. 레벨 트리거링에서 핀 3.2의 낮은 신호는 인터럽트를 가능하게 하며, 핀 3.2 높음에서 낮은 전이에서는 에지 트리거 인터럽트를 가능하게 합니다. 인터럽트를 사용하려면 먼저 EA 비트를 1로 설정해야 합니다.

그 후 원하는 인터럽트에 해당하는 비트가 활성화됩니다. ET0, ET1 및 ET2 비트는 각각 타이머 인터럽트 0, 1 및 2를 활성화하는 데 사용됩니다. AT89C51에는 타이머가 두 개뿐이므로 ET2는 사용되지 않습니다. EX0 및 EX1은 외부 인터럽트 0과 1을 활성화하는 데 사용됩니다. ES는 직렬 인터럽트에 사용됩니다. `RESET`후 모든 인터럽트를 비활성화하고, 따라서, 모든 인터럽트는 소프트웨어에 의해 활성화됩니다. 모든 다섯 인터럽트에서, 사람이나 모든 인터럽트가 활성화되는 경우,이 8051 마이크로 컨트롤러의 인터럽트 구조에 해당하는 그림에서 나타내는 대로 해당 인터럽트 플래그를 설정합니다 :- 그래서 이 모든 레지스터는 인터럽트. 이 레지스터는 인터럽트와 함께 재생하기에 충분하지 않습니다.

ISR 또는 인터럽트 처리기를 작성해야 합니다. 우리가 8051 마이크로 컨트롤러의 프로그래밍 가능한 기능을 보자 : IP 레지스터에 특정 비트를 설정하면 더 높은 우선 순위의 해당 인터럽트합니다. 예를 들어, IP = 0x08; 타이머1 우선 순위를 높게 만듭니다. 따라서 인터럽트 우선 순위 순서가 변경됩니다. IP 레지스터에서 두 개 이상의 비트를 설정할 수도 있습니다. 이러한 경우 우선 순위가 높은 인터럽트는 기본 대/소문자에서 따를 때 시퀀스를 따릅니다. 예를 들어, IP = 0x0A; 타이머0과 Timer1 우선 순위를 더 높게 만듭니다.