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ärenist aus beispielen zusammenkopiert (besonders die register am anfang versteh ich nicht ganz, weil ohne "CMCON=0b.0000.0111; " reagiert er auf die tasten nicht)
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 ?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 }







Zitieren

Lesezeichen