Davidfdg,

na, Du machst es Deinen Helfern auch nicht gerade leicht! Quellprogramme musst Du mit der Direktive "eckige Klammer auf" "code" "eckige Klammer zu" und "eckige Klammer auf" "/code" "eckige Klammer zu" einschliessen. Dann bleibt auch die Formatierung erhalten und man den Text ordentlich lesen. So wie Du's hier gemacht hast, ist das eine ziemliche Zumutung .

Vorschläge für mögliche Fehlerursachen habe ich als Kommentare in den Quelltext geschrieben.
Code:
;+----------------------------------------------------------------------------
;| Schaltung : ATmega8515
;| B.2 & B.3 Analogeingang Dämmerungsschalter
;| C.0 & C.1 Eingänge für Bewegungsmelder
;| D.3 LED Dämmerungsschalter
;| B.0 pulsweitenmoduliertes Signal (Licht)
;|----------------------------------------------------------------------------
;| Prozessor : ATmega8515
;| Sprache : Assembler
;| Version :
;+----------------------------------------------------------------------------
;
/* KOMMENTAR
Wenn Du willst, dass auch jemand anderes mit weniger Zeit, als ich sie habe, Dein Programm
lesen und verstehen kann, musst Du nicht nur viele Kommentare schreiben (das hast Du ja
schon sehr gut gemacht :-)!), sondern auch aufschreiben, was Du Dir sonst noch so gedacht
hast. Z.B.:
; Registerzuordnung:
; r18		: Laufzeit 5
; r19		: Laufzeit 6
; r20		: Wartezeit in Sekunden
Das hilft Dir übrigens auch selber, wenn Du später einmal wieder verstehen willst, was Du 
damals so angestellt hast.
ENDE KOMMENTAR */

/* KOMMENTAR
Mein erster Tip war falsch - Sorry. Die „dec“-Anweisung VERÄNDERT das Zero-Flag.
Nur das Carry-Flag wird nicht beeinflusst. Das kann es also nicht geweswen sein.

Versuch' doch mal, die folgende "include"-Anweisung statt der Zeile
".include avr.h"
ENDE KOMMENTAR*/ 
.include "m8515def.inc" 


;-----------------------------------------------------------------------------

;Reset and Interrupt vector ; VNr. Beschreibung

rjmp main ;1 POWER ON RESET
reti ;2 Int0-Interrupt
reti ;3 Int1-Interrupt
reti ;4 TC1 Capture
reti ;5 TC1 Compare Match A
reti ;6 TC1 Compare Match B
reti ;7 TC1 Overflow
reti ;8 TC0 Overflow
reti ;9 SPI, STC Serial Transfer Complete
reti ;10 UART Rx Complete
reti ;11 UART Data Register Empty
reti ;12 UART Tx Complete
reti ;13 Analog Comparator
reti ;14 Int2-Interrut
reti ;15 EEPROM Ready
reti ;16 TC0 Compare Match
reti ;17 Store Program Memory Ready

;-----------------------------------------------------------------------------

;Start, Power ON, Reset

main: 
/* KOMMENTAR
Der AVR-Studio-Assembler kennt die Anweisung "lo8" und "hi8" nicht. 
Er erwartet in den Zeilen unten die Anwweisungen "low" und "high".
ENDE KOMMENTAR*/
  ldi r16,low(RAMEND) 	;Konfiguration des Stackspeichers
  out SPL,r16 		;ans Ramende (Low-Byte)
  ldi r16,high(RAMEND) 	;Konfiguration des Stackspeichers
  out SPH,r16 		;ans Ramende (High-Byte)
;Konfiguration des Analogsignals
  cbi ACSR,7 		;Comperator ON
  cbi ACSR,6 		;ext. Referenzspannung (Vref AIN0)
;Konfiguration des pulsweitenmodulierten Signalausgangs
  sbi DDRB,0 		;PORT B.0 = Ausgang
  ldi r16,0b01110010 	;Konfiguration PWM-Signal
  out TCCR0,r16 		;

;Ein- Ausgangskonfiguation
  sbi DDRD,3 		;PORT D.3 = Ausgang
  cbi DDRC,0 		;PORT C.0 = Eingang
  cbi DDRC,1 		;PORT C.1 = Eingang
  sbi PORTC,0 		;Entstöre Eingang PORT C.0
  sbi PORTC,1 		;Entstöre Eingang PORT C.1

;Grundwerte laden
  ldi r16,0x00 		;Register 16 = 0
  ldi r17,0x00 		;Register 17 = 0

;-----------------------------------------------------------------------------

;Hauptprogrammschleife

Hauptprog: 
  in r17,PINC
  sbrs r17,0
  rjmp Lichtan
  in r17,PINC
  sbrs r17,1
  rjmp Lichtan

  cbi PORTD,3
  rcall WARTEZ
  rcall ADIMM
  rjmp Hauptprog

Lichtan: 
  sbi PORTD,3
  rcall EDIMM
  rjmp Hauptprog

;-----------------------------------------------------------------------------

;Unterprogramm Eindimmen

EDIMM: 
  rcall V_DIMM 		;Rufe Unterprog Dimmgeschwindigkeit auf
  cpi r16,0xFF 		;Prüfe Beleuchtungsstärke
  breq END_EDIMM 		;Wenn Beleuchtung = MAX springe zu END_EDIMM

  inc r16 			;Wenn Beleuchtung < MAX erhöhe Beleuchtungsst.
  out OCR0,r16 		;Speicher neue Beleuchtungsstärke
  rjmp EDIMM 		;Starte Unterprog Eindimmen neu

END_EDIMM: 
  ret ;Eindimmen Abgeschlossen - zurück zum Aufruf

;-----------------------------------------------------------------------------

;Unterprogramm Ausdimmen

ADIMM: 
  rcall V_DIMM 		;Rufe Unterprog Dimmgeschwindigkeit auf
  cpi r16,0x00 		;Prüfe Beleuchtungsstärke
  breq END_ADIMM 		;Wenn Beleuchtung = MIN springe zu END_ADIMM

  dec r16 			;Wenn Beleuchtung > MIN verringere Beleuchtungsst.
  out OCR0,r16 		;Speicher neue Beleuchtungsstärke
  rjmp ADIMM 		;Starte Unterprog Ausdimmen neu

END_ADIMM: 
  ret 			;Ausdimmen Abgeschlossen - zurück zum Aufruf

;-----------------------------------------------------------------------------

;Unterprogramm Wartezeit

WARTE_1s: 
  push r18 			;r18 sichern
  ldi r18,19 		;Lade Zeitkonstante 01

WARTE_1s_3:
  push r18 			;r18 sichern
  ldi r18,255 		;Lade Zeitkonstante 02

WARTE_1s_2:
  push r18 			;r18 sichern
  ldi r18,255 		;Lade Zeitkonstante 03

WARTE_1s_1:
  dec r18 			;r18 -1
  brne WARTE_1s_1 	;Wenn r18 nicht 0, springe zu WARTE_1s_1

  pop r18 			;Lade r18 aus Speicher
  dec r18 			;r18 -1
  brne WARTE_1s_2 	;Wenn r18 nicht 0, springe zu WARTE_1s_2

  pop r18 			;Lade r18 aus Speicher
  dec r18 			;r18 -1
  brne WARTE_1s_3 	;Wenn r18 nicht 0, springe zu WARTE_1s_3

 pop r18 			;Lade r18 aus Speicher

ret 				;Zurück zur Aufrufadresse

;-----------------------------------------------------------------------------

;Unterprogramm Wartezeit

WARTEZ: 
  ldi r20,30 		;Lade Wartezeit in Sekunden

WARTEZ_1: 
  rcall WARTE_1s 		;Springe in Unterprogramm WARTE_1s
  dec r20 			;r20 -1
  brne WARTEZ_1 		;Wenn r20 nicht 0, springe zu WARTEZ_1

  ret 			;Zurück zur Aufrufadresse

;-----------------------------------------------------------------------------

;Unterprogramm Dimmgeschwindigkeit

V_DIMM: 
  ldi r18,255 		;Laufzeit 5

LAUFZ_5: 
  ldi r19,255 		;Laufzeit 6

LAUFZ_6: 
  dec r19 			;Zähler 6 -1, hier Kalibrierung auf Quarz-Takt
  brne LAUFZ_6 		;Solange nicht NULL

  dec r18 			;Zähler 5 -1
  brne LAUFZ_5 		;Solange nicht NULL

  ret 			;Zurück zur Aufrufadresse
Ich hoffe, das löst das Problem.

Ciao,

mare_crisium

Edit: Fehler im Kommentar verbessert.