Guten Tag,
ich bin grad dabei eine Software für nen ATTiny2313 zu schreiben welche
über den UART, per RS232 Daten empfängt. Das Programm wartet auf darauf
das es ", Adresse:" empfängt und soll anschließend die vier
darauffolgenden Zeichen (Zahlen) prüfen. Alle Ausgaben auf PortB sind zu
Debugzwecken. Die Jumps welche auf sich selber zeigen auch. Die Stelle
im Code (Dateianhang) wo der Fehler auftritt ist folgende:
1 | out PortB, R20
|
2 | stop12:
|
3 | ;rjmp stop12
|
4 |
|
5 | cp R16, R19
|
6 | brne exit
|
7 | cp R17, R20
|
8 | brne exit
|
9 |
|
10 | ldi R16, 0x55
|
11 | out PortB, R16
|
12 | ; rcall Pause
|
13 |
|
14 | stopx:
|
15 | rjmp stopx
|
16 |
|
17 | exit:
|
18 | ldi R16, 0xf0
|
19 | out PortB, R16
|
20 | stop:
|
21 | rjmp stop
|
22 |
|
23 | pop ZH
|
24 | pop ZL
|
25 | pop R0
|
26 | pop R17
|
27 | pop R16
|
28 | ret
|
Wenn ich den rjmp stop12 nicht auskommentiert habe bleibt das Programm
brav stehen und zeigt auch an was ich auf PortB ausgegeben habe. Wenn er
auskommentiert ist muss es logischerweise weitergehen auf die beiden
darauffolgenden Vergleiche. Dort muss er entweder bei rjmp stopx oder
rjmp stop zum stehen kommen was man dann an den Ausgaben an PortB
erkennen müsste. Das Programm zeigt allerdings nichts an PortB an und
bleibt auch nicht stehen. Zumindest nicht in der Praxis, im Simulator
funktioniert alles perfekt! Weiß jemand rat?
Danke im vorraus.