;------------------------------------------------------------
; timer1.asm
;------------------------------------------------------------
.include "m16def.inc"
.device ATmega16
.def temp = r16
.def leds = r17
.equ start = 65536 - 7812 ; 2 hoch 16 minus 7812
.equ highValue = high(start)
.equ lowValue = low(start)
.org $0000
; ***** INTERRUPT VECTORS *********************************
rjmp reset ; Reset Handler
;.org INT0addr ;= 0x0002 ; External Interrupt Request 0
;.org INT1addr ;= 0x0004 ; External Interrupt Request 1
;.org OC2addr ;= 0x0006 ; Timer/Counter2 Compare Match
;.org OVF2add ;= 0x0008 ; Timer/Counter2 Overflow
;.org ICP1addr ;= 0x000a ; Timer/Counter1 Capture Event
;.org OC1Aaddr ;= 0x000c ; Timer/Counter1 Compare Match A
;.org OC1Baddr ;= 0x000e ; Timer/Counter1 Compare Match B
.org OVF1addr ;= 0x0010 ; Timer/Counter1 Overflow
rjmp timer1
;.org OVF0addr ;= 0x0012 ; Timer/Counter0 Overflow
;.org SPIaddr ;= 0x0014 ; Serial Transfer Complete
;.org URXCaddr ;= 0x0016 ; USART, Rx Complete
;.org UDREaddr ;= 0x0018 ; USART Data Register Empty
;.org UTXCaddr ;= 0x001a ; USART, Tx Complete
;.org ADCCaddr ;= 0x001c ; ADC Conversion Complete
;.org ERDYaddr ;= 0x001e ; EEPROM Ready
;.org ACIaddr ;= 0x0020 ; Analog Comparator
;.org TWIaddr ;= 0x0022 ; 2-wire Serial Interface
;.org INT2addr ;= 0x0024 ; External Interrupt Request 2
;.org OC0addr ;= 0x0026 ; Timer/Counter0 Compare Match
;.org SPMRaddr ;= 0x0028 ; Store Program Memory Ready
reset:
ldi temp,low(RAMEND) ;Initialize stackpointer for parts with SW stack
out SPL,temp
ldi temp,high(RAMEND) ;Commented out since 1200 does not have SRAM
out SPH,temp
ldi temp, 0xFF
out DDRB, temp ; PORTB configured for output
ldi leds, 0xFF
out PORTB, leds ; LEDs ausschalten
ldi temp, 1<<TOIE1 ; 1000 0000
out TIMSK, temp ; Timer 1 interrupt ein
; Startwert des Timers einstellen:
ldi temp, highValue
out TCNT1H, temp
ldi temp, lowValue
out TCNT1L, temp
ldi temp, 0b00000101
out TCCR1B, temp ; Timer 1 starten mit Vorteiler 1024
sei ; interrupts generell aktivieren
main:
loop:
nop
nop
rjmp loop
;--------------------------------------------------
timer1:
com leds
out PORTB, leds
; Startwert des Timers neu einstellen:
ldi temp, highValue
out TCNT1H, temp
ldi temp, lowValue
out TCNT1L, temp
reti