8051 hỗ trợ 5 loại ngắt, có thể cho phép hoặc cấm ngắt với từng loại thông qua thanh ghi điều khiển ngắt IE, hoặc có thể cấm tất cả các ngắt thông qua bit EA.
Các tín hiệu điều khiển ngắt có thể được mô tả như hình dưới
Hình 3-30
Ở hình trên chỉ có 1 điểm chú ý đó là hai tín hiệu IT0 và IT1, hai bit này lựa chọn nguyên nhân ngắt cho 2 ngắt ngoài INTR0 và INTR1. Nếu =1 thì ngắt tại sườn âm, =0 ngắt tại sườn dương
- Thanh ghi điều khiển ngắt IE.
Trong đó:
- Thứ tự ưu tiên ngắt.
Khi có hai hay nhiều ngắt cùng lúc xảy ra, hoặc một ngắt đang thực hiện thì mô ngắt khác yêu
cầu thì ngắt nào có độ ưu tiên hơn sẽ được ưu tiên xử lý.
Có 3 cấp độ ưu tiên ngắt trong 8051:
-Ngắt reset là ngắt có mức ưu tiên cao nhất, khi reset xảy ra tất cả các ngắt khác và chương trình đều bị dừng và vi điều khiển trở về chế độ khởi dộng ban đầu.
-Ngắt mức 1, chỉ có reset mới có thể cấm ngắt này.
-Ngắt mức 0, các ngắt mức 1 và reset có thể cấm ngắt này.
Việc đăt chọn mức ưu tiên ngắt là 1 hoặc 0 thông qua thanh ghi IP. Việc xử lý ưu tiên ngắt của
8051 như sau:
-Nếu 1 có độ ưu tiên cao hơn một ngắt đang được xử lý xuất hiện thì, ngắt có ưu tiên thấp ngay lập tức bị dừng để ngắt kia được thực hiện
-Nếu 2 ngắt cùng yêu cầu vào 1 hời điểm thì ngắt có mức ưu tiên hơn sẽ được xử lý trước -Nếu 2 ngắt có cùng mức ưu tiên cùng yêu cầu vào 1 thời điểm thì thứ tự được chọn như sau: + INTR 0 + Timer 0 + INTR 1 + Timer 1 + UART
Trong đó: Các bit từ 0 đến 5 đặt mức ngắt là 0 hoặc 1 cho các ngắt tương ứng như sau: - PS: UART - PT1: Timer 1 - PX1: INTR 1 - PT0: Timer 0 - PX0: INTR 0 - Lập trình ngắt.
Khi có một ngắt, chương trình chính sẽ bị dừng, con trỏ chương trình ngay lập tức được
chuyển đến một địa chỉ quy định sẵn trong bản vector ngắt như hình dưới: