rcallinit// init com-port-verbindung mit 2400 baud
66
ldiZL,lo8(wait_send);// startstring senden
67
ldiZH,hi8(wait_send);
68
rcallcom_put_string// startstring senden
69
70
main_loop:
71
;Batttest
72
sbiIO_REG(ADCSRA),ADSC
73
batt_loop:
74
sbicIO_REG(ADCSRA),ADSC
75
rjmpbatt_loop
76
clc
77
inINT_REG_L,ADCL
78
inINT_REG_H,ADCH
79
subiINT_REG_L,lo8(BATT_MIN)
80
sbciINT_REG_H,hi8(BATT_MIN)
81
brccbatt_ok
82
// versorgungs-spannung zu gering
83
sbiIO_REG(PORTD),PD6
84
rjmpende
85
batt_ok:
86
87
;schleifenkopf
88
LDIr19,255
89
verzoeg111:
90
LDIr18,255
91
verzoeg11:
92
LDIr17,255
93
verzoeg1:
94
95
96
// Was da ?
97
rcallwait_serial// warte auf ein zeichen vom com-port
98
cpiCHAR_GET_REG,STARTZEICHEN// war es das startzeichen?
99
breqstart_rec// ja, dann startet die datenübertragung
100
101
102
;SchleifenFuß
103
DECr17
104
BRNEverzoeg1
105
DECr18
106
BRNEverzoeg11
107
DECr19
108
BRNEverzoeg111
109
rjmpstart_prog
110
111
// Speichern
112
start_rec:
113
sbiIO_REG(PORTB),PB0// led on IR-Diode
114
sbiIO_REG(PORTD),PD2// led on Status
115
clrtemp1
116
stspage_adr,temp1// flash-page-adress mit 0 initialisieren
117
stspage_adr+1,temp1// programm wird immer ab adresse 0 gespeichert
118
119
rcallflash_get// flashdaten einlesen
120
121
cbiIO_REG(PORTB),PB0// led off
122
cbiIO_REG(PORTD),PD2// led off
123
sbiIO_REG(PORTD),PD6// led on
124
rcallwait_serial// wartezeit eine sekunde
125
cbiIO_REG(PORTD),PD6// led off
126
ldiZL,lo8(flash_ok);// startstring senden
127
ldiZH,hi8(flash_ok);
128
rcallcom_put_string// startstring senden
129
130
131
start_prog:
132
clrZL// adresse 0 = reset vector
133
clrZH
134
ijmp// indirect jump zum reset vector
135
136
137
***END***
138
ende:
139
rjmpende
def_asm.h:
1
#define BIT(n) (1<<(n))
2
#define IO_REG(n) _SFR_IO_ADDR(n)
3
4
#define sbi(p,b) p|=(1<<(b))
5
#define cbi(p,b) p&=(~(1<<(b)))
6
7
/*************************
8
registerdefinitionen
9
**************************/
10
#define CHAR_GET_REG r24 // register für char-rückgabe
11
#define CHAR_PUT_REG r25 // register für char-übergabe
12
#define CHAR_RET_REG r24 // register für char-rückgabe
13
14
#define INT_REG_H r25 // register für int high byte
15
#define INT_REG_L r24 // register für int low byte
16
17
#define temp1 r16 // arbeitsregister
18
#define temp2 r17
19
#define temp3 r18
20
#define temp4 r19
21
22
#define STARTZEICHEN ':' // startzeichen für einen record
23
#define SEKUNDE 2 // für zeitschleife
24
25
#define MAXRECORDS 17 // wert für maximale anzahl daten im record
26
27
#define BATT_MIN 810 // minimalster batterie-wert ca. 4,5V
28
#define BAUDRATE 520 // UBRR Wert für Baudrate 2400
Wenn ich auf kompilieren gehe kommt folgende Message:
gcc plug-in: Error: Object file not found on expected location D:\Eigene
Dateien\schule\elektro\Asuro\c-programme\bootloader\default\bootloader.e
lf
Und folgendes Buildprotokoll:
Build started 23.2.2008 at 17:35:14
avr-gcc.exe -mmcu=atmega168 -mmcu=atmega168 -Wall -gdwarf-2 -O0
-fsigned-char -MD -MP -MT asm_main.o -MF dep/asm_main.o.d -x
assembler-with-cpp -Wa,-gdwarf2 -c ../asm_main.s
../asm_main.s: Assembler messages:
../asm_main.s:14: Error: number must be less than 64
../asm_main.s:16: Error: number must be less than 64
../asm_main.s:18: Error: number must be less than 64
../asm_main.s:22: Error: number must be less than 64
../asm_main.s:24: Error: number must be less than 64
../asm_main.s:26: Error: number must be less than 64
../asm_main.s:33: Error: number must be less than 64
../asm_main.s:35: Error: number must be less than 64
../asm_main.s:37: Error: number must be less than 64
../asm_main.s:41: Error: number must be less than 64
../asm_main.s:43: Error: number must be less than 64
../asm_main.s:45: Error: number must be less than 64
../asm_main.s:59: Error: number must be less than 64
../asm_main.s:62: Error: number must be less than 64
../asm_main.s:112: Error: number must be less than 32
../asm_main.s:114: Error: number must be less than 32
../asm_main.s:117: Error: number must be less than 64
../asm_main.s:118: Error: number must be less than 64
../asm_main.s:177: Error: junk at end of line, first unrecognized
character is `*'
make: *** [asm_main.o] Error 1
Build succeeded with 0 Warnings...
Ich habe keine Idee, was ich machen kann.
Habt ihr noch eine Idee?
Ja, man kann Punkt 5 der Regeln ignorieren, muß sich dann aber nicht
über das Resultat wundern.
Und eine Hauptdatei gibt es nicht, es gibt nur einen kompletten
Dateianhang.
Wie soll denn jemand die Fehlermeldungen dem Codeschnipsel zuordnen?
Ich vermute mal, Du verwendest IN/OUT auf Adressen, die außerhalb des
erlaubten Bereichs sind. Dann muß man LDS/STS nehmen.
Peter