Mục tiêu:
- Hiểu được cấu tạo các thanh ghi của ngắt - Biết được chuỗi vòng hoạt động của các ngắt
Cờ ngắt xảy ra Trình phục vụ ngắt
vectơ ngắt
Chương trình hiện hành
Cách nhìn ngắn gọn của một chương trình thực thi không có ngắt
Cách nhìn ngắn gọn của một chương trình thực thi có ngắt Bắt đầu trình phục vụ ngắt Kết thúc trình phục vụ ngắt
- Biết được địa chỉ các thanh ghi ngắt
- Ứng dụng các thanh ghi để viết chương trình điều khiển
2.1. Thanh ghi cho phép và không cho phép ngắt
Mỗi nguồn ngắt được cho phép hoặc không cho phép thông qua thanh ghi chức năng đặc biệt có các bit được địa chỉ hóa IE (Interrupt Enable) tại địa chỉ 0A8H.
Bit Symbol Address Mô tả
(1: cho phép, 0: không cho phép)
IE.7 EA AFH Cho phép, không cho phép toàn cục
IE.6 - AEH Không xác định
IE.5 ET2 ADH Cho phép ngắt do timer 2(có ở 8952) IE.4 ES ACH Cho phép ngắt nối tiếp
IE.3 ET1 ABH Cho phép ngắt do timer1
IE.2 EX1 AAH Cho phép ngắt do bên ngoài (INT 1) IE.1 ET0 A9H Cho phép ngắt do timer0
IE.0 EX0 A8H Cho phép ngắt do bên ngoài (INT 0)
2.2. Thanh ghi ưu tiên ngắt
Khi có nhiều ngắt được cho phép, một trong số các ngắt được chọn ưu tiên cao hơn. Nếu một ngắt được chọn ưu tiên nó sẽ làm cho ngắt khác đang thực thi sẽ tạm dừng cho đến khi trình phục vụ ngắt ưu tiên kết thúc . Trong một tình huống khác, khi hai ngắt xảy ra cùng lúc, ngắt nào có mức ưu tiên cao hơn sẽ làm trước. Ở vi điều khiển 89xxx, một chương trình có sử dụng ngắt được chia làm 3 mức: mức nền (thường cho chương trình chính), mức ngắt và ưu tiên ngắt và chỉ có một ngắt được ưu tiên cao nhất nếu có nhiều ngắt được cho phép. Mỗi một nguyên nhân ngắt riêng rẽ được lập trình để có một trong hai mức ưu tiên thông qua thanh ghi chức năng đặt biệt IP (interrupt priority).
Bit Symbo
l Bit Address
Description
(1: ưu tiên, 0: không ưu tiên)
IP.7 - - Không sử dụng
IP.6 - - Không sử dụng
IP.4 ES ACH Ưu tiên do ngắt do port nối tiếp IP.3 ET1 ABH Ưu tiên do ngắt do bộ định thời 1 IP.2 EX1 AAH Ưu tiên do ngắt do bên ngoài (INT
1)
IP.1 ET0 A9H Ưu tiên do ngắt do bộ định thời 0 IP.0 EX0 A8H Ưu tiên do ngắt do bên ngoài (INT
0)
2.3. Chuỗi Pooling
Nếu như có nhiều ngắt cùng xuất hiện đồng thời, chuỗi vòng sẽ xác định ngắt nào thực hiện trước. Chuỗi vòng này là: Ngắt ngoài 0, ngắt do bộ định thời 0, ngắt ngoài 1, ngắt do bộ định thời 1, ngắt do port nối tiếp, ngắt do bộ định thời 2.
Hình 32-06-2 Cấu trúc ngắt 8051
2.4. Vector ngắt
Khi có sự kiện ngắt (Cờ ngắt) xuất hiện, chương trình ngắt bắt đầu một địa chỉ cố định – gọi là vectơ ngắt.
Interrupt Flag Interrupt Vector
System Reset RST 0000h
Timer 0 TF0 000BH
External 1 IE1 0013H
Timer 1 TF1 001BH
Serial Port RI, TI 0023H Timer2 TF2 & EXF2
(vđk 8952)
002BH