
Chương 10
Ngắt (Interrupts)
Nguyễn Lý Thiên Trường 1
Tài liệu tham khảo:
1. Chương 10: Ngắt (Interrupts) (Giáo trình VXL)
2. Muhammad Ali Mazidi, AVR Microcontroller and Embedded Systems: Using Assembly and C,
Pearson New International Edition, 2014.
3. Datasheet ATmega324P
4. https://nicerland.com/avr/
5. http://www.hocavr.com/
6. https://www.youtube.com/watch?v=Fr2K9pzec8g&list=PLgwJf8NK-
2e55CdbY_WnY6pejPHoojCkJ

Nguyễn Lý Thiên Trường 2
10.1 Giới thiệu
10.2 Tổ chức ngắt của ATmega324P
10.3 Lập trình ngắt Timer
10.3.1 Ngắt Timer tràn
10.3.2 Ngắt kết quả so sánh Timer, bắt ngõ vào Timer1
10.4 Lập trình ngắt USART
10.5 Lập trình ngắt ngoài
10.5.1 Ngắt ngoài ngõ INT2:INT0
10.5.2 Ngắt đổi trạng thái chân (PCINT: Pin Change
Interrupt)

10.1 Giới thiệu
3
Nguyễn Lý Thiên Trường
▪Ngắt cho phép đáp ứng tức thời 1 yêu cầu,
gọi là yêu cầu ngắt (interrupt request),
chương trình chính sẽ tạm thời dừng và
chuyển sang phục vụ ngay đoạn chương
trình đáp ứng theo yêu cầu ngắt, gọi là
trình phục vụ ngắt (ISR: Interrupt Service
Routine).
▪Sau khi thực hiện ISR xong, MCU sẽ trở về
tiếp tục thực hiện chương trình chính tại
điểm dừng trước đó.
➢Ngắt là một tác động bất đồng bộ, có thể điều khiển chương
trình chính dừng bất kỳ tại thời điểm nào để chuyển sang trình
phục vụ yêu cầu ngắt (ISR).

Nguyễn Lý Thiên Trường 4
So sánh giữa ngắt (Interrupt) và hỏi vòng (Polling)
❖Chương trình hỏi vòng không đáp ứng được hai vấn đề quan
trọng:
1. Không đáp ứng được yêu cầu tức thời.
2. MCU mất thời gian chờ (ví dụ: chờ trạng thái nút nhấn, cờ
báo,…) mà không xử lý được các công việc khác → hiệu suất
làm việc của MCU không cao.
❖Chương trình sử dụng ngắt đáp ứng được hai vấn đề quan
trọng:
1. Đáp ứng được yêu cầu tức thời (bất đồng bộ) bất kỳ lúc nào
xảy ra yêu cầu ngắt.
2. MCU không mất thời gian chờ các dấu hiệu xảy ra ngắt → hiệu
suất làm việc của MCU rất cao.

Nguyễn Lý Thiên Trường 5
So sánh giữa ISR (chương trình phục vụ ngắt) và CTCon
ISR và chương trình con khác biệt nhau ở các điểm sau:
▪ISR lưu các trạng thái yêu cầu ngắt hiện hành (nếu có) và mức ưu tiên ngắt.
▪Kết thúc ISR là lệnh RETI (Return from Interrupt), thay vì RET đối với chương
trình con. Ngoài việc phục hồi lại địa chỉ điểm dừng trong chương trình
chính, còn phục hồi lại các trạng thái yêu cầu ngắt hiện hành và mức ưu tiên
ngắt được lưu trước đó.
▪ISR bắt đầu tại một địa chỉ cố định của Flash ROM gọi là vector ngắt (do nhà
sản xuất quy định), còn chương trình con có thể bắt đầu tại bất kỳ địa chỉ
nào trong vùng Flash ROM khả dụng.
▪ISR có thể thực hiện tại bất kỳ thời điểm nào trong chương trình chính khi có
tín hiệu yêu cầu ngắt, miễn là có khai báo cho phép ngắt tương ứng. Còn
chương trình con chỉ thực hiện khi có lệnh gọi, nghĩa là phải theo dạng hỏi
vòng.