V. HOẠT ĐỘNG INTERRUPT CỦA 8051:
3. VIỆC XỬ LÝ CÁC SỰ NGẮT (PROCESSING INTERRUPT ):
Khi một sự ngắt xuất hiện và được chấp nhận bởi CPU thì chương trình chính bị ngắt. Các hoạt động sau đây xuất hiện :
√ Lệnh hiện hành và kết thúc thực thi.
√ Bộ đếm chương trình PC được cất giữ vào Stack. √ Trạng thái ngắt hiện hành được cất giữ vào bên trong. √ Những sự ngắt bị ngăn lại tại mức ngắt.
√ Bộ đếm chương trình PC được LOAD với địa chỉ vectơ của thủ tục phục vụ ngắt ISR.
√ Thủ tục phục vụ ngắt ISR được thực thi.
Thủ tục phục vụ ngắt ISR thực thi và đưa hoạt động vào đáp ứng ngắt, thủ tục phục vụ ngắt ISR kết thúc với lệnh RETI (quay trở về chương trình chính từ Stack). Điều này khôi phục lại giá htrị cũ của bộ đếm chương trình từ Stack và hoàn toàn dừng lại trạng thái cũ. Sự thực thi của chương trình chính tiếp tục ở nơi mà nó ngừng lại.
3.1 Các vectơ ngắt (Interrupt Vectors) :
Khi có một sự ngắt được nhận giá trị được LOAD vào PC được gọi bởi vectơ ngắt. Nó là địa chỉ của sự khởi động thủ tục phục vụ ngắt ISR của nguồn ngắt. Các vectơ được cho trong bảng sau :
Interrupt Flag Vectors Address
System Reset RST 0000H External 0 IE 0 0003H Timer 0 TF 0 000BH External 1 IE 1 0013H Timer 1 TF1 001BH Serial Port RI or TI 0023H Timer 2 TF 2 or EXF2 002BH
Vectơ reset hệ thống RST tại địa chỉ 0000H được tính trong bảng này, bởi vì trong ý nghĩa này nó giống như 1 Interrupt : nó ngắt chương trình và LOAD vào PC với giá trị mới.
Khi đưa 1 vectơ ngắt đến sự ngắt thì cờ của nó gây ra sự ngắt, tự động bị xóa bởi phần cứng, ngoài trừ RI và TI của Port nối tiếp và TF2, EXF2 của Timer 2 được xóa bởi phần mềm. Nguyên nhân trên là do có 2 nguồn ngắt có thể chịu đựng được cho mỗi sự ngắt mà nó không ứng dụng cho CPU để xóa cờ ngắt.
Vì các vectơ ngắt nằm ở dưới cùng trong vùng mã nhớ, nên lệnh đầu tiên của chương trình chính là lệnh nhảy đến vị trí cao hơn vị trí này như LJMP 0030H.
CHƯƠNG2