Khơng có mặt nạ (u cầu ngắt tương ứng được nhận biết)A

Một phần của tài liệu BÀI GIẢNG KỸ THUẬT VI XỬ LÝ (Trang 107 - 110)

DIV nguồn (Unsigned Divide)

0: Khơng có mặt nạ (u cầu ngắt tương ứng được nhận biết)A

các thanh ghi và địa chỉ là ngược lại với các thành ghi điều khiển khởi đầu).

OCW1

Thanh ghi này để ghi các bit mặt nạ vào thanh ghi mặt nạ ngắt IMR. Khi một bit mặt nạ nào đó của thanh ghi IMR được lập thì yêu cầu ngắt tương ứng với mặt nạ đó sẽ khơng được 8259 nhận biết nữa (bị che). Từ điều khiển này phải được (ghi) đưa đến 8259 ngay sau khi các từ điều khiển khởi đầu ICWi được ghi vào 8259 để cho các lối vào yêu cầu ngắt

IRTQi muốn đáp ứng. Ta cũng có thể đọc lại IMR bất kỳ lúc nào để xác định tình trạng mặt nạ ngắt hiện tại (có nghĩa, kiểm tra xem trong thời điểm hiện tại yêu cầu ngắt nào được phép, yêu cầu ngắt nào bị che).

Hình vẽ: Thanh ghi hoạt động OCW1

D7 D6 D5 D4 D3 D2 D1 D0

Mặt nạ ngắt tại các yêu cầu ngắt

1: Có mặt nạ (yêu cầu ngắt tương ứng bị che)

0: Khơng có mặt nạ (u cầu ngắt tương ứng được nhận biết)A0 A0 1 1 M7M7 M6 M6M5M5M4M4M3M3M2M2M1M1 M0 M0

OCW2

Các bit: R, SL và EOI (theo bảng) phối hợp nhau cho phép chọn ra cách thức kết thúc yêu cầu ngắt khác nhau. Trong đó, một vài cách kết thúc yêu cầu ngắt còn tác động tới các yêu cầu ngắt được chỉ đích danh với mức ưu tiên được mã hố bởi 3 bit L2, L1, L0 (L2L1L0).

Một số chế độ làm việc của 8259

(1) Chế độ ưu tiên cố định: Đây là chế độ làm việc ngầm định của 8259 sau khi nó đã được nạp các từ điều khiển khởi đầu. Trong chế độ này, các đầu vào yêu cầu ngắt IRQ7 – IRQ0 được gán cho các mức ưu tiên cố định. Cụ thể: IRQ0 được gán mức ưu tiên cao nhất, … IRQ7 được gán mức ưu tiên thấp nhất. Thứ tự mức ưu tiên này được giữ cố định (không thay đổi) cho đến khi mạch 8259 được lập trình khác đi thơng qua việc ghi từ điều khiển hoạt động OCW2. Trong chế độ ưu tiên cố định, tại một thời điểm chỉ có một yêu cầu ngắt i được phục vụ (bit ISRi = 1), lúc này tất cả các yêu cầu ngắt khác có mức ưu tiên cao hơn nào đó có thể ngắt các yêu cầu ngắt có mức ưu tiên thấp hơn.

(2) Chế độ quay mức ưu tiên tự động (ưu tiên luân phiên): ở chế độ này, sau khi một yêu cầu ngắt nào đó được phục vụ xong, 8259 sẽ xố bit tương ứng của nó trong thanh ghi ISR và gán cho đầu vào của nó (IRQ) mức ưu tiên thấp nhất để tạo điều kiện cho các yêu cầu ngắt khác (với mức ưu tiên thấp) có cơ hội (thời cơ) được phục vụ.

(3) Chế độ quay (đổi) mức ưu tiên chỉ đích danh: ở chế độ này ta cần chỉ rõ (chỉ đích danh) đầu vào yêu cầu ngắt IRQi nào với i = L2L1L0 được gán mức ưu tiên thấp nhất, đầu vào IRQi+1 sẽ được tự động gán mức ưu tiên cao nhất.

Đó là 3 chế độ làm việc tiêu biểu của 8259. Trên cơ sở đó, nhìn lại sự phối hợp giữa các bit R, SL, EOI như thế nào để tạo ra các lệnh quy định các cách thức kết thúc yêu cầu ngắt cho các chế độ làm việc khác nhau như đã nói qua.

(1) Kết thúc yêu cầu ngắt thường: Trong chương trình con phục vụ ngắt phải có lệnh EOI đặt trước lệnh trở về IRET cho 8259. Mạch 8259 sẽ xác định yêu cầu ngắt IRQi vừa được phục vụ và xoá bit ISRi tương ứng của nó để tạo điều kiện cho chính u cầu ngắt này hoặc các ngắt có mức ưu tiên thấp hơn có thể được tác động (phục vụ).

Hình vẽ: Thanh ghi hoạt động OCW2

0

0 RRSLSLEOIEOI00 00 L2L2L1L1L0L0D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0

RSLEOIý nghĩa001Lệnh EOI thường011Lệnh EOI chỉ đích danh (*)101Đổi mức ưu tiên khi có EOI thường100Lập chế độ quay khi có EOI tự động000Xố chế độ quay khi có EOI tự động111Đổi mức ưu tiên khi có EOI chỉ đích danh (*)110Lệnh lập mức ưu tiên (*)010Khơng làm gì

Kết thúc ngắt (EOI)

A0

Đổi mức ưu tiên đích danh (đặc biệt) Đổi mức ưu tiên tự động (quay vịng)

Mã hố mức ưu tiên ngắt bị tác động 000: mức 0

001: mức 1... ... 111: mức 7

(2) Kết thúc yêu cầu ngắt chỉ đích danh: Trong chương trình con phục vụ ngắt phải có lệnh EOI chỉ đích danh đặt trước lệnh trở về IRET cho 8259. Mạch 8259 sẽ xoá đúng bit ISRi (i = L2L1L0) để tạo điều kiện cho chính yêu cầu ngắt này hoặc các yêu cầu ngắt có mức ưu tiên thấp hơn có thể được tác động.

(3) Quay (đổi) mức ưu tiên khi kết thúc yêu cầu ngắt thường: Trong chương trình con phục vụ ngắt phải có lệnh EOI đặt trước lệnh trở về IRET cho 8259. Mạch 8259 sẽ xác định yêu cầu ngắt thứ i vừa được phục vụ, xố bit ISRi tưng ứng và gán ln mức ưu tiên thấp nhất cho đầu vào IRQi này, còn đầu vào IRQi+1 sẽ được gán mức ưu tiên cao nhất.

Ví dụ:

Thanh ghi ISR trước khi IRQ4 được chấp nhận

(0: mức ưu tiên cao nhất, 7: mức ưu tiên thấp nhất)

Các bit IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0

Trạng thái của

ISR 0 1 0 1 0 0 0 0

Mức ưu tiên 7 6 5 4 3 2 1 0

Thanh ghi ISR sau khi IRQ4 được chấp nhận và sau khi có lệnh quay đổi

Các bit IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0

Trạng thái của

ISR 0 1 0 0 0 0 0 0

Mức ưu tiên 2 1 0 7 6 5 4 3

Thanh ghi ISR trước khi IRQ5 được chấp nhận (0: mức ưu tiên cao nhất, 7: mức ưu tiên thấp nhất)

Các bit IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0

Trạng thái của ISR

0 0 1 0 0 1 0 0

Mức ưu tiên 7 6 5 4 3 2 1 0

Thanh ghi ISR sau khi IRQ4 được chấp nhận và sau khi có lệnh quay đổi

Các bit IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0

Trạng thái của ISR

0 0 0 0 0 1 0 0

Mức ưu tiên 1 0 7 6 5 4 3 2

(1) Quay (đổi) mức ưu tiên trong chế độ kết thúc ngắt tự động: Trong chế độ này chỉ cần một lần đưa lệnh chọn chế độ mức ưu tiên khi kết thúc yêu cầu ngắt từ động. Có thể chọn lệnh này bằng lập “chế độ quay khi có EOI tự động”. Từ đó trở đi 8259 sẽ đổi mức ưu tiên mỗi khi kết thúc yêu cầu ngắt tự động tương tự mục trước. Muốn loạ bỏ chế độ này ta có thể dùng lệnh xố “chế độ quay khi có EOI tự động”.

(2) Quay (đổi) mức ưu tiên khi kết thúc yêu cầu ngắt chỉ đích danh: Trong chương trình con phục vụ ngắt phải có lệnh EOI đích danh cho 8259 đặt trước lệnh trở về IRET. Mạch 8259 sẽ xoá đúng bit ISRi (i = L2L1L0).

(3) Lập mức ưu tiên: Chế độ này cho phép thay đổi mức ưu tiên có định hoặc mức ưu tiên gán trước đó bằng cách gán mức ưu tiên thấp nhất cho yêu cầu ngắt IRQi chỉ đích danh ứng với tổ hợp mã i = L2L1L0. Yêu cầu ngắt IRQi+1 sẽ được gán mức ưu tiên cao nhất.

OCW3

Từ điều khiển hoạt động OCW3 sau khi được nạp vào 8259 cho phép:

o Chọn ra các thanh ghi để đọc (trạng thái)

o Thăm dò trạng thái yêu cầu ngắt bằng cách đọc trạng thái của đâu vào yêu cầu ngắt IRQi với mức ưu tiên cao nhất cùng với mã của đầu vào đó.

o Thao tác với mặt nạ đặc biệt. Các thanh

ghi IRR và ISR có thể được nạp sau khi nạp từ điều khiển OCW3 vào 8259 với bit ERIS = 1 (D1). Bit (D0) RIS =

0, cho phép đọc IRR ở lần đọc sau; RIS = 1, cho phép đọc ISR ở lần đọc sau. Bằng việc đưa vào 8259 từ

điều khiển hoạt động OCW3 với bit P = 1, ta có thể đọc được trên bus dữ liệu ở lần đọc tiếp ngay sau đấy từ thăm dị, trong đó các thơng tin về u cầu ngắt với mức ưu tiên cao nhất đang hoạt động và mã tương ứng với yêu cầu ngắt đó theo dạng sau:

Ta có thể coi đây là chế độ thăm dò yêu cầu ngắt và chế độ này thường được ứng dụng trong trường hợp có nhiều chương trình con phục vụ ngắt giống nhau cho một yêu cầu ngắt

Hình vẽ: Thanh ghi hoạt động OCW3

D7 D6 D5 D4 D3 D2 D1 D0Chế độ mặt nạ đặc biệt Chế độ mặt nạ đặc biệt 10: Xoá chế độ mặt nạ đặc biệt 11: Lặp chế độ mặt nạ đặc biệt A0 10: Đọc IRR ở lần đọc sau 11: Đọc ISR ở lần đọc sau 0

Một phần của tài liệu BÀI GIẢNG KỸ THUẬT VI XỬ LÝ (Trang 107 - 110)