TỔ CHỨC NGẮT CỦA µC8031/8051:

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 30 - 33)

Thật sự tất cả các nguồn ngắt ở µC8031/8051: 2 ngắt ngồi, 2 từ timer và một ngắt Port nối tiếp. Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi Reset hệ thống và được cho phép bằng phần mềm.

Khi cĩ 2 hoặc nhiều ngắt đồng thời, 1 ngắt xảy ra trong khi 1 ngắt khác đang được phục vụ, cĩ cả 2 sự tuần tự hỏi vịng và sơ đồ ưu tiên 2 mức dùng để xác định thực hiện ngắt. Việc hỏi vịng tuần tự thì cố định nhưng ưu tiên ngắt thì cĩ thể lập trình được.

1. Cho phép và cấm các ngắt: (Enabling and Daibling Interrupt)

CHƯƠNG TRÌNH CHÍNH

C/tr chính C/tr chính C/tr chính C/tr chính

ISR ISR ISR

Mỗi nguồn Interrup được cho phép hoặc cấm từng ngắt qua một thanh ghi chức năng đặt biệt cĩ địa chỉ bit IE (Interrupt Enable) ở địa chỉ A8H. Cũng như xác định bit cho phép riêng biệt cho mỗi nguồn ngắt, cĩ một bit cho phép/cấm tồn bộ được xĩa để cấm hồn tồn các ngắt được xét (đặt lên 1) để cho phép tất cả các ngắt.

Bit Ký hiệu Địa chỉ bit Mơ tả (1 = cho phép, 0=cấm)

IE.7 EA AFH Cho phép / cấm tồn bộ

IE.6 _ AEH Khơng được định nghĩa

IE.5 ET2 ADH Cho phép ngắt từ timer 2(8052) IE.4 ES ACH Cho phép ngắt Port nối tiếp IE.3 ET1 ABH Cho phép ngắt từ timer 1

IE.2 EX1 AAH Cho phép ngắt ngồi

IE.1 ET0 A8H Cho phép ngắt từ timer 0 IE.0 EX0 A8H Cho phép ngắt ngồi 0

Bảng: Tĩm tắt thanh ghi IE

Hai bit phải được đặt lên một để cho phép bất kỳ ngắt nào: bit cho phép riêng và bit cho phép tồn bộ.Ví dụ các ngắt từ timer được cho phép như sau:

SETB ET1 ; Cho phép ngắt từ timer 1. SETB EA ; Đặt bit cho phép tồn bộ. Hoặc : MOV IE, #10001000B.

Mặc dù hai cách này cĩ cùng một hiệu quả sau khi reset hệ thống nhưng hiệu quả sẽ khác nếu IE được ghi giữa chương trình. Cách thứ nhất khơng ảnh hưởng tới 5 bit trong thanh ghi IE, trái lại cách thứ hai sẽ xĩa các bit khác. Nên khởi trị IE theo cách thứ hai ở đầu chương trình (nghĩa là sau khi mở máy hoặc reset hệ thống), nhưng cho phép và cấm các ngắt ngay trong chương trình nên dùng cách thứ nhất để tránh ảnh hưởng đến các bit khác trong thanh ghi IE.

2. Ưu tiên ngắt (IP: Interrupt Priority)

Mỗi nguồn ngắt được lập trình riêng vào một trong hai mức ưu tiên qua thanh ghi chức năng đặc biệt được địa chỉ bit IP ở địa chỉ B8H.

Bit Ký

hiệu

Địa chỉ bit Mơ tả (1= mức cao hơn, 0 = mức thấp hơn)

IP.7 BFH Khơng được định nghĩa

IP.6 _ BEH Khơng được định nghĩa

IP.4 PS BCH Ưu tiên cho ngắt từ port nối tiếp IP.3 PT1 BAH Ưu tiên cho ngắt từ timer1 IP.2 PX1 BAH Ưu tiên cho ngắt ngồi IP.1 PT0 B9H Ưu tiên cho ngắt từ timer 0 IP.0 PX0 B8H Ưu tiên cho ngắt ngồi 0

Bảng: Tĩm tắt thanh ghi IP.

IP bị xĩa sau khi reset hệ thống để (mặc nhiên) đặt tất cả các ngắt ở mức ưu tiên thấp hơn. Ý tưởng “ưu tiên” cho phép một ISR sẽ bị ngắt bởi một ngắt cĩ độ ưu tiên cao hơn ngắt đang phục vụ. Điều này thì rõ ràng trên µC8051/8031, vì chỉ cĩ hai mức ưu tiên. Nếu một ISR cĩ mức ưu tiên thấp đang thực thi khi một ngắt cĩ ưu tiên cao xảy ra thì ISR bị ngắt. ISR cao hơn khơng bị ngắt.

Chương trình mức thực thi ở mức nền (Base-Lavel) và khơng liên hệ với bất cứ ngắt nào, cĩ thể luơn luơn bị ngắt quảng bất cứ ưu tiên của ngắt. Nếu hai Interrupt (ngắt) cĩ ưu tiên khác nhau xảy ra đồng thời thì Interrupt (ngắt) cĩ độ ưu tiên cao hơn được phục vụ trước.

3. Hỏi vịng tuần tự (Polling Sequence):

Nếu hai ngắt cĩ cùng độ ưu tiên xảy ra đồng thời, sự hỏi vịng tuần tự sẽ xác định cái nào được phục vụ trước tiên. Hỏi vịng tuần tự là bên ngồi 0, timer0, bên ngồi, timer1, port nối tiếp và timer.

IE1 EX0 ET0 EX1 ET1 ES PX0 PT0 PX1 PT1 PS IE0 IE1 IE0 INT0 INT1 IT0 IT1 RI T1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 (adsbygoogle = window.adsbygoogle || []).push({});

các cho phép ngắt tuần tự hỏi vịng ngắt ngắt ưu tiên cao

Hình dươi đây minh họa 5 nguồn ngắt, cơ chế riêng biệt và tồn bộ, hỏi vịng tuần tự và các mức ưu tiên. Trạng thái của tất cả các nguồn ngắt khả dụng qua các bit cờ tương ứng trong các ISR (Special funetyon Registers). Dĩ nhiên nếu cĩ bất kỳ ngắt nào bị cấm ngắt khơng xảy ra, nhưng phần mềm vẫn cĩ thể kiểm tra cờ ngắt. Các thí dụ về timer và port nối tiếp trong các mục trước đã sử dụng các cờ ngắt một cách mở rộng mà khơng dùng ngắt.

Ngắt Port nối tiếp cĩ từ Logic OR của ngắt thu (RI) và phát (TI). Các bit cờ tạo các ngắt được tĩm tắc trong bảng sau:

Ngắt Cờ Thanh ghi SER và vị trí bit

Bên ngồi 0 IE0 TCON.1

Bên ngồi 1 IE1 TCON.3

Timer 0 TF0 TCON.5

Timer 1 TF1 TCON.7

Port nối tiếp TI SCON.1 Port nối tiếp RI SCON.0

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 30 - 33)