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
Lesezeichen