Hallo ich hab in der Schule ein Projekt laufen wo ich Temperatur von 3 iButtons Typ 1920 (Temperatur iButtons) über einen Microkontroler auf eien Ledanzeige ausgeben muss. Ich bekomme es hin das die Temperaturvon 1 iButton ausgegeben wird nur habe das Problem das Program so umzuschreiben das es mit den dreien funktioniert. Es wäre schon wenn mir da jemand helfen könnte. Danke
' ibutton Test Program $regfile = " m8535.dat" $crystal = "800000000" $baud = 9600 Config 1wire = Portb.0 Const Parasitepower = 1 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4 Config Lcd = 16 * 2 Cls Cursor Off Dim B As Byte Wire Bus Do Rom_data(1) = 1wsearchfirst() If Err = 1 Then Exit Do For B = 1 To 6 Next Goto Temperatur1 Do Romdata(1) = 1wsearchnext() If Err = 1 Then Exit Do For B = 1 To 6 Next Goto Temperatur2 Loop Loop Temperatur1: Const Ds1920 = &H10 Const Skip_rom = &HCC 'Adressiere einen Ibutton mit 64bit Const Read_rom = &H33 'Lese Rom Const Convertt = &H44 'Start Temperaturmessung Const Read_ram = &HBE 'Lese Scratchpad RAM Const Write_ram = &H4E 'Schreibe Scratchpad RAM Const Copy_ram = &H48 'Kopiere Scratchpad RAM Const Recall_ee = &HB8 'Kopiere EEprom nach RAM Dim Family_code As Byte Dim Serial_number(6) As Byte Dim Crc As Byte Dim Scratch(9) As Byte Dim I As Byte Dim Temp As Word Dim Temp1 As Integer Dim Stemp As Single 1wreset If Err = 1 Then Exit Do 1wwrite Read_rom Family_code = 1wread() For I = 1 To 6 Serial_number(i) = 1wread() Next Crc = 1wread() If Family_code <> Ds1920 Then Exit Do 1wwrite Convertt 'starte Temperaturmessung #if Parasitpower Wait 2 'warte Temperaturmessung ab #else Do Temp = 1wread() Loop Until Temp = &HFF 'warte bis Temperaturmessung beendet ist #endif 1wreset 'Reset iButton If Err = 1 Then Lcd "iButton ERROR" 1wwrite Skiprom 'überspringe Adressierung 1wwrite Read_ram 'lese Scratch Pfad For I = 1 To 9 Scratch(i) = 1wread() Next Temp = Scratch(2) Shift Temp , Left , 8 Temp = Temp + Scratch(1) 'Word Format Temp1 = Temp ' 1234567890123456 'Integer Format 'Lcd "Der Temp.=" ; Temp ; "Counts." Temp1 = Temp1 / 2 'Lcd "Die gemesseTemp. " ; Temp1 ; "Grad" Stemp = Scratch(8) - Scratch(7) 'Interpolation Stemp = Stemp / Scratch(8) Stemp = Stemp + Temp1 Stemp = Stemp - 0.25 ' 1234567890123456 Cls Lcd "Die exakt gemess" Locate 2 , 1 Lcd "ene Temperatur ="; Wait 5 Cls Locate 1 , 1 Lcd Fusing(stemp , "#.##"); Lcd Chr($df) Wait 2 Loop Cls ' 1234567890123456 Lcd "Kein Sensor konta" Locate 2 , 1 Lcd "ktiert" End Temperatur2: Const Ds1920 = &H10 Const Skip_rom = &HCC 'Adressiere einen Ibutton mit 64bit Const Read_rom = &H33 'Lese Rom Const Convertt = &H44 'Start Temperaturmessung Const Read_ram = &HBE 'Lese Scratchpad RAM Const Write_ram = &H4E 'Schreibe Scratchpad RAM Const Copy_ram = &H48 'Kopiere Scratchpad RAM Const Recall_ee = &HB8 'Kopiere EEprom nach RAM Dim Family_code As Byte Dim Serial_number(6) As Byte Dim Crc As Byte Dim Scratch(9) As Byte Dim I As Byte Dim Temp As Word Dim Temp1 As Integer Dim Stemp As Single 1wreset If Err = 1 Then Exit Do 1wwrite Read_rom Family_code = 1wread() For I = 1 To 6 Serial_number(i) = 1wread() Next Crc = 1wread() If Family_code <> Ds1920 Then Exit Do 1wwrite Convertt 'starte Temperaturmessung #if Parasitpower Wait 2 'warte Temperaturmessung ab #else Do Temp = 1wread() Loop Until Temp = &HFF 'warte bis Temperaturmessung beendet ist #endif 1wreset 'Reset iButton If Err = 1 Then Lcd "iButton ERROR" 1wwrite Skiprom 'überspringe Adressierung 1wwrite Read_ram 'lese Scratch Pfad For I = 1 To 9 Scratch(i) = 1wread() Next Temp = Scratch(2) Shift Temp , Left , 8 Temp = Temp + Scratch(1) 'Word Format Temp1 = Temp ' 1234567890123456 'Integer Format 'Lcd "Der Temp.=" ; Temp ; "Counts." Temp1 = Temp1 / 2 'Lcd "Die gemesseTemp. " ; Temp1 ; "Grad" Stemp = Scratch(8) - Scratch(7) 'Interpolation Stemp = Stemp / Scratch(8) Stemp = Stemp + Temp1 Stemp = Stemp - 0.25 ' 1234567890123456 Cls Lcd "Die exakt gemess" Locate 2 , 1 Lcd "ene Temperatur ="; Wait 5 Cls Locate 1 , 1 Lcd Fusing(stemp , "#.##"); Lcd Chr($df) Wait 2 Loop Cls ' 1234567890123456 Lcd "Kein Sensor konta" Locate 2 , 1 Lcd "ktiert" End
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.