TDA1543.asm


1
.include "m8515def.inc"
2
3
.def temp = r16
4
.def daten = r17
5
.def counterH = r18
6
.def counterL = r19
7
.def temp2 = r20
8
9
.equ DAC = PORTB
10
.equ clock = 7
11
.equ data = 5
12
.equ select = 0
13
14
.equ src = 2
15
16
.org 0x000
17
  rjmp RESET
18
.org OC0addr
19
  rjmp Spielen
20
21
22
RESET:
23
    ldi temp, LOW(RAMEND)
24
    out SPL, temp
25
    ldi temp, HIGH(RAMEND)
26
    out SPH, temp
27
28
        ldi temp, 0xFF
29
        out DDRB, temp
30
31
    ldi temp, (1<<WGM01) | (1<<CS00)
32
    out TCCR0, temp
33
34
    ldi temp, 125
35
    out OCR0, temp
36
37
    ldi counterL, 0
38
    ldi counterH, 0
39
    ldi ZH, HIGH(sound*2)
40
    ldi ZL, LOW(sound*2)
41
42
    ldi temp, 1<<OCIE0
43
    out TIMSK, temp
44
45
        sei
46
47
loop:
48
    rjmp loop
49
50
Spielen:
51
    lpm daten, Z
52
53
    sbi DAC, data
54
    sbrs daten, 7
55
    cbi DAC, data
56
    sbi DAC, clock
57
    cbi DAC, clock
58
59
    sbi DAC, data
60
    sbrs daten, 6
61
    cbi DAC, data
62
    sbi DAC, clock
63
    cbi DAC, clock
64
65
    sbi DAC, data
66
    sbrs daten, 5
67
    cbi DAC, data
68
    sbi DAC, clock
69
    cbi DAC, clock
70
71
    sbi DAC, data
72
    sbrs daten, 4
73
    cbi DAC, data
74
    sbi DAC, clock
75
    cbi DAC, clock
76
77
    sbi DAC, data
78
    sbrs daten, 3
79
    cbi DAC, data
80
    sbi DAC, clock
81
    cbi DAC, clock
82
83
    sbi DAC, data
84
    sbrs daten, 2
85
    cbi DAC, data
86
    sbi DAC, clock
87
    cbi DAC, clock
88
89
    sbi DAC, data
90
    sbrs daten, 1
91
    cbi DAC, data
92
    sbi DAC, clock
93
    cbi DAC, clock
94
95
        ;select togglen
96
        in temp, DAC
97
        ldi temp2, 1<<select
98
        eor temp, temp2
99
        out DAC, temp
100
        and temp, temp2
101
        brne ojmp
102
        adiw Z, 1     ;Z nur jedes 2. mal erhöhen
103
        cpi ZL, LOW(soundend*2)
104
        brne ojmp
105
        ldi ZH, HIGH(sound*2)
106
    ldi ZL, LOW(sound*2)
107
ojmp:
108
109
        sbi DAC, data
110
    sbrs daten, 0
111
    cbi DAC, data
112
    sbi DAC, clock
113
    cbi DAC, clock
114
115
        reti
116
.if src==1
117
sound:
118
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
119
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
120
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
121
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
122
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
123
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
124
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
125
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
126
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
127
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
128
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
129
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
130
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
131
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
132
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
133
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
134
soundend:
135
.elif src==2
136
sound:
137
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
138
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
139
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
140
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
141
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
142
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
143
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
144
.db 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F
145
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
146
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
147
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
148
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
149
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
150
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
151
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
152
.db 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
153
soundend:
154
.elif src==3
155
sound:
156
.db 0x05, 0x05, 0x0a, 0x0f, 0x14, 0x19, 0x1e, 0x1e, 0x22, 0x27, 0x2a, 0x2e, 0x32, 0x35, 0x35, 0x38
157
.db 0x3b, 0x3d, 0x40, 0x43, 0x46, 0x46, 0x48, 0x4b, 0x4f, 0x51, 0x55, 0x58, 0x58, 0x5b, 0x5e, 0x60
158
.db 0x63, 0x64, 0x65, 0x65, 0x66, 0x66, 0x65, 0x64, 0x63, 0x61, 0x61, 0x60, 0x5d, 0x5b, 0x5a, 0x58
159
.db 0x57, 0x57, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x50, 0x4f, 0x4e, 0x4d, 0x4b, 0x4a, 0x49, 0x49
160
.db 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x42, 0x41, 0x40, 0x3f, 0x3f, 0x3f, 0x3e, 0x3e, 0x3e, 0x3e
161
.db 0x3f, 0x3f, 0x40, 0x41, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b
162
.db 0x4c, 0x4c, 0x4d, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x53, 0x51, 0x51
163
.db 0x50, 0x4d, 0x4c, 0x4a, 0x48, 0x46, 0x46, 0x44, 0x43, 0x41, 0x3f, 0x3e, 0x3b, 0x3b, 0x38, 0x36
164
.db 0x31, 0x2d, 0x28, 0x23, 0x23, 0x1e, 0x18, 0x13, 0x0c, 0x07, 0x02, 0x02, 0xfe, 0xf9, 0xf5, 0xf0
165
.db 0xeb, 0xe7, 0xe7, 0xe2, 0xdd, 0xd8, 0xd4, 0xce, 0xca, 0xca, 0xc5, 0xc1, 0xbd, 0xb9, 0xb5, 0xb1
166
.db 0xb1, 0xae, 0xaa, 0xa7, 0xa3, 0xa0, 0x9d, 0x9d, 0x9a, 0x96, 0x93, 0x90, 0x8d, 0x8d, 0x8b, 0x89
167
.db 0x87, 0x85, 0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x83, 0x84, 0x86, 0x86, 0x87, 0x89, 0x8a, 0x8c
168
.db 0x8d, 0x8f, 0x8f, 0x90, 0x90, 0x91, 0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x90, 0x8f, 0x8f, 0x8e
169
.db 0x8e, 0x8e, 0x8d, 0x8e, 0x8f, 0x91, 0x93, 0x93, 0x96, 0x99, 0x9b, 0x9e, 0xa1, 0xa4, 0xa4, 0xa6
170
.db 0xa8, 0xab, 0xac, 0xae, 0xaf, 0xaf, 0xb0, 0xb2, 0xb3, 0xb5, 0xb7, 0xb9, 0xb9, 0xbc, 0xbf, 0xc2
171
.db 0xc6, 0xc9, 0xce, 0xce, 0xd2, 0xd6, 0xdb, 0xe0, 0xe5, 0xe9, 0xe9, 0xef, 0xf4, 0xfa, 0xff, 0x03
172
soundend:
173
.endif