mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe mit 8051!


Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Wir haben vor kurzem Angefangen was über den 8051 zu lernen und auch
mit assembler programmierung angefangen und schreiben Programme für
einen ADuC812 von Analog Devices. Wir sollen nun folgende Aufgaben
bewältigen, aber leider steig ich da überhaupt nicht durch und würde
mich sehr über eure Hilfe freuen:

Aufgabe 2.1 Zählen von Tastendrücken; Ausgabe auf LED-Zeile
Es soll ein Programm erstellt werden, das die einzelnen Tastendrücke
auf T3 zählt und als Binär-Wert
auf der LED-Zeile ausgibt.
Zeichnen Sie ein Struktogramm für das Programm.
Um einen Wert auf die LED-Zeile schreiben zu können, wird sie
deklariert:
pLED EQU 0F000h
Der Datenpointer wird am Programmanfang mit der LED-Zeile
initialisiert:
mov DPTR, #pLED
Innerhalb des Programms wird sie über den Datenpointer angesprochen:
movx @DPTR,A
Mit obiger Zeile wird der Inhalt des Akkus auf die LED-Zeile
geschrieben.
Jeder erkannte Tastendruck auf T3 soll in R1 gezählt und der
Zählerstand soll innerhalb der Hauptschleife
ständig ausgegeben werden (Achtung: LED-Zeile ist lowaktiv).
Aufgabe 2.2 LED-Lauflicht
Die LEDs des Standard-Erweiterungsboards sollen als Lauflicht gesteuert
werden (der Reihe nach soll
je eine Diode leuchten).
Zeichnen Sie ein Struktogramm für das Programm und markieren Sie die
Stelle, an der die Verzögerungsschleife
eingefügt wird.
Erstellen Sie drei Programme:
a) ohne Verzögerungsschleife,
b) mit einer Verzögerungsschleife nach jedem Schritt,
c) mit geschachtelten Verzögerungsschleifen.
Verwendete Adresse : pLED EQU 0F000h
Bemerkung:
Um das Blinken der LEDs wirklich mit dem Auge wahrnehmen zu können,
müssen die Zeiten größenordnungsmäßig
im Bereich zwischen einigen Zehntelsekunden bis zu wenigen Sekunden
liegen. Dies
soll durch Warteschleifen erreicht werden.
Programmieren Sie zunächst ein Lauflicht ohne Verzögerung: Das Ergebnis
ist eine nahezu konstante,
jedoch insgesamt geringere Helligkeit, da das Auge zu träge ist, dem
schnellen Hell-Dunkel-
Wechsel zu folgen. Schätzen Sie ab, wie schnell die Zeiten für diesen
Wechsel etwa sind. Hierzu
muss man aus der Tabelle der Assemblerbefehle die Zahl der
Maschinenzyklen entnehmen und addieren
(Bei unserem Entwicklungsboard entspricht ein Maschinenzyklus einer
Zeit von etwa 1 ms)

Danke schonmal für eure Hilfe!

Gruß,

Oliver

Autor: Pauker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab Ihr auch einen Lehrer? Wenn ja, dann löchert diesen solange bis ihr
wisst wie es geht. Dafür ist er da.

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.