Anfängerfrage: Aus welchem Grund wird "WL" bzw. "WH" als nicht definiert gemeldet?

OP #2708811
Lesenswert?

Hi@all,

ich bin dabei, einen LED-Blinker zu erstellen, bei dem eine LED 1s an 
und 1s aus geht. Alles sehr einfach gehalten, also ohne Interrupts und 
ohne Unterprogrammen.

Das Programm habe ich modulweise aufgebaut, d.h. die Zeitschleife, die 
1s Zeit benötig habe ich zuerst erstellt.
Eben diese besteht ferner aus einer 16-bit Schleife, in der eine 8-bit 
Zeitschleife durchgeführt wird. Mit meinem Takt (1MHz) und meinen 
Befehlen sind die Wiederholwerte für die 8-Bit Schleife 166 und für die 
16-bit Schleife 2000. Da der 16-bit Wert natürlich nicht in ein 8-bit 
REgister passt, habe ich das Register R25:R24 als WH:WL mit der 
.DEF-Direktive definiert.
Allerdings erzählt der Assembler mir beim zusammenbauen, dass er kein 
Label/Variable/Konstante WL bzw. WH kennt.

Habt ihr diesbezüglich eine Idee?

Hier ein Code-Ausschnitt:
1
.DEF Tmp1 = r16    ; Temp-Definition - allgemeines Register
2
.DEF TCnt1 = r17  ; hier das Register gewählen
3
.def WL = r24    ; unterer Teil des 16-bit Doppelregisters
4
.def WH = r25    ; oberer Teil des 16-bit Doppelregisters
5
;---------- Wertnamen ----------------------------------------------------------
6
.EQU G1 = 166    ; hier die Wiederholungszahl & damit die Zeit der
7
;        inneren Schleife eingetragen
8
.EQU G2 = 2000    ; hier die Wiederholungszahl der äußeren 16-bit
9
;        Schleife eingetragen
10
;---------- Initialisierungen --------------------------------------------------
11
  ldi Tmp1, HIGH(G2)  ; die große
12
  out WH, Tmp1    ; Zahl wird
13
  ldi Tmp1, LOW(G2)  ; in das Doppel-
14
  out WL, Tmp1    ; register geladen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren