AVR Code funktioniert nur im Simulator

Hallo,

ich habe gerade ein Assemblerprogramm für einen AT90S2313 geschrieben, welches aber nun nicht richtig funktioniert. Im Simulator ließ sich das allerdings *nicht* nachvollziehen. Der nicht funktionierende Programmteil soll von einem synchronen Bus ein Byte einlesen. Im Simulator klappt das auch einwandfrei. In der Realität wird jedoch das zuletzt gesendete Bit (LSB) nicht beachtet, soll heißen, das Register "temp" ist nach dem Empfang gleich dem (testweise über entprellte Taster) gesendeten Wert, 1 mal nach rechts geschoben. Trotzdem beendet sich die Routine korrekterweise erst nachdem 8 Bits empfangen wurden. Hier ist die Routine (temp = R16, temp2 = R17, PINB.0 = Daten, PINB.2 = Clock):

receivebyte: clr temp ldi temp2, 8

receivebit: lsl temp receivebitstart: sbic PINB, 2 rjmp receivebitstart cbr temp, 0x01 sbic PINB, 0 sbr temp, 0x01 receivebitend: sbis PINB, 2 rjmp receivebitend dec temp2 brne receivebit ret

Hat jemand eine Idee, was da falsch sein könnte? Ich kann keinen Fehler erkennen, im Simulator funktioniert es ja korrekt.

Gruß, Arne

Reply to
Arne Rossius
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.