Es ist natürlich immer von Nachteil, wenn man tausen NOPs verschwendet nur um ne LED blinken zu lassen. Aber zu Beginn kann er das ja erstmal so machen ;)
Druckbare Version
Es ist natürlich immer von Nachteil, wenn man tausen NOPs verschwendet nur um ne LED blinken zu lassen. Aber zu Beginn kann er das ja erstmal so machen ;)
Hallo Thomas
Man sollte aber auch immer die Möglichkeiten die der ATmega8 bietet ausnutzen, denn dafür wurden sie ja Eingebaut.
Aber hier geht es nich darum auf welche Art der Zähler Programmiert ist sondern, daß er nicht richtig Funktioniert.
Das Problem ist doch, daß der Programm Ablauf so nicht geplant war.
Wie er weiter oben anführte, sind die Wartezeiten zu lang.
Offensichtlich hatte er nur 14 Durchläufe geplant.
Ich habe ihn lediglich auf eine Fehlerquelle hingewiesen.
MfG
A.Hoffmann
@ A.Hoffmann:
Was ist eigentlich die Bedeutung von ori?
Weil hin und wieder finde ich einen Code der lautet wie folgt:
Und ich verstehe einfach dann den Sinn von ori nicht!Code:ori temp, $20
ori temp, $20
spechert in "temp" den wert "temp OR 0x20" bzw temp|0x20
Danke, damaltor!
Wie muss ich dann folgenden Codeausschnitt verstehen?
von KlickCode:[...]
cp PWMCount, ocr_1 ; Ist der Grenzwert für Led 1 erreicht
brlt OneOn
ori temp, $01
OneOn: cp PWMCount, ocr_2 ; Ist der Grenzwert für Led 2 erreicht
brlt TwoOn
ori temp, $02
[...]
hrhr.. das kann ich dir nicht sagen, es wird auf jeden fall unter bestimmten bedingungen ein wert in temp entweder mit 0x02 oder mit 0x01 maskiert.
Hmm ...
das hatte ich mir auch schon gedacht, aber mich würde interessieren, wonach der entscheidet ... xD
Hallo H3iiGhost
Die Anweisung ori stellt eine binäre Oder Verknüpfung zwischen einem
Register ( temp ) und einem direkt Wert ( zb $20 ) her.
Das Ergebnis dieser Verknüpfung steht in dem Register.
Mit dieser Anweisung, werden Bits im Zielregister gesetzt.
Alle Bits die im Zielregister logisch 1 waren bleiben es und zusätzilch
werden noch alle Bits die in dem direkt Wert 1 sind auch in dem Zielregister auf 1 gesetzt.
Ich hoffe damit deine Frage beantwortet zu haben.
Mit freundlichen Grüßen
A. Hoffmann
Ähmm ...
Das verwirrt mich ehrlich gesagt noch mehr ...
Aber danke für deine BEmühung!
Versuchen wirs noch mal
ORI ist eine Abwandlung des Befehls OR.
Mit OR können die Werte von 2 Registern miteinander bitweise ODER verknüpft werden.
Beispiel:
OR r16,r17
Wenn im Register r16
0b00000001 = hex 01
stand, und im Register r17
0b00000100 = hex 04
stand, ist nach diesem Befehl der Wert
0b00000101 = hex 05
im Register r16 zu finden.
Es ist keine Addition der Werte auch wenn sich das hier zufällig so ergibt.
Der Befehl ORI macht im Prinzip das gleiche, nur das als zweiter Partner der Oder Verknüpfung eine Konstante und kein zusätzliches Register verwendet wird.