1. Các nguồn ngắt:
Lưu ý:
• Khi ta reset hệ thống thỡ tất cả cỏc ngắt ủều bị cấm hoạt ủộng.
• Cỏc nguồn ngắt này ủược cho phộp hoặc cấm hoạt ủộng bằng lệnh do người lập trỡnh thiết lập cho từng ngắt.
• Việc xử lý cỏc ngắt ủược thực hiện qua 2 sơ ủồ:
o Sơ ủồ ưu tiờn ngắt → cú thể thay ủổi ủược và do người lập trỡnh thiết lập.
o Sơ ủồ chuỗi vũng → cố ủịnh, khụng thay ủổi ủược.
⇒ Hai sơ ủồ này giỳp CPU giải quyết cỏc vần ủề liờn quan ủến ngắt như: hai hay nhiều ngắt xảy ra ủồng thời hoặc một ngắt xảy ra trong khi một ngắt khỏc ủang ủược thực thi.
Chương 6: Hoạt ủộng ngắt (Interrupt). Trường ðH Cụng nghiệp Tp.HCM.
Các cờ ngắt của chip 8051:
Lưu ý:
• Một ngắt xảy ra thỡ cờ ngắt tương ứng sẽ ủược set bằng 1.
• Khi ISR của ngắt ủược thực thi thỡ cờ ngắt tương ứng sẽ tự ủộng bị xúa về 0 bằng phần cứng (ngoại trừ cờ ngắt RI và TI phải ủược xúa về 0 bằng phần mềm).
• ðối với ngắt ngoài sẽ cú hai cỏch kớch hoạt ủể tạo ra một tớn hiệu ngắt: ngắt ngoài kớch hoạt khi có mức thấp và ngắt ngoài kích hoạt khi có cạnh âm tại chân INT0\ hoặc INT1\.
2. Qui ủịnh việc chọn loại kớch hoạt cho ngắt ngoài:
Việc chọn lựa loại kích hoạt cho các ngắt ngoài, thuộc loại kích hoạt cạnh hay thuộc loại kích hoạt mức, thỡ ủược lập trỡnh thụng qua cỏc bit IT0 và IT1 của thanh ghi TCON.
IT0 = 0 → Ngắt ngoài 0 ủược kớch khởi bởi việc phỏt hiện mức thấp tại chõn INT0\.
IT0 = 1 → Ngắt ngoài 0 ủược kớch khởi bởi việc phỏt hiện cạnh õm tại chõn INT0\.
IT1 = 0 → Ngắt ngoài 1 ủược kớch khởi bởi việc phỏt hiện mức thấp tại chõn INT1\.
IT1 = 1 → Ngắt ngoài 1 ủược kớch khởi bởi việc phỏt hiện cạnh õm tại chõn INT1\.
Lưu ý: Khi tạo tớn hiệu ngắt tại chõn INT0\ hoặc INT1\ ta cần phải chỳ ý ủến thời gian duy trỡ tỏc ủộng của tớn hiệu ngắt.
• ðối với loại ngắt kích hoạt cạnh âm (thời gian tối thiểu):
INTx 8051
Tm Tm
(1)
(0) x = 0, 1
fOSC(MHz): tần số thạch anh.
Tm( s): chu kỳ máy.
OSC
m f
T 12
=
• ðối với loại ngắt kớch hoạt mức thấp (thời gian tối ủa):
INTx 8051
(**) (*)
(1)
(0) x = 0, 1
(*): Duy trì trạng thái (0) cho đến khi ISR tương ứng được thực hieọn.
(**):Trở về trạng thái (1) trước khi ISR tương ứng được thực hiện xong hoặc trước khi có một ngắt khác được tạo ra.
Tm
×
=4 (*)
Chương 6: Hoạt ủộng ngắt (Interrupt). Trường ðH Cụng nghiệp Tp.HCM.
3. Thanh ghi cho phép ngắt (IE):
Thanh ghi cho phộp ngắt (IE: Interrupt Enable): chứa cỏc bit dựng ủể cho phộp hoặc cấm cỏc ngắt hoạt ủộng.
Cấu trúc của thanh ghi IE:
Hai ủiều kiện ủể một ngắt ủược phộp hoạt ủộng là:
• Bit EA = 1.
• Bit ngắt tương ứng = 1.
Vớ dụ: ðể ngắt của Timer 1 ủược phộp hoạt ủộng ta dựng lệnh:
SETB ET1 SETB EA hoặc
MOV IE, #10001000B
Mặc dự cả cỏch trờn ủều cho ta một kết quả như nhau sau khi hệ thống ủược thiết lập lại trạng thỏi ban ủầu (reset hệ thống). Tuy nhiờn trong khi chương trỡnh ủang hoạt ủộng thỡ ảnh hưởng của hai cách này có khác nhau vì cách thứ hai ghi lên thanh ghi IE.
Cỏch thứ nhất, sử dụng hai lệnh SETB nờn chỉ ảnh hưởng ủến 2 bit cần tỏc ủộng mà khụng gõy ảnh hưởng ủến 5 bit cũn lại của thanh ghi IE. Trong khi ủú, cỏch thứ hai chỉ sử dụng lệnh MOV nờn sẽ làm cho 5 bit cũn lại này bit xúa mất. Tốt nhất ta nờn khởi ủộng thanh ghi IE bằng lệnh MOV ở ủầu chương trỡnh ngay sau khi hệ thống ủược thiết lập lại. Việc cho phộp hoặc khụng cho phộp cỏc ngắt trong chương trỡnh nờn sử dụng cỏc lệnh SETB hoặc CLR ủể trỏnh ảnh hưởng ủến cỏc bit khỏc trong thanh ghi IE.
4. Thanh ghi ưu tiên ngắt (IP):
Khỏi niệm ưu tiờn ngắt giỳp 8051 giải quyết vấn ủề hai tớn hiệu ngắt xuất hiện ủồng thời và vấn ủề một tớn hiệu ngắt xuất hiện trong khi một ngắt khỏc ủang ủược thực thi.
Ngắt ưu tiên mức cao → Ngắt ưu tiên mức thấp
Chương 6: Hoạt ủộng ngắt (Interrupt). Trường ðH Cụng nghiệp Tp.HCM.
Cấu trúc của thanh ghi IP:
Khi hệ thống ủược thiết lập lại trạng thỏi ban ủầu thỡ tất cả cỏc ngắt ủều sẽ ủược mặc ủịnh ở mức ưu tiờn thấp. í tưởng “cỏc mức ưu tiờn” cho phộp một trỡnh phục vụ ngắt ủược tạm dừng bởi một ngắt khỏc nếu ngắt mới này cú mức ưu tiờn cao hơn mức ưu tiờn của ngắt hiện ủang ủược phục vụ. ðiều này hoàn toàn hợp lý ủối với 8051 vỡ ta chỉ cú hai mức ưu tiờn. Nếu cú ngắt cú mức ưu tiờn cao xuất hiện, trình phục vụ ngắt cho ngắt có mức ưu tiên thấp phải tạm dừng (nghĩa là bị ngắt). Ta không thể tạm dừng một chương trình phuc vụ ngắt có mức ưu tiên cao.
Chương trỡnh chớnh do ủược thực thi ở mức nền và khụng ủược kết hợp với một ngắt nào nờn luôn luôn bị ngắt bởi các ngắt cho dù các ngắt có mức ưu tiên thấp hay mức ưu tiên cao. Nếu có hai ngắt với mức ưu tiờn ngắt khỏc nhau xuất hiện ủồng thời, ngắt cú mức ưu tiờn cao sẽ ủược phục vụ trước.
5. Thứ tự chuỗi vòng ngắt (Interrupt Polling Sequence):
Khỏi niệm chuỗi vũng giỳp 8051 giải quyết vấn ủề hai hay nhiều tớn hiệu ngắt cú mức ưu tiờn giống nhau xuất hiện ủồng thời.
Chuỗi vũng này sẽ là (ủược sắp xếp theo thứ tự từ thấp ủến cao):
Ngắt ngoài 0 →→→→ Ngắt Timer 0 →→→→ Ngắt ngoài 1 →→→→
Ngắt Timer 1 →→→→ Ngắt port nối tiếp →→→→ Ngắt Timer 2 (chỉ có ở 8052)
Hỡnh dưới ủõy minh họa 5 nguyờn nhõn ngắt, cơ chế cho phộp riờng rẽ và toàn cục, chuỗi vũng và cỏc mức ưu tiờn. Trạng thỏi của tất cả cỏc nguyờn nhõn ngắt ủược thể hiện thụng qua cỏc bit cờ tương ứng trong cỏc thanh ghi chức năng ủặc biệt cú liờn quan. Dĩ nhiờn nếu một ngắt nào ủú khụng ủược phộp, nguyờn nhõn ngắt tương ứng khụng thể tạo ra một ngắt nhưng phần mềm vẫn cú thể kiểm tra cờ ngắt ủú. Lấy thớ dụ bộ ủịnh thời và port nối tiếp trong hai chương trước sử dụng cỏc cờ ngắt một cách rộng rãi dù không có ngắt tương ứng xảy ra, nghĩa là không sử dụng các ngắt.
Ngắt do port nối tiếp là kết quả OR của cờ ngắt khi thu RI (cờ ngắt thu) và cờ ngắt khi phát TI (cờ ngắt phát).
Chương 6: Hoạt ủộng ngắt (Interrupt). Trường ðH Cụng nghiệp Tp.HCM.
Cấu trúc ngắt của 8051: