also du hast 2 möglichkeiten.
entweder: du benutzt am beginn des programms StartSwitch(). dann brauchst du nur abzufragen ob die variable switched = 1 ist. diese wird dann 1, wenn ein taster gedrückt wurde (und muss von hand auf 0 zurückgesetzt werden).
oder
du änderst in der asuro.c SIGNAL (SIG_INTERRUPT1) um. dann wird das, was hier drin steht, sofort ausgeführt, wenn ein taster gedrückt wurde. (um den originalzustand widerherstellen zu können, empfehle ich den originalen code nur auszukommentieren und nicht zu entfernen). dann brauchst du KEIN switched als variable, und auch KEIN StartSwitch. es wird einfach, sowie ein aster gedrückt wurde, das ausgeführt was in der schleife steht.
wichtig hierbei: mit sei(); werden alle interrupts aktiviert; und mit cli(); werden alle interrupts deaktiviert (für gewisse phasen des programmes in denen eine unterbrechung ungünstig wäre).
Hier ein beispielprogramm:
im programm wird die led nur immer wieder auf grün gesetzt. wird eine taste gedrückt, wird durch die interruptroutine die led rot gemacht.Code:#include "asuro.h" int main(void) { Init(); sei(); while(1){ StatusLED(GREEN); }; return 0; } ANPASSUNG DER ASURO.C: SIGNAL (SIG_INTERRUPT1){ StatusLED(RED); }
Lesezeichen