mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Erstes Programm und Probleme


Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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 ";"...

Autor: Denis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohne stack läuft das auch nicht, siehe stack im tutorial (hier)

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denis wrote:
> ohne stack läuft das auch nicht, siehe stack im tutorial (hier)
Nun, wenigstens das kann man auch ohne Kommentar erkennen: Schau Dir 
bitte mal die Zeilen 6-9 in Roberts Code an. Hast Du das Programm 
überhaupt angeschaut, bevor Du das geschrieben hast?

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es daran liegen, daß Du oben "Loop0" (Loop Null) und unten "Lopo"
schreibst?

MfG Paul

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul Baumann wrote:
> Kann es daran liegen, daß Du oben "Loop0" (Loop Null) und unten "Lopo"
> schreibst?
"lopo" gibts unterhalb von "prog1" auch. Ich hab auch schon mal gesucht, 
ob irgendwo ein ret fehlt. Bisher ohne Ergebnis...

Autor: Micha R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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

Kannst du mir mal erklären, was du damit bezwecken willst?

Autor: Micha R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
loop0:
24.  sbic PIND, 2

Was ist mit den beiden Pins 2 und 3?

Hast du da Tasterchen dran? Ziehen die auf GND oder auf Vcc?

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Micha R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na Entprellen musst du es schon... sonst würd das nix.
Hast du wenigstens Pullups oder Pulldowns an den Schaltern?

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, pullup widerstaende sind dran. Kay wenn`s am Entprellen liegt, schau 
ich mir das mal mit an.

Gruß Robert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.