Gast
#284883
Hallo, Ich mache gerade meine ersten Schritte mit WinAVR und C. Ich habe bereits einzelne Ports erfolgreich angesprochen, nun zu meiner Frage Problem: Ich möchte gerne bei einem Atmage8 ein "virtuelles Port" durch C erstellen. Genau genommen so: PB.4 = Bit1 PB.5 = Bit2 PC.0 = Bit3 PC.1 = Bit4 PC.2 = Bit5 PC.3 = BIT6 PC.4 = Bit7 PC.5 = Bit8 Es soll dann die Möglichkeit bestehen das virtuelle Port mit einem Byte zu füttern, und dieses Byte soll dann richtig an den einzelnen Pins von Portb und Portc rauskommen. Ich war bereits fleißig und hab gegoogelt und auch ihr im Forum folgenden Beitrag gefunden: http://www.mikrocontroller.net/forum/read-2-219856.html#new darin steht folgende Lösung: #define MYPORT ((PINB & 0x01)<<8 | (PINB & 0x04)<<7 | ....) uint8_t bla; bla = MYPORT; Leider, da ich c anfänger bin versteh ich das leider nicht ganz: (PINB & 0x01)<<8 Was bedeutet diese Zeile den genau? (PINB & 0x01) bedeutet dies, dass Pinb.0 angesprochen werden soll? ...<<8 bedeutet dies, dass bit8 von myport zugeordnet wird? Demnach sollte das bei mir dann so gehen?: #define MYPORT ((PORTC & 0x20)<<8 | (PINC & 0x10)<<7 | (PINC & 0x08)<<6 | (PINC & 0x04)<<5 | (PINC & 0x02)<<4 | (PINC & 0x01)<<3 | (PINB & 0x20)<<2 | (PINB & 0x10)<<1 | ) Stimmt das?Danke schon mal!