🌱 Bài10. Thực hành ngắt ngoài 8051
Để hiểu về ngắt và một số thanh ghi chung, có thể xem tại đây!
8051 có 2 ngắt ngoài: INT0 & INT1, xảy ra khi có sự thay đổi mức logic hoặc cạnh (sườn lên/xuống) trên 2 chân P3.2 và P3.3.
👉👉 Ngắt ngoài có 2 cách kích hoạt
- Edge triggered - Kích hoạt theo cạnh, xảy ra khi phát hiện cạnh lên hoặc cạnh xuống ở chân ngắt.
- Level triggered - Kích hoạt theo mức, xảy ra khi phát hiện mức cao hoặc thấp ở chân ngắt.
👉👉 8051 thường sử dụng 2 cách sau
- Low level triggered - xảy ra khi phát hiện mức thấp tại chân ngắt (P3.2/P3.3).
- Falling edge triggered - xảy ra khi phát hiện cạnh xuống (1 -> 0) tại chân ngắt.
Khi ngắt được phát hiện, mà ngắt toàn cục và ngắt ngoài được kích hoạt bằng thanh ghi IE, chương trình sẽ thực hiện nốt lệnh hiện tại và nhảy đến chương trình con phục vụ ngắt - ISR.
👉👉 Thanh ghi setup ngắt ngoài: TCON
- Bit 3 - IE1 (External Interrupt 1 edge flag): Tự động được set high bằng phần cứng khi INT1 được kích hoạt, và tự động đặt về 0 khi thực hiện xong ISR.
- Bit 2 - IT1 (Interrupt 1 Type): Chọn loại sự kiện ngắt:
IT1 = 1 -> Falling Edge
IT1 = 0 -> Low Level - Bit 1 - IE0, Bit 0 - IT0 -> tương tự với ngắt ngoài 0.
🧐🧐 Bài tập thực hành
Thực hành với Ngắt ngoài 0, khi phát hiện cạnh xuống, nhảy đến ISR. Trong ISR, đảo trạng thái LED chân P1.0.
👉👉 Quy trình thực hiện
- Kích hoạt ngắt toàn cục và ngắt ngoài 0, sử dụng thanh ghi cho phép ngắt IE (bit EA - ngắt toàn cục và EX0 - ngắt ngoài).
- Chọn loại sự kiện ngắt (bit IT0 trong thanh ghi TCON).
- Khai báo chương trình con phục vụ ngắt: khai báo như một hàm thông thường + từ khóa của ngắt.
Ví dụ với ngắt ngoài 0:
void External0_ISR() interrupt 0Chương trình chính sẽ không cần kiểm tra liên tục như polling. Chỉ cần làm các cài đặt trên, bất cứ khi nào xảy ra cạnh xuống trên chân P3.2. Chương trình sẽ nhảy đến ISR - hàm External0_ISR ở trên (nội dung trong đó là đảo trạng thái LED).
👉👉 Source code của chương trình trên Keil C:
👉👉 Kết nối phần cứng trên phầm mềm mô phỏng Proteus
>>>= Follow ngay =<<<
💚 Kênh Youtube Lập trình - Điện tử 💚
Để nhận được những bài học miễn phí mới nhất nhé 😊 Chúc các bạn học tốt 😊
Tags:
8051 Tutorials