YEHAAA

ich hab mal einen anderen PIC versucht, und jetzt klappt eigentlich alles, auch wenn ich nicht genau weis warum
kann mir mal bitte jemand meinen code erklären ist aus beispielen zusammenkopiert (besonders die register am anfang versteh ich nicht ganz, weil ohne "CMCON=0b.0000.0111; " reagiert er auf die tasten nicht)

Code:
#include <16F627.h>              // Prozessor-Typ definieren
#pragma config |= 0x3FFF & 0x3FFF & 0x3FFF &0x3FF7 &0x3FFB & 0x3F7F & 0x3FFF & 0x3FED     // Konfigurationswort


void pause(uns16 ms)            // Unterprogramm zum Abwarten einer
{                   // angegebenen Anzahl von Millisekunden
while(ms)           // Schleife verlassen, wenn ms=0 ist
    {
    OPTION = 2;     // Vorteiler auf 8 einstellen
    TMR0 = 131;     // 125 * 8 = 1000 (= 1 ms)
    while (TMR0);       // Abwarten einer Millisekunde
    ms--;           // "ms" mit jeder Millisekunde erniedrigen
    }
}

void main(void)                 // Start des Hauptprogramms
{
TRISB = 0b.1100.0000;           // Pins RB0...RB7 -Ausgänge
TRISA = 0b.1111.1111;
OPTION_REG=0b.1101.0111;
CMCON=0b.0000.0111;
char Zaeler, i,a;             // 8-Bit Variable (0...255)
char Schaltern ;
Sprungmarke:


Schaltern = PORTA & 0b.0000.1111 ; 


switch(Schaltern)
{
    case 1 :    // wenn nur Schalter 1 betätigt ist
     a=250;       // tu dies
    break;

    case 2 :    // wenn nur Schalter 2 betätigt ist
      a=125;      // tu das
    break;

    case 4 :   // wenn  alle Schalter  betätigt sind
      a=50;      // tu jenes
    break;
    case 8 :   // wenn  alle Schalter  betätigt sind
      a=10;      // tu jenes
    break;
}


PORTB = 0b0000.0001 ;           //  Bit 0 von PortB setzen
for (i=0 ;i<5 ;i++)     // folgende Befehle 8-mal wiederholen
    {
    PORTB = PORTB << 1 ;    // 1 kommt ins nächste Bit links
    pause(a);     // jede LED  halbe Sekunde leuchten lassen
    }
for (i=0 ;i<5 ;i++)     // folgende Befehle 8-mal wiederholen
    {
    PORTB = PORTB >> 1 ;    // 1 kommt ins nächste Bit links
    pause(a);     // jede LED  halbe Sekunde leuchten lassen
    }
goto Sprungmarke;       // Alles wiederholen
}
ein problem hab ich noch, jetzt reagiert das programm nur auf einen tastendruck wenn er zufällig grade an der programmstelle ist, wie kann ich das mit interupts machen das er immer reagiert ?