XỬ LÝ NGẮT (Processing Interrupt):

Một phần của tài liệu Đồ án thiết bị báo cháy và điều khiển tự động báo cháy qua điện thoại bằng vi điều khiển (Trang 33 - 34)

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ấp 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ỉ vectorcủa ISR. + ISR thực thi.

ISR thực thi và đáp ứng ngắt. ISR hồn tất bằng lệnh RET1 (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 Interruput Time. 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ải ứ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 Đồ án thiết bị báo cháy và điều khiển tự động báo cháy qua điện thoại bằng vi điều khiển (Trang 33 - 34)