Tổ chức ngắt

Một phần của tài liệu Lập trình Vi Điều Khiển (Trang 107 - 110)

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

Một phần của tài liệu Lập trình Vi Điều Khiển (Trang 107 - 110)

Tải bản đầy đủ (DOC)

(125 trang)
w