Hallo Leute,

ich habe folgenden Code:

Code:
.include "m8def.inc"

;31248 1 Sek 
.EQU TIME05 = 65536 - 15624		; 0,5 Sekunden 
.EQU TIME2 = 65536 - 62496		; zwei Sekunde 
.EQU TIME1 = 65536 - 31248		; eine Sekunde
 
.def temp = r16
.def speed = r21
.def updown = r22

.org 0x0000
	rjmp start
.org OVF0addr		;Interrupt-handler für 8 Bit Timer0
	rjmp interrupt


start:
	ldi updown, 0b00000000
	
	ldi r20,HIGH(TIME2)	;Trick, um Timer0 auf 16 Bit zu erweitern
    ldi temp,LOW(TIME2)		;Starwert Timer
    out TCNT0,temp
    ldi temp,(1<<CS02|1<<CS00)	;Prescaler Systemtakt/1024
    out TCCR0,temp
	ldi temp,(1<<TOIE0)	;Timer Interrupt über TOV0 erlauben
	out TIMSK,temp		;    "

    ldi      temp,   (1 << WGM10) | (1 << COM1A1) | (1 << COM1B1)
    out      TCCR1A,   temp
    ldi      temp,   (1 << CS11)
    out      TCCR1B,   temp

	ldi speed,0
    out      OCR1BH,   speed
    out      OCR1BL,   speed
    out      OCR1AH,   speed
    out      OCR1AL,   speed


	cbi DDRD, PD7
	cbi PORTD, PD7
	sbi PORTC, PC0
	sbi PORTC, PC1

	sei					;global Interrupts einschalten

;Stackpointer setzen wg. Unterprogramm
	ldi temp,HIGH(RAMEND) 
	out SPH,temp
	ldi temp,LOW(RAMEND)
	out SPL,temp

	SBI DDRB, DDB1 ; Motordatenrichtungsbit setzen
	SBI DDRB, DDB2
	SBI DDRB, DDB4
	SBI DDRB, DDB5
	SBI DDRD, DDD4
	SBI DDRD, DDD5
	SBI PORTB, PB1 ; Motorenports PB1 und PB2 auf 5V schalten
	SBI PORTB, PB2
	sbi PORTD, PD5
	sbi PORTB, PB5

	sbi DDRC, DDC0
	sbi DDRC, DDC1

;Hauptprogramm:
loop:				;leere Schleife
   	rjmp loop

;Interrupt Handler 
interrupt:			;LEDs toggeln
	inc r20			;Timererweiterung inkrementieren
	brne interrupt2	;wenn r20=0, zu interrupt2 springen
    ldi r20,HIGH(TIME2)		;sonst Starwert Timer neu setzen
	;cbi PORTD, PD5
	;cbi PORTB, PB5
	
		 sbrs updown,7 ;0 hoch, 1 runter
		 rjmp hoch
		 sbrc updown,7
		 rjmp runter

		 hoch:
         inc speed ;1
		 inc speed ;2
		 inc speed ;3
		 inc speed ;4
		 inc speed ;5
		 inc speed ;6
		 inc speed ;7
		 inc speed ;8
		 inc speed ;9
		 inc speed ;10
		 inc speed ;11
		 inc speed ;12
		 inc speed ;13
		 inc speed ;14
		 inc speed ;15
		 inc speed ;16
		 rjmp testcompare

		 runter:
         dec speed ;1
		 dec speed ;2
		 dec speed ;3
		 dec speed ;4
		 dec speed ;5
		 dec speed ;6
		 dec speed ;7
		 dec speed ;8
		 dec speed ;9
		 dec speed ;10
		 dec speed ;11
		 dec speed ;12
		 dec speed ;13
		 dec speed ;14
		 dec speed ;15
		 dec speed ;16
		 
		 testcompare:

	     out      OCR1AH,   speed       ; für den linken Motor
		 out      OCR1AL,   speed       ; für den linken Motor
         out      OCR1BH,   speed       ; und für den rechten Motor
		 out      OCR1BL,   speed       ; und für den rechten Motor

		 brvs noswitch
		 brne noswitch2

		 switch:
;		 sbrs updown,7
;		 rjmp noswitch2
		 sbrc updown,7
		 rjmp noswitch
		 ;rjmp noswitch

		 noswitch:
		 ldi updown, 0b10000000
		 cbi DDRC, DDC0
		 cbi DDRC, DDC1
		 rjmp interrupt2

		 noswitch2:
		 ldi updown, 0b00000000
		 sbi DDRC, DDC0
		 sbi DDRC, DDC1
		 rjmp interrupt2
	
	;sbi PORTD, PD5
	;sbi PORTB, PB5


interrupt2:
    ldi temp,LOW(TIME2)		;Startwert Timer neu
    out TCNT0,temp
    reti
Der soll bewirken, dass der Asuro langsam beschleunigt und dann wieder abbremst.
Leider bekomme ich das einfach im Moment nicht hin ...
Kann mir jemand helfen?

Danke im Voraus!