So, hier ist der Schaltplan. Ich hatte leider nur Paint zur Handaber ich hoffe, dass man das wichtigste erkennen kann.
Die Wiederstände sind folgende:
drei 220 Ohm --> R1
R2 --> an Pin RB3 --> 800 Ohm
an den anderen Pins --> 4,7k
drei 270 Ohm --> R3 habe ich jetzt nachträglich dran gemacht
R2 sind pull up Wiederstände.
Die Vierecke am Port B sind Pins um später ein Display anzuschliessen.
So, hier kommt der Code:
Also ich habe keinen Grund gefunden warum das so nicht funktioniert.Code:#include <pic1687x.h> #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit)) //------------------------------------------------------------------------- void main (void) { TRISA = 0x00; //Port A = Ausgang mit LEDs TRISB = 0x00011111; //RB0 - RB4 = Eingänge, RB5 - RB7 //= Ausgänge //RB0 brauchen wir im Moment nicht PORTA = 0b00000000; PORTB = 0b00001110; // RB5-RB7 auf Low und RB1-RB4 auf High //RB1 - RB4 auch mit Pull-up Wiederständen auf High //RB4 scheint vertauscht zu sein. Bei 0 ist er High, //bei 1 Low do{ if (RB4 == 0){ //RB4 mit RB5, 6 oder 7 verbunden PORTA = 0b00000001; //Led 1 geht an (das funktioniert richtig) } else if (RB3 == 0){ //funktioniert nur an RB5, 6 oder 7 OHNE //Wiederstand R1!!! PORTA = 0b00000010; //Led 2 geht an } else if (RB2 == 0){ //funktioniert nur an RB5, 6 oder 7 OHNE //Wiederstand R1!!! PORTA = 0b00000000; //Led 1 und 2 aus } else { //Keine Taste gedrück PORTA = 0b00000011; //Led 1 und 2 an (funktioniert richtig) } }while (1); //immer wiederholen }//()
Bei RB1 bis RB3 geht es ja nur wenn man R1 überbrückt.
Grüsse,
Tornado







Zitieren

Lesezeichen