@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







Zitieren

Lesezeichen