Warnung beim erstellen

Gast #1923141
Lesenswert?

Hi!

Habe folgenden Code:
1
.include"m64def.inc"
2
;______________________________________________________________________________________________________________
3
.def temp      =   r16
4
.def adress_low    =  r30
5
.def adress_high  =  r31
6
.def data      =  r19
7
.equ CLOCK = 12000000
8
.equ BAUD = 9600
9
.equ UBRRVAL = CLOCK/(BAUD*16)-1
10
#define le_latch     PORTe,2
11
#define oe_latch      PORTe,3
12
#define ce_memory      PORTe,4
13
#define we_memory      PORTe,5
14
#define oe_memory      PORTe,6
15

16
;____________________________________________________________________________________________________________________
17
ldi temp, HIGH(RAMEND)           ;HIGH-Byte der obersten RAM-Adresse
18
out SPH, temp
19
ldi temp, LOW(RAMEND)            ;LOW-Byte der obersten RAM-Adresse
20
out SPL, temp
21

22
ldi temp,0xff            ;Laden des Wertes 255 in Register R16  
23
out ddrd,r16
24
ldi temp,0b1111110            ;um das Daten Richtungsregister auf Ausgang zu stellen
25
out ddre,temp
26
ldi temp,0xff
27
sts ddrf,temp
28
;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
29
;Hauptprogramm
30
haupt:
31
cbi oe_latch
32

33
sbi we_memory
34
sbi ce_memory
35
sbi oe_memory
36

37

38
ldi data,0x00;
39

40
ldi adress_low,0b00000000
41
ldi adress_high,0b00000000
42
weiter:
43
out portd,adress_low
44
sbi le_latch
45
cbi le_latch
46

47
out portd,adress_high
48

49
cbi we_memory
50

51

52
sts portf,data
53

54
cbi ce_memory
55
nop
56
nop
57
nop
58

59
sbi ce_memory
60

61

62
sbi we_memory
63

64
adiw    ZH:ZL, 1
65

66
inc data
67

68

69

70

71

72

73

74

75

76

77
; Baudrate einstellen
78
  ldi temp, LOW(UBRRVAL)
79
  out UBRR0L, temp
80
  ldi temp, HIGH(UBRRVAL)
81
  sts UBRR0H, temp
82
  ; Frame-Format: 8 Bit
83
  ldi temp, (0<<USBS0)|(3<<UCSZ00)
84
  sts UCSR0C, temp
85
  sbi UCSR0B,TXEN0 ; TX aktivieren
86
  loop: ldi temp, 'T'
87
  rcall serout ; Unterprogramm aufrufen
88
  ldi temp, 'e'
89
  rcall serout ; Unterprogramm aufrufen
90
  ldi temp, 's'
91
  rcall serout ; ...
92
  ldi temp, 't'
93
  rcall serout
94
  ldi temp, ' '
95
  rcall serout
96
  ldi temp, 'O'
97
  rcall serout
98
  ldi temp, 'K'
99
  rcall serout
100
  ldi temp, 10
101
  rcall serout
102
  ldi temp, 13
103
  rcall serout
104
  ldi temp, 10
105
  rcall serout
106
  ldi temp, 13
107
  rcall serout
108
  
109

110

111

112
rjmp weiter
113

114

115

116
;Hauptprogramm ende
117
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
118
;_______________________________________________________________________________________
119
  serout:
120
  sbis UCSR0A,UDRE0 ; Warten bis UDR für das nächste
121
  ; Byte bereit ist
122
  rjmp serout
123
  out UDR0, temp
124
  ret ; zurück zum Hauptprogramm

Dortbekomme ich 2 Warnungen:

C:\Users\Happe\Documents\AVR 
Studio\speicher_latch\speicher_latch.asm(4): warning: Register r30 
already defined by the .DEF directive
C:\Users\Happe\Documents\AVR 
Studio\speicher_latch\speicher_latch.asm(5): warning: Register r31 
already defined by the .DEF directive
 Was bedeutet das. HAbe sie doch nur ein mal definiert.Woander wird es 
doch auch nicht benutzt oder doch?

MFG

blutengel
Gast #1923154
Lesenswert?

blutengel schrieb:
> Was bedeutet das. HAbe sie doch nur ein mal definiert.Woander wird es
> doch auch nicht benutzt oder doch?

In den includes zum Chip werden die Register r30/r31 bereits als ZL/ZH 
definiert, also sind das die Register, die den 16bit-Z-Pointer bilden.

Falls du den Z-Pointer nicht brauchst, kannst du die Warnung ignorieren.

Allerdings ist dein Programm dahingehend nicht konsistent, einmal 
benutzt du deine defines adresse_l und h, weiter unten dann adiw ZH:ZL, 
1
Am besten entscheidest du dich für eine Benennung.
:-)

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