@Eisbaeeer
ich habe das Programm mal neu sortiert und die Variablen namen geändert, damit das Prog. übersichtilicher ist und man weiß, welche Var. wozu gehört!
Tobias
P.S.: Der Fehler mit FUSING ist noch nicht behoben... 
Code:
'-------------------------------------------------------------------------------
'Konfiguration µC:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
'-------------------------------------------------------------------------------
'Konfiguration LCD
'Config Lcd = 20 * 4
'Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 , E = Portd.7 , Rs = Portb.0
'Cursor Off Noblink
'-------------------------------------------------------------------------------
'16Bit Timer:
Config Timer1 = Timer , Prescale = 64
On Timer1 Timer_irq
Const Timervorgabe = 3036 'also 1 mal pro Sekunde!!!
Enable Timer1
Enable Interrupts
'-------------------------------------------------------------------------------
'Ein- Ausgänge:
Config Pinb.1 = Output
Led Alias Portb.1
Config 1wire = Portb.0
'-------------------------------------------------------------------------------
'Variablen
'Uhr
Dim Sek As String * 800
Dim Sekunden As Single
Dim Minuten As Byte
Dim Stunden As Byte
'Datum
Dim Tag As Byte
Dim Monat As Byte
Dim Jahr As Word
'rechnen
Dim T10 As Integer
Dim T11 As Integer
Dim T20 As Integer
Dim T21 As Integer
Dim T13 As String * 10
Dim T23 As String * 10
Dim T12 As Single
Dim T22 As Single
Dim Id1(8) As Byte
Dim Id2(8) As Byte
Dim Id3(8) As Byte
Dim Ar1(9) As Byte
Dim Ar2(9) As Byte
Dim Ar3(9) As Byte
Dim Tmp10 As Byte
Dim Tmp20 As Byte
Dim W As Byte
Declare Sub Convert_temp
Declare Sub Read_temp10
Declare Sub Read_temp20
W = 1wirecount()
Id1(1) = 1wsearchfirst() 'ID des 1. auslesen
Id2(1) = 1wsearchnext() 'ID des nächsten auslesen
'Id3(1) = 1wsearchnext() 'ID des nächsten auslesen
'-------------------------------------------------------------------------------
'Programm:
'-------------------------------------------------------------------------------
'Start
Sekunden = 0
Minuten = 0
Stunden = 0
Tag = 1
Monat = 6
Jahr = 2007
Do
Sek = Fusing(sekunden , "##")
Gosub Convert_temp
Gosub Read_temp10 'Springe zum Subprogramm
Gosub Read_temp20 'Springe zum Subprogramm
'Gosub Read_temp30 'Springe zum Subprogramm
Print "Uhrzeit: " ; Stunden ; ":" ; Minuten ; ":" ; Sekunden ; " Datum: " ; Tag ; "." ; Monat ; "." ; Jahr
Print "Temp. T13: " ; T13 ; Chr(248) ; "C" ; " / Temp. T23: " ; T23 ; Chr(248) ; "C"
'Print T13 ; " °C"
'Print T23 ; " °C"
If Tag = 32 Then
Tag = 1
Incr Monat
If Monat = 13 Then
Monat = 1
Incr Jahr
End If
End If
Loop
'...............................................................................
'Sprungmarken
'...............................................................................
'Sub Convert_Temp
Sub Convert_temp
1wreset
1wwrite &HCC 'Skip Rom
1wwrite &H44 'Convert Temp
Waitms 750 'alle DS konvertieren
1wreset
End Sub
'...............................................................................
'Sub Read_temp10
Sub Read_temp10
1wreset
1wwrite &H55 'Match Rom
1wwrite Id1(1) , 8 'DS1820 ID senden
1wwrite &HBE 'Read Scratchpad
Ar1(1) = 1wread(9) 'Temp Wert auslesen
1wreset
Tmp10 = Ar1(1) And 1
If Tmp10 = 1 Then Decr Ar1(1)
T10 = Makeint(ar1(1) , Ar1(2))
T10 = T10 * 50
T10 = T10 - 25
T11 = Ar1(8) - Ar1(7)
T11 = T11 * 100
T11 = T11 / Ar1(8)
T10 = T10 + T11
T10 = T10 / 10
T12 = T10 / 10
T13 = Fusing(t12 , "#.#")
End Sub
'...............................................................................
'Sub Read_temp20
Sub Read_temp20
1wreset
1wwrite &H55 'Match Rom
1wwrite Id2(1) , 8 'DS1820 ID senden
1wwrite &HBE 'Read Scratchpad
Ar2(1) = 1wread(9) 'Temp Wert auslesen
1wreset
Tmp20 = Ar2(1) And 1
If Tmp20 = 1 Then Decr Ar2(1)
T20 = Makeint(ar2(1) , Ar2(2))
T20 = T20 * 50
T20 = T20 - 25
T21 = Ar2(8) - Ar2(7)
T21 = T21 * 100
T21 = T21 / Ar2(8)
T20 = T20 + T21
T20 = T20 / 10
T22 = T20 / 10
T23 = Fusing(t22 , "#.#")
End Sub
'...............................................................................
Timer_irq:
Timer1 = Timervorgabe
Toggle Led
Incr Sekunden
If Sekunden = 60 Then
Sekunden = 0
Incr Minuten
If Minuten = 60 Then
Minuten = 0
Incr Stunden
If Stunden = 24 Then
Stunden = 0
Incr Tag
End If
End If
End If
Return
Lesezeichen