Hallo, habe drei Taster (an RC0,RC1 und RC2 jeweils einen) an einen PIC16f876 angeschlossen. Das Signal liegt stängig auf logisch eins und wird durch Tastendruck auf logisch null gezogen. Mit if(!Taste1) { printf("Taste1 wurde gedrückt") } funktioniert die Taste. Jedoch würde ich mir wünschen, dass mein Programm unterbrochen wird (sprich ein Interrupt ausgelöst wird), wenn eine Taste gedrückt wird. Also so etwa: if (Interrupt_Taste1) { printf("Taste1 wurde gedrückt") } Doch wie stell ich das an? Keine große Ahnung von Interrupts! MFG Holger
Mit PORTC funktioniert das nicht, es sei denn du verwendest einen zyclischen Timerinterupt. PORTB4 .. PORTB7 können aber einen sog. on-Change-Interupt auslösen. Die Details dazu findest du im Datenblatt unter 4.2. MfG Steffen
Wenn du wirklich durch ein Tastendruck ein Interrupt auslösen musst, dann kannst du nur bestimmte Eingänge dafür verwenden. An RB0 ist der externe Interrupt vorhanden. Dort hast du die Möglichkeit bei steigender oder fallender Flanke ein Interrupt auszulösen. An RB4-RB7 hast du den "Interrupt-on-Change" (RBIE). Wenn an einen der 4 Pins ein Signalwechsel passiert, wird ein Interrupt ausgelöst. Gruß Fernando
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.