mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8 Bit Serial out


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

leider habe ich ein kleines Verstaendisproblem. Ich moechte per ASM 8
Bit Serial ausgeben. Dazu habe ich diese Subroutine geschrieben, aber
leider funktioniert es nicht richtig. Ich hoffe jemand kann mir kurz
auf die Spruenge helfen.

Mfg

Dirk

ldi txcount, 0x08


txrrf:
ror outdata      ; Bit shiften Rechts
dec txcount      ; Counter erhoehen
tst txcount      ; if counter = 0 then
breq zero      ; goto zero
rjmp txnext      ; else goto txnext
zero:
ret        ; Return

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Punkt A : Wohin willst Du das ausgeben ?
Punkt B : Was genau funktioniert nicht ?

MfG, Khani

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dirk

Sieht nicht falsch aus, aber Du machst doch noch keine Ausgabe in der
Rutine. Du schiebst nur outdata nach rechts.

MfG  Manfred Glahe

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi txcount, 0x08

txrrf:
ror outdata      ; Bit shiften Rechts
//hier muss irgendwas stehen, was die geschobenen Daten
//auch tatsächlich ausgibt, das jeweilige Bit steht in C
dec txcount      ; Counter erhoehen
tst txcount      ; if counter = 0 then
//unnötig
breq zero      ; goto zero
rjmp txnext      ; else goto txnext
//wo ist txnext??
zero:
ret        ; Return

besser so:
dec txcount
brne txrrf
ret

Autor: André Kronfeldt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dec => decrement, nicht 'Counter erhöhen'

ldi txcount, 0x08
txrrf:
  - Hier Bit0 von outdata irgendwo ausgeben -
ror outdata      ; Bit shiften Rechts
dec txcount      ; Counter erniedrigen
brne txrrf       ; if Zeroflag cleared, goto txrrf
ret              ; Return

Sonst isses eigentlich okay.

Grüße,
André

Autor: André Kronfeldt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist, war ich einen kleinen Tacken zu spät ;-(

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wunderbar das war es .... irgendwie bin ich mit dem abfragen der
Variabel ins schleudern gekommen ..... (tst txcount usw.)

Ich bedanke mich


Mfg

Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hab mein Fehler gefunden und zwar habe ich txcount-1 gerechnet ....
aber ich habe vergessen Txcount wieder zuladen.


txbits:
ldi txcount, 0x08    ; Shiftout Counter = 8 Bit
txnext:
sbi portc,1        ; REMOTE LINE HIGH
rcall txwait      ; 562 µs warten
cbi portc,1        ; REMOTE LINE LOW
rcall txwait      ; 562 µs warten
sbrs outdata,0      ; Skip if Bit in Register = 1
rcall txrrf        ; Shiftout
rcall txwait      ; 562 µs warten
rcall txwait      ; 562 µs warten

txrrf:
ror outdata          ; Bit shiften Rechts
dec txcount          ; Counter erniedrigen
brne txrrf           ; if Zeroflag cleared, goto txrrf
ldi txcount, 0x08    ; TxCount wieder laden (DAS FEHLTE)
ret


Mfg

Dirk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.