www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik lcd-routinen


Autor: fotuccc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Kann mir jemand erklären wie der folgende Code-Abschnitt funktioniert 
bzw was $42 bedeutet?

Danke


 ;Pause nach jeder Übertragung
delay50us:                              ;50us Pause
           ldi  temp1, $42
delay50us_:dec  temp1
           brne delay50us_
           ret                          ;wieder zurück

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

es ist nur eine einfache Warteschleife.

$42 bedeutet 42 in der hexadezimalen Darstellung, also 66 dezimal.

Vielleicht ist es klarer wenn Du die Zeilen mal anders siehst:

delay50us:                      ; Unterprogramm
             ldi  temp1,$42     ; lade mit konst. Wert 42h
delay50us_:  dec  temp1         ; temp1=temp1-1
             brne delay50us_    ; bleibe in Schleife, solange Ergebnis 
ungleich 0
             rts                ; Unerprogramm beendet


hilft das?
Reiner

Autor: Reiner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
oh, schade ich hatte extra alles ordentlich eingerückt.

Ich hab's nochmal angehängt

Reiner

Autor: fotuccc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das $42 hexadezimal ist habe ich auch schon gedacht aber es wären ja 
dann nur 66 taktdurchläufe. wie kommt man dann auf 50 µs. Ein Takt 
dauert bei 4 MHz nur 0,00000025 Sekunden, das sind 25 Nanosekunden 
(soweit ich weiss). 66  25  2 (weil pro schleife 2 Befehle 
stattfinden) = 3300 Nanosekunden = 3,3 µs oder?

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Falsch: 4MHz = 250ns
dec = 1 Takt
brne = 2 Takte (wenn nicht 0)
Das sind bei mir 3 Takte je Durchlauf.
rcall = 4 Takte
ret = 4 Takte
ldi-Takt weggelassen weil letztes brne nur 1 Takt

3 x 66 x 250ns + 8 x 250ns = 51,5us

Nicht exakt aber soweit richtig.

Gruss Uwe

Autor: fotuccc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt hab ichs kapiert ;)
Danke

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.