Saya telah menggunakan PIC16F877
( lembar data ) untuk beberapa proyek. Untuk interupsi penggantian pin eksternal tunggal, Anda dapat menggunakan PORTB0
interupsi. Tapi sekarang saya perlu mendukung 8 interupsi penggantian pin eksternal independen, dalam satu sirkuit.
Dalam datasheet dikatakan ada 15 interupsi PIC16F877
, tetapi saya kira itu dihitung termasuk timer overflow interupsi dll ... yang tidak berguna dalam kasus ini.
Inilah yang dikatakan lembar data tentang INTCON
daftar.
Bisakah saya memiliki 4 interupsi independen menggunakan bit0 RBIF
,? Ini mewakili perubahan PB7:PB4
. Bagaimana saya bisa mengidentifikasi pin mana yang berubah, apakah dengan membaca nilai port dalam rutin interupsi?
Bahkan saya mendapat jawaban positif di atas, saya butuh 8 interupsi? tentu saja saya masih bisa menggunakan INTE
, untuk PORTB0
perubahan. Lalu 4 + 1 = 5
, tapi bagaimana dengan 3 lainnya? (Namun karena semua 8 peristiwa interupsi memiliki tipe yang sama, 4 + 1 + 3 = 8
masalahnya tampak jelek, bukan?)
Tidak ada tugas berat lain yang diharapkan dari mikrokontroler lain yang memantau 8 pin. (Berbicara tentang tugas-tugas lain, itu harus mempertahankan satu set variabel penghitung yang terpisah dan sering mengirimkan sekitar 4 byte ke PC secara seri)
Setiap saran dipersilahkan. Bahkan jika itu tentang mengubah mikro-controller untuk yang lebih cocok (tapi uh .. jangan bilang pergi dari PIC
s).