Forum: Mikrocontroller und Digitale Elektronik Maschinenzyklen für 8051 Assembler


von B. L. (blan)


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

von jack (Gast)


Lesenswert?

>t = 1MZ + ( 2MZ + 2MZ )  100  1µs = 401µs

Wieso *100 ?

Welche Quarzfrequenz?
Außerdem, beim 8051 braucht ein Programmzklus 12 (Oszillator)Takte.

von jack (Gast)


Lesenswert?

>Wieso *100 ?

Ist ja die Schleife.

von B. L. (blan)


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

von jack (Gast)


Lesenswert?

>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.

von B. L. (blan)


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

von jack (Gast)


Lesenswert?

Ja.
Register ist ja direkt addressierbar.

von jack (Gast)


Lesenswert?

SFR(z.B. Port) natürlich auch.

von B. L. (blan)


Lesenswert?

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?

mfg blan

von jack (Gast)


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 ?

von B. L. (blan)


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

von jack (Gast)


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.

von Peter D. (peda)


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

von B. L. (blan)


Lesenswert?

hi,

danke für eure bestätigungen. ich melde mich dann nochmal was 
letztendlich raus gekommen ist.

mfg blan

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.