LẬP TRÌNH NGẮT

Một phần của tài liệu BÀI 7.1: LẬP TRÌNH HỢP NGỮ pot (Trang 29 - 30)

3.1.4.1. Tổng quan

Một bộ vi điều khiển có thể phục vụ một số thiết bị, mỗi khi có một thiết bị cần được phục vụ thì thiết bị báo cho bộ vi điều khiển bằng cách gửi một tín hiệu ngắt. Khi nhận được tín hiệu này thì bộ vi điều khiển sẽ ngừng mọi công việc đang thực hiện để chuyển sang phục vụ thiết bị. Chương trình đi cùng với ngắt được gọi là trình phục vụ ngắt ISR (Interrupt Service Routinei) hay còn gọi là bộ quản ngắt (Interrupt handler). Trình phục vụ ngắt của mỗi ngắt có một vị trí cố định trong bộ nhớ để giữ địa chỉ ISR. Tập hợp các ô nhớ lưu giữ địa chỉ của tất cả các ISR được gọi là bảng véc tơ ngắt (bảng 5.3.3a).

Bảng 5.3.3a. Bảng véc tơ ngắt của 8051

Ngắt Địa chỉ ROM (Hexa) Chân

RESET 0000 9

Ngắt phần cứng ngoài (INT0) 0003 12 (P3.2) Ngắt bộ Timer 0 (TF0) 000B

Ngắt phần cứng ngoài 1 (INT1) 0013 13 (P3.3) Ngắt bộ Timer 1 (TF1) 001B

Ngắt COM nối tiếp (RI và TI) 0023

Từ bảng trên ta thấy: Chỉ có 3 byte không gian bộ nhớ ROM được giành cho RESET. Đó là địa chỉ 0, 1 và 2. Địa chỉ 3 thuộc về ngắt phần cứng ngoài - ngắt 0. Vì lý do đó, trong chương trình cần đặt lệnh LJMP làm lệnh đầu tiên để hướng bộ vi xử lý ra ngoài bảng vector ngắt.

ORG 0 ;dia chi bat dau o ROM khi khoi dong lai

LJMP MAIN ;bo qua bang vector ngat ;--- Bat dau chuong trinh chinh

ORG 30H

MAIN: ... END

Chúng ta cũng cần phân biệt phương pháp ngắt và phương pháp thăm dò. Đối với phương pháp thăm dò bộ vi điều khiển liên tục kiểm tra tình trạng của thiết bị và khi điều kiện được đáp ứng thì tiến hành phục vụ thiết bị. Sau đó bộ vi điều khiển chuyển sang kiểm tra tình trạng làm việc của thiết bị tiếp theo cho đến khi tất cả đều được phục vụ.

Điểm mạnh của phương pháp ngắt là bộ vi điều khiển có thể phục vụ được nhiều thiết bị, tuy nhiên là không phải cùng một thời điểm. Ngoài ra, phương pháp ngắt cho phép bộ vi điều khiển che hoặc bỏ qua một yêu cầu phục vụ của thiết bị, điều mà phương pháp thăm dò không thực hiện được. Phương pháp thăm dò lãng phí đáng kể thời gian của bộ vi điều khiển do phải hỏi dò từng thiết bị, kể cả khi chúng không cần được phục vụ. Ví dụ lệnh “JNB TF, đích” trong khi chờ đợi bật cờ TF thì bộ vi điều khiển không thể làm được công việc nào khác, do vậy bị lãng phí thời gian. Cũng

với bộ định thời này, nếu dùng phương pháp ngắt, bộ vi điều khiển vẫn có thể thực hiện một số công việc nào đó cho đến khi cờ TF bật lên, bộ vi điều khiển sẽ bị ngắt cho dù đang làm công việc gì.

3.1.4.2. Trình tự thực hiện ngắt

Khi một ngắt được kích hoạt trình tự thực hiện của bộ vi điều khiển như sau: 1. Kết thúc lệnh hiện tại và lưu địa chỉ của lệnh kế tiếp (PC) vào ngăn xếp.

2. Lưu lại trạng thái hiện hành của tất cả các ngắt vào bên trong (nghĩa là không lưu vào ngăn xếp).

3. Nhảy đến một vị trí cố định trong bộ nhớ được gọi là bảng véc tơ ngắt, nơi lưu giữ địa chỉ của trình phục vụ ngắt.

4. Nhận địa chỉ ISR từ bảng véc tơ ngắt rồi nhảy tới địa chỉ đó và bắt đầu thực hiện trình phục vụ ngắt cho đến khi gặp lệnh RETI (trở về từ ngắt).

5. Kết thúc trình phục vụ ngắt, bộ vi điều khiển gặp lệnh RETI và trở về nơi nó đã bị ngắt. Trước hết, hai byte của đỉnh ngăn xếp được nạp vào bộ đếm PC, tiếp theo, bộ vi điều khiển bắt đầu thực hiện lệnh tại địa chỉ đó.

3.1.4.3. Sáu ngắt của 8051 (bảng 5.3.3a)

Thực tế 8051 chỉ có 3 ngắt dành cho người dùng, song nhiều tài liệu kỹ thuật của các nhà sản xuất vẫn nói rằng có 6 ngắt vì họ tính cả lệnh RESET. Bố trí 6 ngắt của 8051 như sau:

- RESET: Khi chân RESET được kích hoạt thì 8051 nhảy về địa chỉ 0000. Đây là địa chỉ bật lại nguồn.

- Hai ngắt dành cho bộ định thời Timer 0 và Timer 1. Địa chỉ ở bảng vector ngắt của hai ngắt này tương ứng với Timer 0 và Timer 1 là 000BH và 001BH.

- Hai ngắt phần cứng dành cho các thiết bị bên ngoài nối tới chân 12 (P3.2) và 13 (P3.3) của cổng P3 là INT0 và INT1 tương ứng. Vị trí nhớ trong bảng vector ngắt này là 0003H và 0013H.

- Truyền thông nối tiếp có một ngắt cho cả thu lẫn phát. Địa chỉ của ngắt này trong bảng vector ngắt là 0023H.

3.1.4.4. Cho phép ngắt và cấm ngắt

Khi RESET tất cả mọi ngắt đều bị cấm (bị che), có nghĩa là không có ngắt nào được bộ vi điều khiển đáp ứng nếu chúng được kích hoạt. Các ngắt phải được cho phép bằng phầm mềm để bộ vi điều khiển có thể đáp ứng được. Có một thanh ghi được gọi là thanh ghi cho phép ngắt IE (Interrupt Enable) chịu trách nhiệm về việc cho phép (không che) hoặc cấm (che) các ngắt. IE là một thanh ghi có thể định địa chỉ bit.

Một phần của tài liệu BÀI 7.1: LẬP TRÌNH HỢP NGỮ pot (Trang 29 - 30)