Tôi đã sử dụng PIC16F877
(biểu dữ liệu ) cho một số dự án. Đối với một ngắt thay đổi pin bên ngoài duy nhất, bạn có thể sử dụng PORTB0
ngắt. Nhưng bây giờ tôi cần hỗ trợ 8 ngắt thay đổi pin độc lập bên ngoài, trong một mạch đơn.
Trong biểu dữ liệu có ghi 15 ngắt PIC16F877
, nhưng tôi đoán chúng được tính bao gồm cả ngắt tràn bộ đếm thời gian, v.v ... vô dụng trong trường hợp này.
Đây là những gì datasheet nói về INTCON
đăng ký.
Tôi có thể có 4 ngắt độc lập bằng bit0 RBIF
không? Nó đại diện cho sự thay đổi trong PB7:PB4
. Làm thế nào tôi có thể xác định pin nào đã thay đổi, bằng cách đọc giá trị cổng trong thói quen ngắt?
Ngay cả tôi nhận được câu trả lời tích cực ở trên, tôi cần 8 ngắt? Tất nhiên tôi vẫn có thể sử dụng INTE
, để PORTB0
thay đổi. Sau đó 4 + 1 = 5
, nhưng 3 người khác thì sao? (Tuy nhiên, tất cả 8 sự kiện ngắt đều cùng loại, 4 + 1 + 3 = 8
điều này có vẻ xấu, phải không?)
Không có nhiệm vụ nặng nề nào khác được mong đợi từ bộ điều khiển vi mô khác giám sát 8 chân. (Nói về các tác vụ khác, nó sẽ phải duy trì một tập hợp các biến đếm riêng biệt và thường xuyên truyền khoảng 4 byte cho PC một cách an toàn)
Mọi góp ý đều được chào đón. Ngay cả khi đó là về việc thay đổi bộ điều khiển vi mô cho phù hợp hơn (nhưng uh .. đừng bảo tôi tránh xa PIC
s).