Maschinenzyklen für 8051 Assembler

OP #697348
Lesenswert?

hi,

hatte vorher eine aufgabe bei der ich die zeit für ein bestimmten code 
berechnen musste. der code sah ungefähr so aus:
1
mov r1, #100
2
loop:
3
mov p2, r1
4
djnz r1, loop

ein maschinenzyklus wurde mit 1µs angegeben. jetzt hab ich das so 
gerechnet:
t = 1MZ + ( 2MZ + 2MZ )  100  1µs = 401µs

allerdings bin ich mir bei dem "mov p2, r1" nicht sicher. ich würde 
dafür eben den befehl aus meiner formalsammelung nehmen der so definiert 
ist: "mov direct, Rn" - weil es sich bei p2 ja um ein register im SFR 
handelt und dies direkt adressierbar ist oder?

mfg blan
OP #697386
Lesenswert?

jack wrote:
>>Wieso *100 ?
>
> Ist ja die Schleife.

ja deswegen "* 100". also das problem ist eher dieser mov-befehl. stimmt 
das jetzt mit der direkten adressierung und dem SFR was ich oben 
geschrieben hab oder braucht man tatsächlich nur 1MZ?

mfg blan
OP #697395
Lesenswert?

jack wrote:
>>Welche Quarzfrequenz?
>>Außerdem, beim 8051 braucht ein Programmzklus 12 (Oszillator)Takte.
>
> Unsinn, die Zykluszeit ist ja vorgegeben.
>
> Also langer Rede kurzer Sinn: Stimmt.
>
> Mov dadr, Ri benötigt zwei Zyklen.

auch in diesem programm mit dem register und port. und meine 
argumentation stimmt auch?

mfg blan
Gast #697419
Lesenswert?

Meines Wissens nicht.

Ich hab noch mal nachgeschaut: Mov direct, Rn benötigt 2 Zyklen.

Mit direct ist eine Speicherstelle im internen Datenspeicher gemeint.
Und da liegen ja auch die SFRs.

Habt ihr einen besonderen 8051er ?
OP #697424
Lesenswert?

jack wrote:
> Habt ihr einen besonderen 8051er ?

also wir benutzen den "P89C51RD2" ( laut der formelsammlung ). ich werd 
auf jedenfall nochmal mit ihm reden und ihm das sagen. ich wollte meine 
ansicht nur nochmal von jemand bestätigen lassen der ahnung hat.

mfg blan
Gast #697435
Lesenswert?

>ich werd auf jedenfall nochmal mit ihm reden und ihm das sagen.

Bin gespannt wie er sich rausredet ;-)

Du kannst auch nochmal bei "goblack" vorbeischauen, da gibts eine Liste
mit allen Befehlen und den Zyklen.
#697446
Lesenswert?

B. Lan wrote:
> also ich hab dann ja 401µs als ergebnis. nur kommt der lehrer auf 301µs
> weil er für das von mir erwähnte "mov p2, r1" nur 1MZ berechnet hat -
> kann das sein?

Dein Lehrer hat Unrecht, "mov direkt, Rn" dauert 2 Zyklen.

Für 301 Zyklen müßte das Programm so aussehen:
1
mov a, #100
2
loop:
3
mov p2, a
4
djnz acc, loop

oder für 302 Zyklen:
1
mov p2, #100
2
loop:
3
nop
4
djnz p2, loop


Peter

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