Danke danke ...
Ich benutze auch das AVR Studio aber die Fehlermeldung vom Debugger habe ich wohl falsch interpretiert.
Wärst du eigentlich so nett, dass du mir das mal auf meine Art schreibst?
Und warum funktioniert folgendes Programm so langsam ...
Code:
.include "m8def.inc"
.def temp = r19
.def temp2 = r17
.def temp3 = r18
LDI R16, HIGH(RAMEND) ;setzt R16 auf den höchsten wert 1024 (0x0400)
OUT SPH, R16 ;setzt es in Stack Pointer (zwischenspeicher)
LDI R16, LOW(RAMEND) ;setzt R16 + 95 (0x005F) also wird niedrigster wert dazu addiert
OUT SPL, R16 ;setzt es in Stack Pointer (zwischenspeicher)
;Front LED an
main:
ldi temp2, 0x0F
rcall front_led_on
RCALL warte ; Aufruf des Unterprogramms "warte"
rcall front_led_off
RCALL warte ; Aufruf des Unterprogramms "warte"
rjmp main
;FRONT-LED an als Unterprogramm
front_led_on:
SBI PORTD, PD6
SBI DDRD, DDD6
ret
;FRONT-LED aus als Unterprogramm
front_led_off:
CBI DDRD, DDD6
ret
;Warteschleife als Unterprogramm
warte:
dec temp2
mov temp, temp2
LDI R17, 0xFF ;setzt R17 auf 255
LDI R18, 0xFF ;setzt R18 auf 255
loop1: DEC R17 ;
BRNE loop1 ;wenn nicht gleich, springt zu loop2
DEC R18
BRNE loop1
DEC temp
BRNE loop1
RET ;automatischer Rücksprung zum Hauptprogramm
Lesezeichen