Interrupt auf Tastendruck in C

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

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.