@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