Forum: Mikrocontroller und Digitale Elektronik MPLAP C18 Interrupt


von Matthias (Gast)


Lesenswert?

Hallo,

ich habe eine Frage zur C-Programmierung und Interrupts. Ich habe schon 
das User Manual gelesen und auch einen Teil - Code davon kopiert, aber 
leider funktioniert es nicht so recht.
Ziel ist es über einen Taster an RB5 die LEDs an PORTD zu steuern.

#include <p18F458.h>
#include <p18F458_Config.h>
//#include <p18F458_init.h>
#define NUMBER_OF_LEDS 8


static unsigned char s_count = 0;
void rb_handler (void);

#pragma code rb_interrupt = 0x8
void rb_int (void)
{
        _asm goto rb_handler _endasm
}
#pragma code

#pragma interrupt rb_handler
void rb_handler (void){
  static unsigned char led_display = 0;

  INTCONbits.RBIF = 0;

  s_count = s_count % (NUMBER_OF_LEDS + 1);
  led_display = (1 << s_count++) - 1;

  PORTD = led_display;
  Delay10KTCYx(250);
 }

void main (void) {
  TRISD = 0;
  PORTD = 0;

  INTCONbits.GIE = 1;
  INTCONbits.INT0IE = 1;
  INTCON2bits.RBIP = 1;

while (1)
 {
   }

}


Leider funktioniert es nicht so recht. Kann mir jemand sagen was daran 
falsch ist????

Danke

Matthias

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.