www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assembler: Warteschleife von 1000 Takten


Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ist vielleicht eine dumme Frage, aber:
Wie kann ich in Assembler eine Warteschleife basteln, die eine
bestimmte Anzahl von nops ausführt? (Für Mega8 falls es für diese
Schleife einen Unterschied macht)

Danke und viele Grüsse
Karl

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi r18,250
ldi r19,4
clr r20
clr r21

loop2:
clr r20
loop1:
inc r20
cpse r20,r18
rjmp loop1
inc r21
cpse r21,r19
rjmp loop2

mfg Klaus

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi r16, 250   ; 1 takt

loop:
  nop          ; 250 takte ==> jeder befehl 1 takt
  dec r16      ; 250 takte ==> jeder befehl 1 takt
  brne loop    ; 499 takte ==> bei sprung 2 takte, sonst 1er

==> zusammen 1000 takte

oder du lädst mit 248 oder 249 und dann kannste noch nen müll wie ret
und so einbauen...

sollteste aber selbst nochmal durchrechnen

dave

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus und Dave,

danke für Eure Code-Fragmente. Hatte zuerst in Codesammlungen gefragt,
weil mir das logisch vorkam. Beim herumsuchen und lesen hatte ich dann
mehrmals gelesen, dass Fragen dort wohl nicht hinein gehören. Also
hatte ich dann noch mal im Microcontroler gefragt und sehr gute
Antworten bekommen und gleich erflogreich ausprobiert.

Aber Eure Lösungen zeigen mal wieder, dass viele Wege nach Rom
führen:-)

Viele Grüsse
Karl

Autor: Volkmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Codesammlung ist auch noch ein Beispiel-Makro dazu. Es geht zwar
'nur' bis 770 Takte, kannst es aber auch 2-Mal hintereinander
aufrufen ;-)

Zu finden hier:
http://www.mikrocontroller.net/forum/read-4-125536.html

Volkmar

Autor: Krishan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich programmiere ein kartenspiel dafür benötige ich ein zufallsgeneator. 
wie binde ich einen zufallsgenerator mit ein?

gruß Krishan

Autor: Skua C:\> (skua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach mal das Licht an.

Autor: RoK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hatte mal einen Doppelwürfel mit asm programmiert.
Für die Würfelzahlen hatte ich einen Timer laufen, der im 
schnellstmöglichen Takt von 0..5 gezählt hat (bzw. 1..6). Wenn einer 
eine Taste gedrückt hat, hab ich die aktivierende Flanke der Taste 
genutzt um Würfel 1 mit dem derzeitigen Counterwert zu laden und die 
deaktivierende Flanke (Taste loslassen) holt den Counterwert für für den 
2. Würfelwert. Die Ausgabe über LEDs erfolgte erst, nach dem die Taste 
wieder losgelassen wurde. Somit lag der Zufallsfaktor bei Nutzer, bzw. 
wann man die Taste drückt und loslässt.
Hat prima funktioniert und keiner trifft mit gezieltem Drücken einen 
bestimmten Counterwert, wenn der Counter mit paar MHz rennt. Auch wenn 
es viele versucht haben :-)

Gruß
RoK

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.