Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Konvertierung von 8 Bit in Zahl Kategorie: Programmierung (von Tom - 31.03.2004 8:00)
Als Antwort auf Re: Konvertierung von 8 Bit in Zahl von Mathias S. - 30.03.2004 13:49
Ich nutze:
C-Control II Station, OSOPT_V2, OSOPT V3.0
Hallo Mathias,
nicht leichter als das,


function bytetoarr(byte In ,byte out[],byte start)
{
   // Bits bearbeiten
    out[start]= In and 1;
    out[start+1]= (In shr 1) and 1;
    out[start+2]= (In shr 2) and 1;
    out[start+3]= (In shr 3) and 1;
    out[start+4]= (In shr 4) and 1;
    out[start+5]= (In shr 5) and 1;
    out[start+6]= (In shr 6) and 1;
    out[start+7]= (In shr 7) and 1;
}


habs nicht getestet, aber ich denke es sollte laufen,

mfg Tom


> Hallo André,
>
> vielen Dank für deine schnelle Antwort. Sicherlich hast Du noch eine Funktion für den umgekehrten
> Fall zum Einlesen der Ports des PCF8574 und Ausgabe in einem 8 Byte groÃ?em Bytearray.
>
> Danke Mathias S.
>
> > Hallo Mathias,
> >
> > > Ich habe 8 Bytespeicher mit 0 oder 1, diese möchte ich in eine Zahl umwandeln, um sie dann über
> > > den I2-Bus an den PCF8574 zu schicken.
> > > Ist das sinnvoll, oder steuer  ich jeden einzelnen Ausgang am PCF8574.
> > > Ich wollte noch vor dem senden die Zahl speichern um nur zu Senden wenn sich die Zahl geändert hat,
> > > um den I2-Bus nicht zu sehr zu belasten!
> >
> > Zuerst: Der Bus heiÃ?t I²C-Bus(oder I2C, oder IIC)  und nicht I2-Bus.
> >
> > Wenn ich Dich richtig verstehe, dann hast Du ein 8 Byte groÃ?es Bytearray und
> > in jedem Element steht der Zustand für einen Port eines PCF8574.
> > Somit muÃ? Du daraus ein Bitmuster erstellen.
> > Nichts leichter als das:
> >
> > function getStates(byte states[]) returns byte
> > {byte i,d;
> >  d=0;
> >  for i=0 ... 7  d=d or ((states[i]!=0) and (1 shl i));
> >  return d;
> > }

> >
> > MfG André H.
> >




    Antwort schreiben


Antworten: