Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Hex Werte Kategorie: Programmierung Basic (von muefra - 21.01.2008 18:21)
Als Antwort auf Re: Hex Werte von PeterS - 20.01.2008 23:28
Ich nutze:
C-Control Pro Mega32, CC-Pro 32 Application Board
Hallo Peter,

nicht ganz, im Bild siehst du das Clock-Register vom DS 1629

(bei mir geht das Bild nicht, hier als LINK)
(Link geht auch nicht dann hier direkt www.muefranet.de/pics/DS1629_clock.jpg)
Ich muss die Werte für die Zeit umwandeln!
z.B. nach sekunde 9 kommte sekunde 16 was 10 ist, ist ja laut Bild auch ok so
Hab mir folgendes einfallen lassen:

.....
    I2C_Start()                 'Start
    I2C_Write(&H9F)             'Command write Config "read"
    Tmin=I2C_Read_ACK()         'Read msb mit Ack
    Th=I2C_Read_ACK()           'Read msb mit Ack
    Tday=I2C_Read_ACK()         'Read msb mit Ack
    Tdate=I2C_Read_ACK()        'Read msb mit Ack
    Tmonth=I2C_Read_ACK()       'Read msb mit Ack
    Tyear=I2C_Read_NACK()       'Read msb mit Ack
    I2C_Stop()                  'Stop

    Tmin = rechen(Tmin)
    Th = rechen(Th)
    Tdate = rechen(Tdate)
    Tmonth = rechen(Tmonth)
    Tyear = rechen(Tyear)

.....

Sub rechen(TAUSCH As Integer) As Integer
    If TAUSCH > 73 Then
    TAUSCH = TAUSCH - 6
    End If
    If TAUSCH > 57 Then
    TAUSCH = TAUSCH - 6
    End If
    If TAUSCH > 41 Then
    TAUSCH = TAUSCH - 6
    End If
    If TAUSCH > 25 Then
    TAUSCH = TAUSCH - 6
    End If
    If TAUSCH > 9 Then
    TAUSCH = TAUSCH - 6
    End If
    Return TAUSCH
End Sub

.....

vielleicht geht es auch noch einfacher, ich bin halt kein Profi :-)
Gruß Frank

> Ach so, Du möchtest von BCD nach binär wandeln. Wie wärs mit:
>
> int bcd, bin;
> bin= (bcd>>4) * 10 + (bcd & 0xf);
>
>
> Gruss Peter
>
> > Danke Peter für die Antwort, aber damit kann ich den Wert nur im Debugmodus Ausgeben.
> > Ich möchte den Wert aber weiterverarbeiten. In dem Moment wo du geantwortet hast ist mir die Idee
> > gekommen, es mit einer verschachtelten IF Reihe zu lösen. Das Bau ich dann in eine Funktion ein und
> > kannn es mehrfach nutzen.
> >
> > Danke Frank
> >
> > > Hi,
> > >
> > > wenn der Wert offenbar BCD kodiert ist, dann kann man mit Msg_WriteHex() den Wert ausgeben.
> > >
> > > Gruss Peter
> > >
> > > > Hallo,
> > > >
> > > > ich habe ein Programm zur Temperaturmessung mit dem DS 1629 geschrieben, funzt soweit auch nur
> > > > beim Auslesen der Zeit komm ich nicht weiter.
> > > > Mit dem Befehl Tmin=I2C_Read_ACK() lese ich die Zeit aus, nur:
> > > >
> > > > BIT0 bis BIT3 -> einer Minuten
> > > > BIT4 bis BIT6 -> zehner Minuten
> > > >
> > > > Mit dem Befehl Str_WriteFloat(Tmin,1,Aus1,0) Kommt bei (min=59) 89 raus, was Hex 59 ist (0101  1001)!
> > > >
> > > > Wie kann ich die Hex-Zahl in einen Text umwandel, ohne das erst hex nach Dezimal und dann Text1
> > > >
> > > > Oder hab ich hier einen Denkfehler?
> > > >
> > > > Danke Frank


    Antwort schreiben


Antworten: