Hallo,

erstmal danke für die Erklärungen. Ich habe jetzt mal alles, was ich als nicht relevant empfinde, auskommentiert und wollte euch fragen, obs so passt oder ob man noch was optimieren kann? V.a. gehts um möglichst wenige Taktzyklen.
Code:
Isr_int0:

push r16                                                    'sichere r16

Push r10
'Push r11
Push r24
Push r26
'Push r27

lds r16 , {channel}                                         'lade channel in r16
cpi r16 , 6                                                 'vergleiche r16 mit 6
brlo _lower                                                 'springe, wenn kleiner
rjmp _out_of_range                                          'sonst springe nach _out_of_range
_lower:                                                     '_lower Label
cpi r16 , 1                                                 'vergleiche r16 mit 1
brge _higher                                                'springe, wenn größer gleich
rjmp _out_of_range                                          'sonst springe nach _out_of_range
_higher:                                                    '_higher Label
'######################################################################################################################################
'######################################################################################################################################
'Ldi R26 , 0x46
'Ldi R27 , 0x00
Ld R24 , X
'Ldi R26 , 0x3f
'Ldi R27 , 0x03
Ld R10 , X+
'Clr R11
Ldi R26 , 0x15
'Ldi R27 , 0x03
Lsl R10
'Rol R11
Add R26 , R10
'Adc R27 , R11
St X + , R24
Clr R24
St X , R24
'######################################################################################################################################
'######################################################################################################################################
_out_of_range:                                              '_out_of_range Label
ldi r16 , 6                                                 'lade 6 in r16
!out tcnt0 , r16                                            'schreibe r16 in timer0
lds r16 , {channel}                                         'lade Channel in r16
inc r16                                                     'erhöhe Channel um 1
sts {channel} , r16                                         'lade r16 in Channel

'Pop r27
Pop r26
Pop r24
'Pop r11
Pop r10

pop r16                                                     'stelle r16 wieder her

Return
Vielleicht fällt euch ja noch was auf, anderfalls wäre es nett, wenn ihr mir ein OK gebt.

Btw: Bascom Version ist 1.11.9.5

Vielen Dank & Gruß
Chris