Register25 wird nicht benutzt

Gast #4252416
Lesenswert?
• ▲
▼
1
;
2
; Definitionsdatei für Atmega8
3
;
4
.NOLIST
5
.include "m8def.inc"
6
.LIST
7

8
;
9
; Register Definition
10
;
11

12
.DEF regA = R24
13
.DEF regB = R25
14
.DEF tmp = R16
15

16
.equ c1 = 1 ; Bestimmt die Blinkfrequenz
17
  ldi tmp,1<<DDB0 | 1<<DDB1 ; Portbit ist Ausgang
18
  out DDRB,tmp
19
  clr tmp
20

21
Loop:
22
  sbi PORTB,1 ; Portbit auf high
23
  cbi PORTB,0
24
  ldi regB, HIGH(c1)
25
  ldi regA, LOW(c1)
26

27
Loop1:
28
  nop
29
  nop
30
  nop
31
  nop
32
  nop
33
  sbiw regA,1
34
  brne Loop1
35
  cbi PORTB,1 ; Portbit auf low
36
  sbi PORTB,0 ; Protbit0 auf high
37
  ldi regB, HIGH(c1)
38
  ldi regA, LOW(c1)
39

40
Loop2:
41
  nop
42
  nop
43
  nop
44
  nop
45
  nop
46
  sbiw regA,1
47
  brne Loop2
48
  rjmp Loop

Bin gerade daran dieses Programm zu Simulieren. Mir ist aufgefallen das 
in Register25 gar kein Wert geladen wird. Warum wird dieser dann 
Deklariert?
( hier regB )
bei
1
ldi regB, HIGH(c1)
 müsste dort ein Wert geladen werden.

HIGH ist dazu nirgend wo deklariert ob dies nun 1 oder 0 ist. Wenn 
natürlich hier 0b00000000 geladen wir ist verständlich warum ich nichts 
sehe. Aber dann währe ja regB gar nicht notwendig.
#4252424
Lesenswert?
• ▲
▼
Koe schrieb:
> Bin gerade daran dieses Programm zu Simulieren. Mir ist aufgefallen das
> in Register25 gar kein Wert geladen wird. Warum wird dieser dann
> Deklariert?

Weil im aktiven Teil des Codes ein sbiw (Subtract Immediate from Word) 
steht, würdest Du das Highbyte micht Initialisieren würde der Assembler 
einen 'Type mismatch Error' monieren, und das ist auch sinnvoll das das 
so ist.

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