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