PIC16f876: RB Interrupt

Gast #717931
Hallo

Probiere gerade den RB Interrupt, welcher bei jedem Wechsel an RB4-RB7 
einen Interupt auslöst, aus.
Das Programm:

// Include-Files
#include <16f876.h>  // Microcontroller-Definitionen
#include <reg16f876.h>  // Erweiterte Definitionen

// Configuration-Bits Einstellungen
#fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP

// Clockspeed=8MHz fuer die Delays setzen
#use delay(clock=8000000)

#INT_RB          //PORTB Interrupts
void interrupt (void)
  {
  PORTC=0x0F;    //PORTB an PORTC ausgeben
  }
void init (void)        //Initialisierungen
   {
    DDRB=0xFF;        //PORTB als Eingang (Schalter)
    DDRC=0x00;         //PORTC als Ausgang (LED)
  enable_interrupts(GLOBAL);  //Globale Interrupts ein
  enable_interrupts(INT_RB);  //PORTB Interrupts ein
   }
void main(void)        //Main
   {
   init();         //Initialisierungen
  while(1){
    PORTC=0xF0;
   }
}

Am PORTB befinden sich Schalter und am PORTC LEDs.
Meiner Meinung, sollte es vollgendermassen funktionieren:
Wenn alle Schalter 0, dann leuchten die oberen vier LEDs
Wenn Schalter 4,5,6 oder 7 gedrückt wird, sollten für eine kurze Zeit 
die unteren vier LEDs leuchten und dann gleich wieder die oberen vier. 
Das macht es aber nicht!!
--> Wenn Schalter 4,5,6 oder 7 "1" ist, dann bleiben die unteren LEDs 
solange auf "1", bis der Schalter 4,5,6 oder 7 wieder auf "0" ist.

Verstehe ich das RB-Interrupt falsch?!!
Gast
Wie du ein Bit auf '0' setzt, müsste im Compiler-Handbuch stehen (ich 
Programmier in Assembler).

Wahrscheinlich etwas in der Art

  INTCON.RBIF=0;

oder so (falls das RBIF-Flag im INTCON-Register ist - habe gerade kein 
16f876 Datenblatt zur Hand).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.