lcd-routinen

Gast #14538
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
Gast #14540
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?
Gast #14541
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren