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
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.
Danke für die schnelle Antwort!!!!! Gibts das Program hier oder muss ich googlen?? Danke, Burt
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
.....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
'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
@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
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
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
....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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.