timer-code.asm


1
.include "m8def.inc" ;ändern!
2
3
.org 0x00
4
rjmp Reset
5
.org OVF1addr
6
rjmp TimerOverflow
7
8
Reset:
9
;Stackpointer laden
10
  ldi r16, HIGH(RAMEND)
11
  out SPH, r16
12
  ldi r16, LOW(RAMEND)
13
  out SPL, r16
14
;Timer initialisieren
15
  ldi r16, HIGH(10)  ;Maximalwert des Counters 56250
16
  out ICR1H, r16
17
  ldi r16, LOW(10)
18
  out ICR1L, r16
19
  ldi r16, 0    ;Timermodus => rtfm
20
  out TCCR1A, r16
21
  ldi r16, 0b00000001  ;vorteiler aus 001
22
  out TCCR1B, r16
23
  ldi r16, 0b00000100  ;Interrupt bei TimerOverflow an
24
  out TIMSK, r16
25
  sei      ;Interrupts global aktivieren
26
;irgendwas anderes machen
27
  
28
;gar nix mehr machen bis zum Interrupt
29
  ldi r16, 1
30
idle:  rjmp idle
31
32
33
34
TimerOverflow:  ;Wenn der Timer über 56250 drüberläuft...
35
  dec r16
36
  tst r16
37
  brne tovf_end
38
  ldi r16, 1
39
;neue Zeit berechnen und ausgeben
40
  
41
tovf_end:
42
  reti