Hallo Dirk,
Deine Methode ist sehr heikel. Auch wenn Du mit AVR Studio die Register geprüft hast, weist Du nicht was Bascom in anderen Versionen zwischen "$end Asm" und "$asm" mit den Registern anstellt.
Darum gilt: Programmiere jede NoSave ISR immer(!!) durchgängig in ASM. Bei komplexen Aufgaben in der ISR nur ein Flag setzen und in der Main das Flag abarbeiten.
Hier mal der angefragte Code für die Byte Variable Zaehler:
Code:
isr_Zaehler:
$asm
PUSH R24 'save used registers
IN r24, SREG
PUSH R24
LDS R24,{Zaehler}
SUBI R24,&HFF 'Incr Zaehler
STS {Zaehler},R24
POP R24 'get content of SREG
!OUT SREG, R24
POP R24
$end Asm
Return
Hinweis: In ASM gibt es ADD mit einer Konstanten nur für Word (ADIW), deshalb SUBI.
Lesezeichen