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
Punkt A : Wohin willst Du das ausgeben ? Punkt B : Was genau funktioniert nicht ? MfG, Khani
@Dirk Sieht nicht falsch aus, aber Du machst doch noch keine Ausgabe in der Rutine. Du schiebst nur outdata nach rechts. MfG Manfred Glahe
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
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é
Hi, wunderbar das war es .... irgendwie bin ich mit dem abfragen der Variabel ins schleudern gekommen ..... (tst txcount usw.) Ich bedanke mich Mfg Dirk
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
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.