Chương 5 "Ngắt Interrupt" trong bài giảng Vi điều khiển trình bày định nghĩa ngắt, các nguyên nhân tạo ra ngắt, các thanh ghi ngắt, cách xử lý ngắt, bảng vectơ ngắt,. Đây là tài liệu tham khảo hữu ích cho các bạn chuyên ngành Kỹ thuật công nghệ. | NGẮT (INTERRUPT) Mục đích - Định nghĩa ngắt - Các nguyên nhân tạo ra ngắt - Các thanh ghi ngắt - Cách xử lý ngắt - Bảng vectơ ngắt - Khung chương trình hợp ngữ có sử dụng ngắt - Ví dụ . ĐỊNH NGHĨA NGẮT + Là sự xảy ra một sự kiện làm cho chương trình hiện hành bị tạm ngưng, trong khi sự kiện được phục vụ bởi 1 chương trình khác. + Trình phục vụ nhắt ISR (Interrupt Service Routine) : là chương trình xử lý ngắt. + Chương trình hiện hành bị tạm ngưng, thực thi 1 chương trình phục vụ ngắt. + Khi kết thúc việc thực thi chương trình phục vụ ngắt, gặp lệnh quay về từ 1 trình phục vụ ngắt (RETI), chương trình chính được tiếp tục tại nơi bị tạm dừng + Ngắt xuất hiện không đồng bộ với chương trình chính ( CPU không biết trước khi nào xảy ra ngắt) . CÁC NGUYÊN NHÂN GÂY RA NGẮT Có 5 nguyên nhân gây ra ngắt - Hai ngắt do bộ định thời timer 0 và timer 1 - Hai ngắt từ bên ngoài - Một ngắt do port nối tiếp Khi hệ thống reset tất cả các ngắt bị cấm và sau đó chúng được cho phép riêng rẽ bằng . | NGẮT (INTERRUPT) Mục đích - Định nghĩa ngắt - Các nguyên nhân tạo ra ngắt - Các thanh ghi ngắt - Cách xử lý ngắt - Bảng vectơ ngắt - Khung chương trình hợp ngữ có sử dụng ngắt - Ví dụ . ĐỊNH NGHĨA NGẮT + Là sự xảy ra một sự kiện làm cho chương trình hiện hành bị tạm ngưng, trong khi sự kiện được phục vụ bởi 1 chương trình khác. + Trình phục vụ nhắt ISR (Interrupt Service Routine) : là chương trình xử lý ngắt. + Chương trình hiện hành bị tạm ngưng, thực thi 1 chương trình phục vụ ngắt. + Khi kết thúc việc thực thi chương trình phục vụ ngắt, gặp lệnh quay về từ 1 trình phục vụ ngắt (RETI), chương trình chính được tiếp tục tại nơi bị tạm dừng + Ngắt xuất hiện không đồng bộ với chương trình chính ( CPU không biết trước khi nào xảy ra ngắt) . CÁC NGUYÊN NHÂN GÂY RA NGẮT Có 5 nguyên nhân gây ra ngắt - Hai ngắt do bộ định thời timer 0 và timer 1 - Hai ngắt từ bên ngoài - Một ngắt do port nối tiếp Khi hệ thống reset tất cả các ngắt bị cấm và sau đó chúng được cho phép riêng rẽ bằng phần mền. Khi xảy ra hai hay nhiều ngắt đồng thời hoặc xảy ra một ngắt trong khi một ngắt khác đang được phục vụ, ta có 2 sơ đồ xử lý ngắt : sơ đồ chuỗi vòng và sơ đồ 2 mức ưu tiên. Sơ đồ chuỗi vòng là cố định Sơ đồ 2 mức ưu tiên được lập trình bởi người sử dụng. CÁC THANH GHI NGẮT . THANH GHI CHO PHÉP NGẮT IE Để cho phép 1 ngắt nào đó thì Bit EA = 1 + bit tương ứng với ngắt đó = 1 Ta nên khởi động thanh ghi IE bằng lệnh di chuyển byte ở đầu chương trình. Việc cho phép ngắt trong chương trình nên sử dụng các lệnh SETB. . THANH GHI ƯU TIÊN NGẮT Interrupt Priority . CÁC CỜ NGẮT . BẢNG VECTO NGẮT . KHUNG CHƯƠNG TRÌNH CÓ NGẮT . TRÌNH PHỤC VỤ NGẮT NHỎ . TRÌNH PHỤC VỤ NGẮT LỚN . CÁC VÍ DỤ Ví dụ 1 : Hãy sử dụng bộ định thời 0 và các ngắt để tạo ra 1 sóng vuông 10Khz trên chân Giải : ta dùng bộ định thời 0 ở chế độ 2 ( tự nạp lại 8bit). Cờ tràn TF0 sẽ = 1 sau mỗi 50 s. ORG 0H MOV SP,#30H JMP MAIN ORG 000BH ; địa chỉ bắt đầu của trình phục vụ ngắt timer 0.