Forum: Mikrocontroller und Digitale Elektronik Bascom: Hexwert am Pin ausgeben


von Dirk (Gast)


Lesenswert?

Hi,

ich wollte ein Hexwert als 8 Bit an einem Port Pin Serial ausgeben. 
Leider geht es nich mit dem Shiftoutbefehl, da ich den High Pegel ca 1 
ms und den Low Pegel 546 µs halten muss.
Ich habe leider keine richtige Idee wie ich das anstellen soll. Ich 
muesste also den Hexwert in Bin umwandeln und dann Bitweise mit den 
Zeitwerten ausgeben. Es scheitert bei mir aber an der Umwandlung von HEX 
zu Bin, weil sich der Hexwert aendert . Ich will kein komplettes 
Programm , sondern eher eine Hilfe (Ansatz) sonst versteh ich es nicht.


Beispiel:
      
 | |  | |
 | |  | |
-   --   --  usw.

von John Doe (Gast)


Lesenswert?

Durchs Carrybit shiften und je nach Carry die entsprechende Verzögerung 
aufrufen.

von Dirk (Gast)


Lesenswert?

Hi,

leider ist mein wissen noch zu klein um dir zufolgen :(

von John Doe (Gast)


Lesenswert?

Beim 8051er (Du schreibst nicht, welchen MC Du benutzt) nimmst Du zum 
Beispiel rlc oder rrc zum Rotieren des Hexwertes durch das Carry-Bit und 
mit jc oder jnc fragst Du das nach jeder Rotation ab und gibst dann das 
entsprechende Signal aus.
Du kannst auch ganz trivial mit jb und jnb jedes einzelne Bit abfragen 
und dann das entsprechende Signal ausgeben, wenngleich das wenig elegant 
ist...

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo Dirk

Man muß nur testen testen, ob das Bit der Variable 1 oder 0 ist. Dann 
kann man entsprechend darauf reagieren.

Hier ein kleines Beispiel

Dim Daten As Byte
dim a as byte
daten = 200

For A = 1 to 8  'Schleife zum ausgeben von 8 Bits
If Daten.0 =then  'Bit 0 der Variable testen
Set  portd .1
else
Reset Portd . 1
End If
Rotate daten,right,1  'Variable eins nach rechts schieben, nächste BIT 
der Variable wird eingestellt.
Next A

MFG
Dieter

von Dirk (Gast)


Lesenswert?

Hi,

ich danke dir Dieter. Das andere scheint assembler zu sein trotzdem 
danke.


Mfg

Dirk

von Dirk (Gast)


Lesenswert?

Hi,

nochmals danke ich wusste nicht das ich mit .0 den einzelnen Bit abfrage 
.

Mfg

Dirk

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
Noch kein Account? Hier anmelden.