Nirgens =D>
Einfach nochmal das Funktionsergebnis statt direkt aufs Lcd in eine Variable und dann erst ausgeben.
Ich ändere bei der Gelegenheit mal den Thread-Titel.
Danke Dir für den Schubs 
Das Programm gibt nun ganz simpel nacheinander die Temperaturwerte und Chip-IDs der Temperatursensoren aus.
Code:
'------------------------------------------------------------------------------
' I2C: Sda = Portc.4 Scl = Portc.5
' UART: RxD = Portd.0 TxD = Portd.1
'------------------------------------------------------------------------------
$regfile = "m32def.dat"
$crystal = 8000000
Declare Function Get_temp(ts As Byte) As Integer
Dim ___lcdno As Byte 'Umschaltbyte für Anzeige :
Config Lcd = 20 * 4 'Anzeigemodus 40 x 4 Zeichen
Config Lcdpin = Pin , E = Portb.6 , Rs = Portb.7 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E2 = Portb.5
___lcdno = 0 'auf Chip 1 schalten
Initlcd 'die beiden oberen Zeilen initialisieren
Cls 'die beiden oberen Zeilen löschen
___lcdno = 1
Initlcd
Cls
Config 1wire = Portc.6
Dim Ar(8) As Byte
Dim I As Byte
Dim Sc(9) As Byte
Dim Sensor As Byte
Dim T As Integer
Dim Test As Byte
Dim Temp2 As Integer
For Sensor = 1 To 1wirecount()
If Sensor = 1 Then Ar(1) = 1wsearchfirst() Else Ar(1) = 1wsearchnext()
Locate 1 , 1 : Lcd "Sensor" ; Sensor ; " ";
For I = 1 To 8
Lcd Hex(ar(i))
Next
Locate 2 , 1
Test = Ar(1)
Temp2 = Get_temp(test)
Temp3 = Str(temp2)
Lcd Temp2
Wait 3
Next Sensor
Function Get_temp(ts As Byte)
1wreset
1wwrite &HCC 'skip rom (an alle)
1wwrite &H44 ' messen
Waitus 200 'zeit zum messen geben
1wverify Ts ' Den gewünschten Sensor auswählen
1wwrite &HBE ' Kommando READ SCRATCHPAD
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Makeint(sc(1) , Sc(2)) ' Die Nachkommastelle entfernen
T = T / 2 ' Temperatur in ganzen Grad Schritten ausgeben
End If
Get_temp = T
End Function
End
Lesezeichen