Xử lý ngắt (Processing Interrupt):

Một phần của tài liệu ĐỀ TÀI: Thiết kế thiết bị báo cháy qua điện thoại di động (Trang 25 - 26)

Khi ngắt xảy ra và CPU chấp thuận, chương trình chính ngắt quãng những hoạt động sau đây xảy ra:

+ Lệnh hiện hành hồn tất việc thực thi. + Cất PC vào ngăn xếp.

+ Trạng thái ngắt hiện hành được cất vào bên trong. + Các ngắt bị chặn ở mức ngắt.

+ Nạp vào PC địa chỉ vector của ISR. + ISR thực thi.

ISR thực thi và đáp ứng ngắt. ISR hồn tất bằng lệnh RETI (quay về từ ngắt). Điều này làm lấy lại giá trị cũ PC từ ngăn xếp và lấp lại trạng thái ngắt cũ. Thực thi chương trình chính ở chỗ mà nó bị dừng.

Các vector ngắt (Interrupt Vectors):

Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là vector ngắt. Nó là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt. Các vector ngắt được cho bảng sau:

Ngắt Cờ Địa chỉ vector

Reset hệ thống RST 0000H

Bên ngồi 0 IE0 0003H

Timer 0 TF 0 000BH

Bên ngồi 1 IE 1 0013H

Timer 1 TF 1 001BH

Port nối tiếp T1 hoặc R1 0023H Bảng : Các vector ngắt

Vector Reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa này nó giống Interrupt: nó ngắt chương trình chính và nạp giá trị mới cho PC.

Khi “chỉ đến một ngắt”, cờ gây ra ngắt tự động bị xóa bởi phần cứng. Các ngoại lệ là RI và TI với các ngắt port nối tiếp và TF2, EXF2 với các Interrupt Timer. Vì có hai nguồn có thể cho mỗi ngắt này, không thực tế để CPU xóa cờ ngắt. Các bit này phải được kiểm tra trong ISR để xác định nguồn ngắt và cờ tạo ngắt sẽ được xóa bằng phần mềm. Thông thường một rẽ nhánh xảy ra với một phản ứng thích hợp, phụ thuộc vào nguồn ngắt.

Vì các vector ngắt ở phần đầu của bộ nhớ chương trình, nên lệnh thứ nhất của chương trình chính thường là lệnh nhảy qua chương trình chính này. Ví dụ như lệnh LJMP 0030H.

Một phần của tài liệu ĐỀ TÀI: Thiết kế thiết bị báo cháy qua điện thoại di động (Trang 25 - 26)

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

(84 trang)
w