🌱 Bài 9: Ngắt (Interrupt) trong Vi điều khiển 8051

🌱 Bài 9: Tìm hiểu về Ngắt (Interrupt) trong Vi điều khiển 8051

    Ngắt (Interrupt) là một kỹ thuật quan trọng trong lập trình nhúng, cho phép tạm dừng chương trình chính để xử lý các sự kiện khẩn cấp hoặc tín hiệu từ ngoại vi. Trong bài viết này, chúng ta sẽ cùng khám phá các loại ngắt của vi điều khiển 8051, cách hoạt động và các thanh ghi liên quan.

Mục lục

1️⃣ Giới thiệu về Ngắt trong 8051

8051 hỗ trợ 5 nguồn ngắt chính, mỗi nguồn gán một địa chỉ vector ngắt và mức độ ưu tiên mặc định:

  • INT0 (External Interrupt 0) – Vector: 0x0003H
  • TF0 (Timer 0 Interrupt) – Vector: 0x000BH
  • INT1 (External Interrupt 1) – Vector: 0x0013H
  • TF1 (Timer 1 Interrupt) – Vector: 0x001BH
  • RI/TI (Serial Interrupt) – Vector: 0x0023H

Địa chỉ vector Reset (0x0000H) có mức ưu tiên cao nhất. Bạn có thể thay đổi mức ưu tiên thông qua thanh ghi IP (Interrupt Priority Register).

2️⃣ Các loại Ngắt

👉 Internal Interrupts (Ngắt nội)

  • Timer Interrupt (TF0/TF1): Kích hoạt khi Timer/Counter tràn giá trị. Chi tiết sẽ được làm rõ trong các bài học về Timer.

👉 External Interrupts (Ngắt ngoài)

  • INT0 và INT1: Kích hoạt thông qua các chân P3.2 (INT0)P3.3 (INT1). Sử dụng khi có sự thay đổi mức logic (hoặc cạnh xung).

👉 Serial Interrupt (RI/TI):

  • TI (Transmit Interrupt): Kích hoạt khi hoàn thành truyền dữ liệu qua UART.
  • RI (Receive Interrupt): Kích hoạt khi nhận dữ liệu qua UART.

3️⃣ Quy trình xử lý Ngắt

  1. Stacking: Lưu trạng thái hiện tại của vi điều khiển (các thanh ghi, PC, ...) vào ngăn xếp.
  2. ISR (Interrupt Service Routine): Thực thi chương trình xử lý ngắt tại địa chỉ vector ngắt.
  3. Unstacking: Khôi phục trạng thái từ ngăn xếp, tiếp tục thực thi chương trình chính.

    Ngăn xếp hoạt động theo kiểu LIFO (Last In First Out).

4️⃣ Các Thanh ghi điều khiển Ngắt

👉 IE (Interrupt Enable Register)

    Thanh ghi này bật/tắt các nguồn ngắt:

Bit Tên Chức năng
7 EA Bật tất cả ngắt (1 = Enable, 0 = Disable).
6, 5 - Không sử dụng.
4 ES Bật ngắt nối tiếp.
3 ET1 Bật ngắt Timer1.
2 EX1 Bật ngắt ngoài 1.
1 ET0 Bật ngắt Timer0.
0 EX0 Bật ngắt ngoài 0.

👉 IP (Interrupt Priority Register)

    Thanh ghi này đặt mức ưu tiên cho từng ngắt:

Bit Tên Chức năng
7, 6, 5 - Không sử dụng.
4 PS Ưu tiên ngắt nối tiếp.
3 PT1 Ưu tiên ngắt Timer1.
2 PX1 Ưu tiên ngắt ngoài 1.
1 PT0 Ưu tiên ngắt Timer0.
0 PX0 Ưu tiên ngắt ngoài 0.

👉 TCON (Timer/Counter Control Register)

    Điều khiển trạng thái của Timer và ngắt ngoài. Chi tiết sẽ trình bày trong bài sau.

5️⃣ Kết luận

    Ngắt là một tính năng mạnh mẽ giúp xử lý sự kiện hiệu quả trong hệ thống nhúng. Việc hiểu rõ các loại ngắt và thanh ghi liên quan sẽ giúp bạn làm chủ vi điều khiển 8051 một cách chuyên nghiệp.

>>>>>> Follow ngay <<<<<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

Đăng nhận xét

Mới hơn Cũ hơn