Forum: Mikrocontroller und Digitale Elektronik Warnung beim erstellen


von blutengel (Gast)


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

von Floh (Gast)


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.
:-)

von spess53 (Gast)


Lesenswert?

Hi

>Am besten entscheidest du dich für eine Benennung.

Oder du verzichtest gleich ganz auf dieses def-Gedödel.

MfG Spess

von blutengel (Gast)


Lesenswert?

Danke habs jetzt rausgenommen und habe es mit ZH und ZL ersetzt.Kommt 
halt ein Kommentar dahinter.

MFG

blutengel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.