Ebben az esetben is ismét jobban látható a struktúra C nyelv esetén, bár mint már említettem korábban, nem igen különbözik a sima RB0/INT-től. Íme a kód.
#include <16F877.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD
#use delay(clock=4000000)
#byte PORTD = 0x08 //PORTD regiszterre mutató pointer
//================================================================
#int_RB
void RB_isr() {
//================================================================
PORTD ^= 0xFF;
}
//================================================================
void main(){
//================================================================
set_tris_d(0b00000000); //PORTD kimenet
output_d(0b01010101); //LED bekapcs
set_tris_b(0b11110000); //PORTB4:7 bemenet
enable_interrupts(INT_RB); //RB4:7 megszakítás be
enable_interrupts(GLOBAL); //GIE bekapcsol
for(;;) {
//Semmit nem csinálunk
}//for
}//main
Program forráskód és lefordított HEX: rb47_ccs.zip
Ezután nézzük, hogy lehet életet lehelni az időzítő modul(ok)ba.
A cikk még nem ért véget, lapozz!
Értékeléshez bejelentkezés szükséges!