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 ?
Lesezeichen