hallo jetzt habe ich noch den umgekehrten fall. ich möchte über den port pin P2_B3 bitweise einlesen "16bit" und das ganze in einer int variable int res; speichern. (das ganze wieder in c) könnt ihr mir vieleicht hier auch noch einen typ geben? meine idee: hilf = B2_B3; //1bit res = hilf; res <<=1; hilf =B2_B3; //2bit res=res+hilf; res <<=1; usw. könnte das so funktionieren? gruss tobias
Hallo Das ganze jetzt also umgedreht. for (j=0;j<=7;j++) //Schleife zum einlesen der 8 Bits { daten<<=1; // Variable einmal schieben if ( bit_is_set(PIND,2) // Prüfen ob Bit = 1 { daten++;} //wenn Bit = 1 dann Daten + 1. LSB wird dann 1 } Hoffe das hilft MFG Dieter
hallo mir stellt sich nun folgendes problem. wie gesagt ich möchte die seriellen daten eines ds18s20 lesen. der ds1820 überträgt jetzt aber das lsb zuerst. so wie ich das obige programm verstanden habe schreibe ich zuerst das empfangene msb bit in meine variable.-> shifte die ganze variable nach links.dann zweites bit usw. wie kann ich das nun programmieren wenn ich das lsb zuerst empfange? ich müsste das 8bit meiner variable zuerst beschreiben und dann nach rechts shiften usw. nun weiss ich aber nicht wie ich das programieren soll? kann mir hier vieleicht jemand weiterhelfen? gruss tobias
Hallo Hallo Das ganze jetzt mit LSB first . for (j=0;j<=7;j++) //Schleife zum einlesen der 8 Bits { daten>>=1; // Variable einmal schieben if ( bit_is_set(PIND,2) // Prüfen ob Bit = 1 { daten= Daten + 128;} //wenn Bit = 1 dann Daten + 128 . MSB wird dann 1 } Man schiebt die Daten also jetzt von links nach rechts. MFG Dieter
hallo dieter besten dank nochmal, mein programm (dank deiner hilfe) scheint langsam zu laufen. gruss tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.