mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeitschleifen berechnen 89S8252


Autor: Burt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich hätte paar fragen zu einer assembler - Zeitschleife. Hab schon nach
Zeitschleifen oder Quarzzeiten ... gesucht abber nichts passendes
gefunden.....

wie lange braucht mein AT89S8252 um den befehl NOP 10x auszuführen???

   mov var,64h
   MOV LED_PORT,#00000001b
st:NOP                      -
   NOP                      -
   NOP                      -
   NOP                      -
   NOP                      -
   NOP                      -
   NOP                      -
   NOP                      -
   NOP                      -
   NOP                      -
   djnz var,st
   MOV LED_PORT,#00000010b

...... Der Befehl benötigt nur einen Rechen-cicle und mein controller
wird mit 12Mhz getaktet..... hab irgendwann mal
gelesen dass diese Quarz-Frequenz noch paarmal geteil wird????

Wie muss ich jetzt rechnen um herauszukriegen wie lange ein
Befehl braucht??

Dann kann ich doch sicher auch längere Zeitschleifen wie....

   mov LCD_PORT,#00000100b
   mov R2,64h
jb:djnz R1,jb
   djnz R2,jb
   mov LCD-PORT;#00001000b

...berechnen?!!

Danke schonmal im vorraus!!!

Burt

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal das Programm "AVRdelayloop" an. Dem gibst du Zeitdauer
und Takt oder nur die Taktanzahl an und er berechnet dir dann den
passenden Asm-Code.

Autor: Burt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort!!!!!

Gibts das Program hier oder muss ich googlen??

Danke, Burt

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRdelayloop ist nur was für die AVRs, nicht für die 8051er!
Bei den preiswerten 8051 gilt: 1 Maschinenzyklus = 12 Quarz-Takte.
Im X2-Mode gilt: 1 Maschinenzyklus = 6 Quarz-Takte.

MfG
Andi

Autor: Burt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.....Habs gemerkt..... die Mnemonics sind ja ganz anders wie meine...

Also wenn ich dass jetzt richtig verstanden hab muss ich mit
1 cycle = 6 Quarz-Takte rechnen (da mein Quarz an Xtal1 & Xtal2
angeschlosesen ist, X2-mode). Dann wäre bei mir ( 12Mhz Quarz )

1 Zyklus = 1sec/12000Hz x 6takte = 0,0005sec.

Das würde bedeuten dass mein controller für 2000 Zyklen ca 1sec.
brauchen würde?????

als schlechtes Beispiel: 2000x NOP  befehl dauert 1sec.  ?????


Danke, Burt

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'Tschuldigung, ich habe deinen µC nicht als Nicht-AVR erkannt.

Einen Fehler hast du noch in deiner Rechnung: 12Mhz = 12.000.000 Hz.
In einer Sekunde schafft er also 2 Millionen NOPs, nicht 2000

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Burt: Ein bißchen Verwirrung meinerseits!
Den "X2-Mode" gibt es bei dem 89S8252 NICHT.
Den X2-Mode kann man bei manchen 8051er von Atmel aktivieren und
halbiert die Taktanzahl von 12 auf 6 Takte für einen Maschinenzyklus,
dafür darf der Quarz dann nur z. B. 20 MHz statt 40 MHz sein.

Bei 12 MHz Takt schafft Dein 8051 1.000.000 NOPs, bei 24 MHz
2.000.000.
Ein Maschinienzyklus ist bei 12 MHz 1 µS und bei 24 MHz 0,5 µS.

MfG
Andi

Autor: Burt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo....

Erstmal Danke @all.....
Hab des jetzt heute mal ausprobiert und es ist ja echt kein problem für
ein paar ms eine schleife zu erzeugen.....
Wenn es jetzt aber in den Sekunden-bereich geht wird es schon wieder
schwieriger, da man ja über mehrere Register und Labels schleifen
muss....

Jetzt wollt ich wissen ob es ein ähnliches programm wie
AVRdelayloop auch für nicht - AVRs gibt???

Oder ob mir jemand einen Rechenweg angeben kann für z.B. ne 5sec.
pause????

Danke für jede Antwort,

MFG Burt

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso 5 SEKUNDEN Pause?
So was macht man am besten mit Zählern und am besten in Interrupts.
Im Main-Program fragt man den Zählerstand ab.
Bei erreichen eines gewissen Zählerstands setzt man bei Bedarf den
Zähler zurück und führt das Ereignis aus was dann passieren soll.
Man kann sich auf diese Art mehrere Zähler oder mehrere Vergleicher
bauen und es können dann mehrere Ereignisse überkreutz passieren ohne
das es die Wartezeit für ein anderes Ereignis beeinflusst.

MfG
Andi

Autor: buz11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Burt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
....Hab des mit m zähler mal angefa ngen und es ist wirklich besser (hab
bis jetzt noch nie zähler/Timer benötigt....

@buz11: Die Seite ist echt klasse..... aber auch bei diesem erzeugten
Code erkennt mein Assembler (RIDE IDE) eine mnemonic nicht....
Z.B. gibt mein assembler eine fehlermeldung bei dem Befehl "PSW" dass
der befehl unbekannt ist.... Im Befehlssatz für meinen Controller kann
ich diesen Befehl aber auch nirgends finden.....

woher kommt diese Inkompatibilität zwischen den einzelnen mnemonic -
befehlen bei den gleichen Controller-Architekturen??? (8051)

Danke für jede Antwort

MFG Burt

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PSW ist das Programmstatuswort, also ein (wichtiges) SFR und kein
Befehl, sollte man eigentlich kennen.

Der Befehl muß davor stehen. Vielleicht ist durch Copy+Paste eine Zeile
umgebrochen worden.


Peter

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.