[HỌC AVR] Bài 2: NGẮT NGOÀI VỚI AVR

0
234

Bài 2: NGẮT NGOÀI VỚI AVR

Chú ý : Source code bài viết dưới đây được biên dịch bằng phần mềm CodeVisionAVR để biên dịch code không lỗi xin vui lòng Download bảnCodeVisionAVR Tại Đây

XIN CHÀO CÁC BẠN!
Trong nội dung bài viết này, tôi xin trình bày để các bạn có thể thiết lập và sử dụng được ngắt ngoài trên họ vi điều khiển AVR, cụ thể là vi điều khiển ATmega8.
I.NGẮT NGOÀI TRÊN Atmega8.
-Ngắt ngoài (External Interrupt) là loại ngắt độc lập với các thiết bị của vi điều khiển. Atmega 8 có hai ngắt ngoài là:
ØINT0 (chân 4: PD2). 
Ø INT1 (chân 5: PD3).
-Trên AVR, Có 3 thanh ghi liên quan đến ngắt ngoài:
·MCUCR: thanh ghi lựa chọn chế độ ngắt cho ngắt ngoài.
Chế độ ngắt ngoài cho INT1:

(Tương tự với INT0: ISC01, ISC00)
·GICR: thanh ghi điều khiển ngắt chung.
ØBit INT1 = 1: Ngắt ngoài 1 được sử dụng.
ØBit INT0 = 1: Ngắt ngoài 0 được sử dụng.
·GIFR: thanh ghi cờ ngắt chung.
II.BÀI TOÁN VÍ DỤ.
Để các bạn hiểu rõ hơn cách sử dụng ngắt ngoài trên vi điều khiển Atmega8, tôi xét bài toán cụ thể sau:
Sử dụng INT1 và INT0:
ØKhi có ngắt ngoài 1: truyền chuỗi “MINHHAGROUP” lên máy tính.
ØKhi có ngắt ngoài 0: truyền chuỗi “BANLINHKIEN.VN” lên máy tính.
1.CÁCH THIẾT LẬP NGẮT NGOÀI BẰNG CodeVisionAVR.
Trình biên dịch CodeVisionAVR đã hỗ trợ để các bạn có thể sử dụng tốt các ngắt ngoài.
Sau khi lập Project mới à chọn CodeWizardAVR à chọn External IRQ

Các bạn tích vào ô để sử dụng INT1, INT0. Chọn chế độ ngắt ở Mode (trên đây tôi chọn chế độ ngắt cạnh xuống).
Trong bài tập này tôi có sử dụng thêm USART để truyền dữ liệu lên máy tính (các bạn có thể hiểu rõ ở các bài sau).
2.CODE MẪU.
Khi ngắt ngoài xảy ra, chương trình sẽ thực hiện yêu cầu của các bạn trong trình phục vụ ngắt của từng ngắt.

Các bạn có thể tham khảo code mẫu và mô phỏng tại đây:

DOWNLOAD FULL SRC+ Mô Phỏng TẠI ĐÂY

Trao đổi học tập

Comments