mikrocontroller.net

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


Autor: B. Lan (blan)
Datum:

Bewertung
0 lesenswert
nicht 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:
mov r1, #100
loop:
mov p2, r1
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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>t = 1MZ + ( 2MZ + 2MZ )  100  1µs = 401µs

Wieso *100 ?

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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wieso *100 ?

Ist ja die Schleife.

Autor: B. Lan (blan)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: B. Lan (blan)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.
Register ist ja direkt addressierbar.

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SFR(z.B. Port) natürlich auch.

Autor: B. Lan (blan)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: B. Lan (blan)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
mov a, #100
loop:
mov p2, a
djnz acc, loop

oder für 302 Zyklen:
mov p2, #100
loop:
nop
djnz p2, loop


Peter

Autor: B. Lan (blan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

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

mfg blan

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.