- BRR TBCK RBCK SPD SRC
2. Tổ chức ngắt của
2.1 Cho phép và không cho phép ngắt:
Trước tiên chúng ta phải hiểu cho phép và không cho phép ngắt là như thế nào? Khi ta cho phép ngắt và khi ngắt tác động thì vi điều khiển sẽ ngừng chương trình chính để thực hiện chương trình con phục vụ ngắt, khi khơng cho phép thì dù có sự tác động đến ngắt vi điều khiển vẫn tiếp tục thực hiện chương trình chính, khơng thực hiện chương trình phục vụ ngắt.
Trong vi điều khiển có 1 thanh ghi IE (Interrupt Enable) ở tại địa chỉ 0A8H có chức năng cho phép/cấm ngắt. Ta sử dụng thanh ghi này để cho phép hay không cho phép đối với từng nguồn ngắt và cho toàn bộ các nguồn ngắt. Tổ chức của thanh ghi như sau:
EA - ET2 ES ET1 EX1 ET0 EX0
Mỗi một nguyên nhân ngắt được cho phép hoặc không cho phép riêng rẽ thông qua thanh ghi chức năng đặc biệt định địa chỉ bit, thanh ghi cho phép ngắt IE (interrupt enable) có địa chỉ byte là 0A8H. Mỗi một bit của thanh ghi này cho phép hoặc không cho phép từng nguyên nhân ngắt riêng rẽ, thanh ghi IE đồng thời có một bit tồn cục ( global ) cho phép hoặc không cho phép tất cả các ngắt. Hoạt động của từng bit trong thanh ghi cho phép ngắt IE được tóm tắt trong bảng sau:
Thanh ghi cho phép ngắt IE
Bit Ký hiệu Địa chỉ bit Mô tả ( 0: không cho phép, 1: cho phép ) IE.7 EA AFH Cho phép/không cho phép ngắt tồn cục
IE.6 - AEH Không sử dụng
IE.5 ET2 ADH Cho phép ngắt do bộ định thời 2 IE.4 ES ACH Cho phép ngắt do port nối tiếp IE.3 ET1 ABH Cho phép ngắt do bộ định thời 1
IE.2 EX1 AAH Cho phép ngắt từ bên ngoài ( ngắt ngoài 1 ) IE.1 ET0 A9H Cho phép ngắt do bộ định thời 0
IE.0 EX0 A8H Cho phép ngắt từ bên ngoài ( ngắt ngoài 0 )
Trong thanh ghi IE có bit IE.6 chưa dùng đến, bit IE.7 là bit cho phép/cấm ngắt toàn bộ các nguồn ngắt. Khi bit IE.7= 0 thì cấm hết tất cả các nguồn ngắt, khi bit IE.7=1 thì cho phép tất cả các nguồn ngắt nhưng còn phụ thuộc vào từng bit điều khiển ngắt của từng nguồn ngắt.
Ví dụ: Ngắt do bộ định thời 1 được cho phép bằng cách dùng hai lệnh: SETB ET1 : Cho phép ngắt do bộ định thời một
SETB EA : set bit EA bằng 1 để cho phép ngắt tồn cục HoặcMOV IE,#10001000B
Đối với u cầu của ví dụ trên thì 2 cách thực hiện trên là xong nhưng ta hãy so sánh 2 cách thực hiện và chú ý một vài điều trong lập trình:Các lệnh của cách 1 khơng ảnh hưởng các bit cịn lại trong thanh ghi IE.
Cách thứ hai sẽ xóa các bit còn lại trong thanh ghi IE. Ở đầu chương trình ta nên khởi gán IE với lệnh MOV BYTE, nhưng khi điều khiển cho phép hay cấm trong chương trình thì ta sẽ dùng các lệnh SET BIT và CLR BIT để tránh làm ảnh hưởng đến các bit khác trong thanh ghi IE.