PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Datenausgabe immer 0, Schleife hat Fehler, Wieso?



andyoo1
20.02.2004, 22:10
Hi

Ich brauch mal Hilfe....

Warum geht meine Schleife nicht ?

.org $0115
jsr Start
lda $0A1
inca
jsr Write
jsr Read
jsr NoAck
sta $0A2
rts

Read BCLR SDA,DIR
CLRA
LDX PORT1
LDA #8
STA ZAEHLER
jsr LOOP
LOOP RORX
ROLA
BSET SCL,PORT1 ; scl hi
BCLR SCL,PORT1
LDX PORT1
LDA ZAEHLER
DECA
STA ZAEHLER
BNE LOOP
RTS

Datenausgabe immer 0. Wieso kann er die Daten nicht lesen?????

jörg
20.02.2004, 22:56
Was mir auffällt:

1. das "jsr LOOP" vor dem "LOOP RORX" gehört raus: geht ja sowieso in die Loop, und sonst ist der Stack falsch. Ob das ein Problem macht, weiss ich nicht.
2. Das "LDA #8" am Anfang von Read macht den A kaputt, und mit dem "LDA ZAEHLER / DECA" machst Du Dir den A in der Loop auch kaputt. Also: A speichern, sinnvollerweise gleich nach $0A2
3. Was macht das "sta $0A2" vor dem "rts"? Das sollte Vermutlich das in Read gelesene Speichern; speichert aber eher das Ergebnis von "jsr NoAck" (und das ist vermutlich 0)
3. Ist SDA bei Dir 0? sonst geht die LOOP mit "RORX" nicht
4. Wo ist ZAEHLER bei Dir? bei $09x oder so?
5. "Ästhetischer" (weil sparsamer) wär's, das "LDX PORT1" auch nur einmal hinzuschreiben

Gibt dann insgesamt:

jsr Start
lda $0A1
inca
jsr Write
jsr Read
jsr NoAck
rts

Read:
BCLR SDA,DIR
CLRA
sta $0A2
LDA #8

LOOP:
STA ZAEHLER
lda $0A2
LDX PORT1
RORX
ROLA
BSET SCL,PORT1 ; scl hi
BCLR SCL,PORT1
sta $0a2
LDA ZAEHLER
DECA
BNE LOOP
RTS


(Ich hoffe, das stimmt!)