Forum: Mikrocontroller und Digitale Elektronik lcd-routinen


von fotuccc (Gast)


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

von Reiner (Gast)


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

von Reiner (Gast)


Angehängte Dateien:

Lesenswert?

oh, schade ich hatte extra alles ordentlich eingerückt.

Ich hab's nochmal angehängt

Reiner

von fotuccc (Gast)


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?

von Uwe (Gast)


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

von fotuccc (Gast)


Lesenswert?

Jetzt hab ichs kapiert ;)
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.