Toggle_eine_Tonleiter_an_PB0.asm


1
.include "tn13def.inc"
2
.def temp=R16
3
4
Reset:   
5
    ldi R16,low(Ramend)
6
    out SPL,R16
7
    ldi temp,0b00000001    ; 
8
    out DDRB,temp      ; 
9
10
11
12
13
; Timer0 einstellen
14
  ldi r16, (1<<WGM01)|(1<<COM0A0) ; Toggle OC0A (PB0) on Compare Match (CTC Mode)
15
  out TCCR0A, r16    
16
  ldi r16, (1<<CS01)|(1<<CS00) ; Takt 4,8MHz / Vorteiler 64 
17
  out TCCR0B, r16
18
19
OchNoe:
20
  clr r16
21
  out TCNT0, r16
22
  ldi r19, 151   ; c
23
  out OCR0A, r19
24
rcall warten
25
  ldi r19, 135   ; d
26
  out OCR0A, r19
27
rcall warten
28
  ldi r19, 121   ; e
29
  out OCR0A, r19
30
rcall warten
31
  ldi r19, 114   ; f
32
  out OCR0A, r19
33
rcall warten
34
  ldi r19, 101   ; g
35
  out OCR0A, r19
36
rcall warten
37
  ldi r19, 91    ; a
38
  out OCR0A, r19
39
rcall warten
40
  ldi r19, 81    ; h
41
  out OCR0A, r19
42
rcall warten
43
  ldi r19, 76    ; c'
44
  out OCR0A, r19
45
rcall warten
46
47
48
49
ende :rjmp OchNoe
50
51
52
warten:  
53
  clr r16           ;Zeitverzögerung ca.1 Sekunde
54
zeit0:  
55
  inc r16
56
  clr r17
57
zeit1:  
58
  inc r17
59
  clr r18
60
zeit2:  
61
  inc r18
62
  cpi r18, 0xff
63
  brne zeit2
64
  cpi r17, 0xff
65
  brne zeit1
66
  cpi r16, 0x10
67
  brne zeit0
68
  ret