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.
Durchs Carrybit shiften und je nach Carry die entsprechende Verzögerung aufrufen.
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...
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
Hi, ich danke dir Dieter. Das andere scheint assembler zu sein trotzdem danke. Mfg Dirk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.