Erstes Programm und Probleme

Gast #628358
Lesenswert?

Moin,
ich hab da ein Problem mit meinen Programm, aus irgendeinen Grund 
funktioniert das nicht so wie es soll.

1..include "include/m32def.inc"
2..def temp0 = r16
3..def temp1 = r17
4..def temp2 = r18
5.
6.  ldi temp0, LOW(RAMEND)
7.  out SPL, temp0
8.  ldi temp0, HIGH(RAMEND)
9.  out SPH, temp0
10.
11.  ldi temp0, 0xFF
12.  out DDRA, temp0
13.
14.  ldi temp1, 0x00
15.  out DDRD, temp1
16.
17.main:
18.  ldi temp0, 0xFF
19.  out PORTA, temp0
20.  ldi temp0, 0x00
21.  out PORTD, temp0
22.
23.loop0:
24.  sbic PIND, 2
25.  rjmp loop1
26. ldi temp2, 0xFE
27.  rcall prog1
28.  rjmp main
29.
30.loop1:
31.  sbic PIND, 3
32.  rjmp loop0
33.  rcall prog2
34.  rjmp main
35.
36.prog1:
37.  sbic PIND, 2
38.  brne lopo
39.
40.  ret
41.
42.lopo:
43.  inc R1
44.  brne prog1
45.  inc R2
46.  brne prog1
47.  rol temp2
48.  out PORTA, temp2
49.  rjmp prog1
50.
51.prog2:
52.  cbi PORTA, 2
53.  cbi PORTA, 4
54.
55.  ldi temp0, 10
56.wait0:  ldi temp1, 0
57.wait1:  ldi temp2, 0
58.wait2:  dec temp2
59.  brne wait2
60.  dec temp1
61.  brne wait1
62.  dec temp0
63.  brne wait0
64.
65.  ret

Man kann das  erste Unterprogramm als erstes mehrmals aufrufen, aber 
sobald man das zweite Unterprogramm das erste mal aufgerufen hat kommt 
man nicht mehr ins erstes Programm zurück, man kann nur noch das zweite 
Unterprogramm durchlaufen lassen, das funktioniert dann als einzigstes.

Wenn einer nen Vorschlag hat, waere das hilfreich, auch wie man das 
Programm effecktiver gestalten kann, hab jetzt das Wochenende mit 
avr-asm angefangen, hab da also noch nicht die Erfahrung.

Gruß Robert
#628362
Lesenswert?

Robert wrote:
> ich hab da ein Problem mit meinen Programm, aus irgendeinen Grund
> funktioniert das nicht so wie es soll.
Ich hab da auch ein Problem mit. Ich kann nicht ersehen, was das 
Programm denn überhaupt machen soll. Auch wenn Du mit Assembler erst 
anfängst, solltest Du Deine Programme kommentieren. Falls nicht bekannt: 
Das Kommentarzeichen ist ";"...
Gast #628457
Lesenswert?

1
51.prog2:
2
52.  cbi PORTA, 2
3
53.  cbi PORTA, 4
4
54.
5
55.  ldi temp0, 10
6
56.wait0:  ldi temp1, 0
7
57.wait1:  ldi temp2, 0
8
58.wait2:  dec temp2
9
59.  brne wait2
10
60.  dec temp1
11
61.  brne wait1
12
62.  dec temp0
13
63.  brne wait0

Kannst du mir mal erklären, was du damit bezwecken willst?
Gast #628488
Lesenswert?

Ja, sorry, das mit dem kommentieren ist nicht gerade meine Staerke. Das 
Programm funktioniert ja soweit, es ist nur das Problem, dass wenn ich 
nach dem ersten Unterprogramm, das zweite Unterprogramm starte, das ich 
nicht mehr das erste Unterprogramm starten kann, nur noch das zweite. 
Die Unterprogramme werden ueber eine Tasterabfrage gestartet, da ist 
aber auch das Problem, dass das erste Unterprogramm, welches ein 
Lauflicht ist, nicht sofort startet, sondern erst nach eine paar mal 
druecken, dachte das koennte mit der nicht Entprellung zu tun haben?

Gruß Robert

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren