#include #byte PORTB=0xF81 //ορισμός των θυρών με την θέση τους στην μνήμη #byte PORTD=0xF83 // Δήλωση συναρτήσεων, global μεταβλητών void init (void); void rb (void); void main(){ init(); //κλήση της ρουτίνας αρχικοποίησης while (TRUE) {;} } //ρουτίνα αρχικοποίησης void init (void){ set_tris_b(0xff); // Καθορισμός της πόρτας Β ως εισόδου set_tris_d(0x00); // Καθορισμός της πόρτας D ως εξόδου enable_interrupts(GLOBAL); //Ενεργοποίηση του γενικού διακόπτη διακοπών enable_interrupts(INT_RB); //Ενεργοποίηση διακοπής από αλλαγή //κατάστασης στους ακροδέκτες RB4, RB5, RB6, RB7 PORTD=0x00; //αρχική τιμή 0 στην θύρα D } //ρουτίνα διακοπής #INT_RB void rb (void){ if(input(PIN_B0)==1){ delay_ms(3000); //Αναμονή για 3 δευτερόλεπτα if(input(PIN_B0)==1){ //Αν συνεχίσει να είναι ενεργοποιημένος //ο συναγερμός ενεργοποιείται η σειρήνα output_high(PIN_D0);//Ενεργοποίηση σειρήνας delay_ms(3000); //αναμονή για 3 sec output_low(PIN_D0);//Απενεργοποίηση σειρήνας } } }