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:
Hinweis: In ASM gibt es ADD mit einer Konstanten nur für Word (ADIW), deshalb SUBI.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







Zitieren

Lesezeichen