Ich möchte in Bascom die daten der TWI UHR DS1307 von Dezimal in Hexadezimal umrechnen.
Es existiert auch bereits ein programm, nur das ist sicherlich auch einfacher zu lösen mit zb nem "sub" oder so.
Momentan werden alle daten einzeln umgewandelt.
Habe auch bereits mehrere versuche gemacht aber außer der aktuellen version läuft einfach nix.
Schonmal danke im vorrausCode:$regfile = "m8def.dat" $crystal = 3686400 $baud = 9600 Declare Sub I2cfach() Dim Uhrsec As Byte Dim Uhrmin As Byte Dim Uhrstu As Byte Dim Wotag As Byte Dim Tag As Byte Dim Monat As Byte Dim Jahr As Byte Dim Erg1 As Byte ' Stunden zuweißen Dim Erg1a As Byte Dim Erg2 As Byte Dim Erg2a As Byte Dim Rst1 As Byte Dim Rst2 As Byte Dim Erg3 As Byte ' Minuten zuweißen Dim Erg3a As Byte Dim Erg4 As Byte Dim Erg4a As Byte Dim Rst3 As Byte Dim Rst4 As Byte Dim Erg5 As Byte ' Secunden zuweißen Dim Erg5a As Byte Dim Erg6 As Byte Dim Erg6a As Byte Dim Rst5 As Byte Dim Rst6 As Byte Dim Erg7 As Byte ' Wochentag zuweißen Dim Erg7a As Byte Dim Erg8 As Byte Dim Erg8a As Byte Dim Rst7 As Byte Dim Rst8 As Byte Dim Erg9 As Byte ' Tag zuweißen Dim Erg9a As Byte Dim Erg10 As Byte Dim Erg10a As Byte Dim Rst9 As Byte Dim Rst10 As Byte Dim Erg11 As Byte ' Monat zuweißen Dim Erg11a As Byte Dim Erg12 As Byte Dim Erg12a As Byte Dim Rst11 As Byte Dim Rst12 As Byte Dim Erg13 As Byte ' Jahr zuweißen Dim Erg13a As Byte Dim Erg14 As Byte Dim Erg14a As Byte Dim Rst13 As Byte Dim Rst14 As Byte Config Sda = Portc.4 Config Scl = Portc.5 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 Deflcdchar 0 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32 Cls Cursor Off I2cinit Do I2cfach Locate 1 , 1 Lcd Rst2 ; Rst1 ; ":" Locate 1 , 4 Lcd Rst4 ; Rst3 ; ":" Locate 1 , 7 Lcd Rst6 ; Rst5 ; " " Locate 2 , 1 If Rst7 = 1 Then Lcd "Mo" End If If Rst7 = 2 Then Lcd "Di" End If If Rst7 = 3 Then Lcd "Mi" End If If Rst7 = 4 Then Lcd "Do" End If If Rst7 = 5 Then Lcd "Fr" End If If Rst7 = 6 Then Lcd "Sa" End If If Rst7 = 7 Then Lcd "So" End If Lcd " " Locate 2 , 3 Lcd "," ; Rst10 ; Rst9 ; "." Locate 2 , 7 Lcd Rst12 ; Rst11 ; "." Locate 2 , 10 Lcd "20" ; Rst14 ; Rst13 ; " " Waitms 150 Loop Sub I2cfach() I2cstart I2cwbyte &B11010000 ' <-- Schreibe Adresse des DS1307 (UHR) I2cwbyte &B00000000 ' <-- Ab Anfang lesen I2cstart I2cwbyte &B11010001 ' <-- Lese Adresse des DS1307 (UHR) I2crbyte Uhrsec , Ack I2crbyte Uhrmin , Ack I2crbyte Uhrstu , Ack I2crbyte Wotag , Ack I2crbyte Tag , Ack I2crbyte Monat , Ack I2crbyte Jahr , Nack I2cstop Erg1 = Uhrstu / 16 ' Stunden umwnadeln Erg1a = Erg1 * 16 Rst1 = Uhrstu - Erg1a Erg2 = Erg1 / 16 Erg2a = Erg2 * 16 Rst2 = Erg1 - Erg2a Erg3 = Uhrmin / 16 ' Minuten umwnadeln Erg3a = Erg3 * 16 Rst3 = Uhrmin - Erg3a Erg4 = Erg3 / 16 Erg4a = Erg4 * 16 Rst4 = Erg3 - Erg4a Erg5 = Uhrsec / 16 ' Secunden umwnadeln Erg5a = Erg5 * 16 Rst5 = Uhrsec - Erg5a Erg6 = Erg5 / 16 Erg6a = Erg6 * 16 Rst6 = Erg5 - Erg6a Erg7 = Wotag / 16 ' Wochentag umwnadeln Erg7a = Erg7 * 16 Rst7 = Wotag - Erg7a Erg8 = Erg7 / 16 Erg8a = Erg8 * 16 Rst8 = Erg7 - Erg8a Erg9 = Tag / 16 ' Tag umwnadeln Erg9a = Erg8 * 16 Rst9 = Tag - Erg9a Erg10 = Erg8 / 16 Erg10a = Erg10 * 16 Rst10 = Erg9 - Erg10a Erg11 = Monat / 16 ' Monat umwnadeln Erg11a = Erg11 * 16 Rst11 = Monat - Erg11a Erg12 = Erg11 / 16 Erg12a = Erg12 * 16 Rst12 = Erg11 - Erg12a Erg13 = Jahr / 16 ' Jahr umwnadeln Erg13a = Erg13 * 16 Rst13 = Jahr - Erg13a Erg14 = Erg13 / 16 Erg14a = Erg14 * 16 Rst14 = Erg13 - Erg14a End Sub







Zitieren

Lesezeichen