Interrupt auf Tastendruck in C

Gast #33973
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
Gast #33974
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
Gast #33975
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren