Ngắt trong 8051

Theo em hiểu thì Ngắt Timer sẽ kích hoạt khi cờ tràn TF = 1;
Khi đó hàm ngắt với được gọi để hoạt động.
vậy sao trong hình dưới đây, cổng P2 tự hoạt động vậy ?

Thì thằng Timer 0 nó cứ đếm, tràn thì bật cờ ngắt rồi reset về 0 đếm tiếp.

em thấy mấy cái công tắc kia nó vẫn cứ nhảy mà. cổng O2 chỉ hoạt động khi ngắt đc kich hoạt.sao trong hình nó kích hoạt cùng lúc với cái đèn bên P1 luôn, như kiểu song song luôn.

Công tắc nhấn và update từ P0 sang P1 là việc của hàm main.
Nhấp nháy led trên P2 là việc của hàm interrupt.
Khi có interrupt, main bị dừng và hàm interrupt thực hiện. Kết thúc hàm interrupt thì main tiếp tục chạy.

Đấy là ý nghĩa của từ interrupt, tức là bị ngắt quãng. Ở đây hàm main bị ngắt quãng mỗi khi có interrupt xảy ra.

Nhưng do hàm ngắt thực hiện cực kỳ nhanh ( chắc cỡ micro giây) nên không có cảm giác main bị dừng mà có cảm giác 2 đứa nó chạy song song. Thực tế hàm ngắt chỉ thực hiện trong khi P2 đổi trạng thái mà thôi.
Bây giờ cho hàm ngắt làm nhiều việc hoặc cho tần số ngắt tăng lên cao sẽ thấy ngay main bị chậm lại.

Do vậy khi làm với ngắt, phải làm sao để tần số xảy ra ngắt là thấp nhất, công việc của hàm ngắt ít nhất để nó chạy nhanh nhất mà không làm chậm hàm main.

OK thanks sếp nhé. :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?