mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Assembler Code


Autor: brooklyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Habe folgenden Assembler Code programmiert.

Es soll eine LED zum blinken gebracht werden. Irgendwie funktioniert das
Programm nicht.
Bin noch Anfänger und weiss einfach nicht weiter...

Hoffe ihr könnt mir den Assembler Code korrigieren!

Danke im Vorraus!


.include "8515def.ic"

ldi r 16, 255
out ddrc, r16
out portc, r16
Anfang:

cbf portc, pc0

ldi r23, 255
W1: ldi r21, 255
W2: ldi r21, 255
W3: dec r21
  brne W3
  dec r22
  brne w2
  dec r23
  brne W1

sbi portc, pc0

W1: ldi r21, 255
W2: ldi r21, 255
W3: dec r21
  brne W3
  dec r22
  brne w2
  dec r23
  brne W1

rjmp Anfang

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Hinweis:
Im AVR-Studio gibt es einen wunderbaren Simulator.
Der Einstieg dazu läuft über den Menüpunkt 'Debug' / 'Start Debugging'

Der Simulator zeigt dir dann deinen simulierten µC mit all
seinen Registern. Mittels F10 bzw. F11 kannst du in Einzel-
schritten durch dein Programm durchgehen und in den simulierten
Registern sehen, was jede Anweisung bewirkt. Du kannst
auch mit der Maus eine Zeile markieren und mittels F9
einen Breakpoint dorthin setzen. Wenn du dann das Pgm
laufen lässt (mit F5) so führt der Simulator alle Befehle
aus, bis er auf einen Breakpoint trifft. Dann gibt er
die Kontrolle wieder zurück zu dir.

Du wirst noch viele Stunden mit diesem Debugger verbringen, wenn
du weiter in Assembler programmierst. Fang also besser gleich
damit an, dich mit dem Ding vertraut zu machen. Schau auch mal
ins Debug Menü. Der Simulator kann noch viel, viel mehr.

Autor: brooklyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Also Problem ist behoben und es blinkt!

Wunderbar, danke.

Jetzt würde ich gerne ein Lauflicht, also alle LEDs nacheinander blinken 
lassen. Die Verzögerung kann ich ja erstmal manuell über die Zahlenwerte 
erreichen.

Aber wie "stricke" ich das jetzt zusammen? Was muss ich erweitern um ein 
Lauflicht hinzubekommen?

Gruß
und danke im Vorraus!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deinem Code fehlen sämtliche Kommentare. Außerdem enthält er jede Menge 
Tippfehler. Der Assembler sollte das so eigentlich gar nicht erst 
annehmen.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was muss ich erweitern um ein
> Lauflicht hinzubekommen?

Du musst erst mal weg vom: die LED blinkt, indem
du direkt am Port ein Bit setzt, bzw. löscht.

Mal angenommen, du hättest ein Register: r17
In diesem Register ist 1 Bit gesetzt. Also so

   +---+---+---+---+---+---+---+---+
   | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
   +---+---+---+---+---+---+---+---+

Wenn du dieses Register am Port C ausgibst, leuchtet
eine LED, die an Position 0 (hoffe ich zumindest, das
hängt jetzt davon ab, wie deine LED verschaltet sind)

Jetzt schaust du dir mal den Befehle ROL bzw. LSL in der
Befehlsübersicht an. Die hast du dir doch von Atmel geholt,
oder nicht? Wenn nicht: Macht nichts, in Hilfe vom
AVR-Studio ist sie auch drinnen. Einfach F1 drücken.

Ein LSL zb. schiebt ein Register eine Stufe nach links.
Aus

   00000001

wird also

   00000010

wenn du das jetzt wieder am Port C ausgibst, was passiert dann?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wär´s mit: Lerne in aller Ruhe Assembler, benutze die 
Hilfefunktionen dazu im AVR-Studio und dann erklärt sich - im Verbund 
mit Probieren und Testen - der ganze Assembler-Kram fast von alleine. 
Das macht doch viel mehr Spaß, als alles zu erfragen und es dann 
vielleict nicht zu verstehen.

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.