jooooo thnx a lot hab mir mit hilfe von freunden mal mein eigenes progrämmchen geschrieben könnt ihr mal draufschaun ob ihr Fehler entdeckt? Danke im vorraus Hier der Code:





.DEVICE "ATMega8"
;
; Register definitions
;
;.DEF rmp = R16 ; Multipurpose register
;
; Constants
;
;.EQU fclock = 4000000 ; processor clock frequency
;
; Reset- and interrupt vectors
;
.CSEG
.ORG $0000
rjmp main ;
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
;
; Main program start
;
main:



ldi r16, 0
;;;; out EEAR, r16;; Bei Controllern mit mehr als 256 Byte EEPROM, z.B. dem ATmega8,
;;;;;passt die EEPROM-Adresse nicht mehr in ein Byte alleine. Statt einem Adressregister (EEAR)
;;;;;gibt es bei diesen Controllern deshalb 2 Register, eines für
;;;;;das Low-Byte (EEARL) und eines für das High-Byte
out EEARH, r16 ; High-Byte: 0*256
out EEARL, r16 ; Low-Byte: +0 = Adresse 0
sbi EECR,EERE ;Lesevorgang starten
in r17,EEDR ;gelesenes Byte nach r17
inc r17 ;inkrementiere r17
out EEDR, r17 ;EEPROM data register
sbi EECR, EEMWE ;Prepare EEPROM to write to
sbi EECR, EEWE ;Write to EEPROM
sbic EECR, EEWE ;EEWE is zero when previous write cycle is finished
rjmp Eeprom_wait ;If not completed yet, then try again


ende_hier_wirklch:
rjmp ende_hier_wirklich

; Hier beginnt nun das Nullsetzen des EEPROMs beim Programmieren
; Zuerst wird dem Assembler mitgeteilt, dass der folgende Code in
; das EEPROM gehört:
.ESEG

; Jetzt kommt der EEPROM-Inhalt:
.DB $00 ; Ein Byte mit Null

; End of source code