- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 26

Thema: Port Pins als Ein- und Ausgänge

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #21
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.03.2005
    Ort
    Spanien
    Alter
    40
    Beiträge
    398

    Schaltplan und code

    So, hier ist der Schaltplan. Ich hatte leider nur Paint zur Hand aber 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:

    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 
    }//()
    Also ich habe keinen Grund gefunden warum das so nicht funktioniert.
    Bei RB1 bis RB3 geht es ja nur wenn man R1 überbrückt.

    Grüsse,
    Tornado
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken schaltplan_222.jpg  

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen