.nolist .include"C:\Programme\Atmel\AVR Studio\Appnotes\2313def.inc" .nolist .equ c_value = 1400 ; 0,25sek bei 5,76Mhz .cseg .org 0x000 rjmp RESET ; Reset Handler .org 0x004 rjmp OC1A ; Timer1 CompareA Handler RESET: ldi r16, low(RAMEND) out SPL, r16 ldi r16,0xFF out DDRB, r16 ; PORTB Output ldi r16,high(c_value) ; Vergleichswert high out OCR1AH,r16 ldi r16,low(c_value) ; Vergleichswert low out OCR1AL,r16 ldi r16,0x00 out TCNT1H,r16 ; timer löschen high byte out TCNT1L,r16 ; timer löschen low byte ldi r16,0b01000000 out TIMSK,r16 ; Interrupt bei Gleichheit sei ; Interrupt enable ldi r16,0b000001101 out TCCR1B,r16 ; Timer löschen bei gleich und start;1024 ldi ZH,$00 ; Pointer auf die Werte im RAM ldi ZL,$60 ldi r16,0b00000001 st Z+,r16 ldi r16,0b00000010 st Z+,r16 ldi r16,0b00000100 st Z+,r16 ldi r16,0b00001000 st Z+,r16 ldi r16,0b00010000 st Z+,r16 ldi r16,0b00100000 st Z+,r16 ldi r16,0b01000000 st Z+,r16 ldi r16,0b10000000 st Z+,r16 ldi ZL,$60 ;pointer zum Anfang MAIN: rjmp MAIN ; do something else OC1A: ; TIM1_COMP1 Handler ld r17, Z+ com r17 out PORTB,r17 cpi Zl, 0x68 breq back ; Branch if equal return: reti back: ldi Zl, $60 ;z-pointer zurück rjmp return