So, jetzt habe ich es hinbekommen, wobei ich sagen muss, dass ich nicht genau verstanden habe warum \/
Also Minusgrade werden dann übermittelt wenn das letzte Bit im Highbyte (also Bit 7) = 1 ist oder ?
Und 0,5 werden dann nochmal dazugezählt wenn Bit 7 im LowByte = 1 ist ?
Wenn das so richtig ist habe ich aber immernoch nicht verstanden warum mit diesesn Operatoren "and" das Ganze nochmal invertiert wird ?!
Tut mir leid wenn ich mich schrecklich blöd anstellen sollte aber irgendwie habe ich da einen riesen Knoten im Hirn =)
Hier ist noch mein Code, für den Fall es juckt jemand in den Fingern mir zu zeigen warum man mit so einem winzigen Code so viel Speicher verbraten kann... Ich bin gerne bereit zu lernen.
Code:$regfile = "M8def.dat" $crystal = 4000000 $baud = 9600 Declare Sub Showtemperatur() Const Lm75slaveread = &B10010001 Dim Lm75high As Byte Dim Lm75low As Byte Dim Temperatur As Integer Dim Nachkommastelle As String * 2 Dim Eeadr As Byte Dim Temp As Integer Dim Speicher As Single Dim Tempsing As Single Dim Anzeige As String * 5 Config Sda = Portc.4 Config Scl = Portc.5 Config Lcd = 16 * 1a Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.2 , Rs = Portb.1 Deflcdchar 0 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32 Cls Cursor Off I2cinit Do Showtemperatur Waitms 200 Loop Sub Showtemperatur() I2cstart I2cwbyte Lm75slaveread I2crbyte Lm75high , Ack I2crbyte Lm75low , Nack I2cstop If Lm75high > 127 Then Temperatur = Makeint(lm75high , &HFF) Else Temperatur = Lm75high End If Lm75low = Lm75low And 128 If Lm75low > 0 Then Nachkommastelle = ".5" Else Nachkommastelle = ".0" End If Speicher = Temperatur Tempsing = Val(nachkommastelle) Speicher = Speicher + Tempsing Anzeige = Fusing(speicher , " ##.&") 'Print Tempsing ; "-_-" ; Locate 1 , 1 Lcd "Temp.:" ; Locate 2 , 1 Lcd Fusing(speicher , " ##.&") ; Chr(0) ; End Sub![]()
Ich hoffe ihr könnt jetzt noch gut schlafen
MfG Paul







Zitieren

Lesezeichen