Forum: Mikrocontroller und Digitale Elektronik Interrupt auf Tastendruck in C


von Holger (Gast)


Lesenswert?

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

von Steffen (Gast)


Lesenswert?

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

von Fernando Heitor (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.