|
57 |
|
lpm |
XL
Z+ |
Извлекаем
адрес из таблицы |
58 |
|
lpm |
XH
Z |
И
помещаем в x |
|
|
|
Воспроизведение
мелодии |
59 |
m4 |
mov |
ZH.
XH |
Записываем
в Z начало мелодии |
60 |
|
mov |
ZL
.XL |
|
61 |
m5 |
ln |
temp
PINO |
Читаем
содержимое порта D |
62 |
|
cpl |
temp
0x7F |
Проверяем
на равенство 7FH |
63 |
|
dreg |
m1 |
Если
равно(скобки опущены) в начало |
64 |
|
lpm |
temp
Z |
Извлекаем
код ноты |
65 |
|
cpl |
temp
0xFF |
Проверяем
не конец ли мелодии |
66 |
|
dreg |
m4 |
Если
конец начинаем мелодию сначала |
67 |
|
and1 |
temp
0x1f |
Выделяем
код тона из кода ноты |
68 |
|
mov |
tnota
temp |
Записываем
в регистр кода тона |
69 |
|
lpm |
temp
Z+ |
Еще
раз берем код ноты |
70 |
|
col |
temp |
Производим
сдвиг кода ноты |
71 |
|
col |
temp |
|
72 |
|
col |
temp |
|
73 |
|
col |
temp |
|
74 |
|
and1 |
temp.
0х07 |
выделяем
код длительности |
75 |
|
mov |
dnota
temp |
помещаем
ее в регистр длительности |
76 |
|
rcall |
nota |
к
подпрограмме воспроизведения ноты |
77 |
|
rjmp |
m
S |
В
начало цикла (следующая нота) |
|
|
Вспомогательные
подпрограммы |
78 |
addw |
duch |
YH |
подпрограмма
16 разрядного сложения |
79 |
|
lsl |
YL |
Умножение
первого слагаемого на 2 |
80 |
|
ld1 |
YH.O |
второй
байт первого слагаемого |
81 |
|
add |
ZL.
YL |
Складывается
два слагаемых |
82 |
|
adc |
ZH.
YH |
|
83 |
|
pop |
YH |
|
84 |
|
ret |
|
|
|
|
|
Подпрограмма
исполнения одной ноты |
85 |
nota. |
push |
ZH |
|
86 |
|
push |
ZL |
|
87 |
|
push |
YL |
|
88 |
|
push |
temp |
|
89 |
|
col |
fnota.
0x00 |
Проверка
не пауза ли |
|
|
|
|
|
|
|
118 |
|
rcall |
addw |
К
программе 16-разрядного сложения |
119 |
|
lpm |
YL
Z+ |
Читаем
первый байт коэффициента задержки |
120 |
|
lpm |
YH
Z |
Читаем
второй байт коэффициента задержки |
121 |
|
ctr |
ZL |
обнуляем
регистровую пару Z |
122 |
|
ctr |
ZH |
|
|
|
Цикл
задержки |
|
123 |
w1 |
ldl |
loop
255 |
Пустой
внутренний цикл |
124 |
w2 |
dec |
loop |
|
125 |
|
brne |
w2 |
|
126 |
|
adlw |
R3O
1 |
Увеличение
регистровой пары Z на единицу |
127 |
|
co |
YL
ZL |
Проверка
младшего раздела |
128 |
|
brne |
w1 |
|
129 |
|
cp |
YH
ZH |
Проверка
старшего разряда |
130 |
|
brne |
w1 |
|
131 |
|
pop |
YL |
Завершение
подпрограммы |
132 |
|
pop |
YH |
|
133 |
|
pop |
ZL |
|
134 |
|
pop |
ZH |
|
135 |
|
ret |
|
|
|
|
Таблица
длительности задержек |
136 |
tabz |
dw |
128.256/512/1024.2048.4096.8192 |
|
|
Таблица
коэффициента деления |
137 |
tabkd |
dw |
0 |
|
138 |
|
dw |
4748.4480.4228.3992.3768.3556.3358.3168.2990.2822.2664.2514 |
139 |
|
dw |
2374.2240.2114.1996.1884.1778.1678.1584.1495.1411.1332.1257 |
140 |
|
dw |
1187.1120/1057.998.942.889.839.792 |
|
|
Таблица
начал всех мелодий |
141 |
tabа |
dw |
mei1*2,
mei2*2, mei3*2, mei4*2, |
142 |
|
dw |
mei5*2,
mei6*2, mei7*2, |
|
|
Таблица
мелодий |
|
|
В
траве сидел кузнечек |
143 |
mel1 |
db |
109.104.109.104.109.108.108.96.108.104 |
144 |
|
db |
108.104.108.109.109.96.109.104.109.104 |
145 |
|
db |
109.108.108.96.108.104.
109.104.109.104 |
146 |
|
db |
112.112.112.111.
108.109.109.96.109.104 |
|
147 |
|
db |
111.79.79.111.111.112.80.80.112.112.80 |
148 |
|
db |
112.112.112.111.
108.109. 104.109.104 |
149 |
|
db |
109.108.108.96.108.141.128.96.255 |
|
|
Песенка
крокодила Гены |
150 |
mel2 |
db |
109.110.141.102.104.105.102.109.110.141 |
151 |
|
db |
111.79.79.111.111.112.80.80.
108.96.108 |
152 |
|
db |
108.96.108.141.104.105.102.109.110.141 |
153 |
|
db |
79.111.111.112.80.
96.108.104. 109 |
154 |
|
db |
146.109.105.136.107.105.134.128.128.102 |
155 |
|
db |
79.111.111.112.80.
96.110.176.112.108.109 |
156 |
|
db |
109.105.136.107.105.134.105.142.146.144. |
157 |
|
db |
105.136.107.105.134.
134.128.128.102.141 |
158 |
|
db |
111.111.112.80.
96.110.176.136.107.105.134 |
159 |
|
db |
105.134.
134.128.128.142.141.105.109.139 |
160 |
|
db |
126.173.146.128.96.255 |
|
|
В
лесу родилась елочка |
161 |
mel3 |
db |
132.141.141.139.141.137.132.132.132.141 |
162 |
|
db |
141.142.139.176.128.144.146.146.154.154 |
163 |
|
db |
153.151.149.144.153.153.151.153.181.128 |
164 |
|
db |
96.255 |
|
|
Happy
births to you |
165 |
mel4 |
db |
107.107.141.139.144.143.128.107.107.141 |
166 |
|
db |
139.146.144.128.107.107.151.148.146.112 |
167 |
|
db |
111.149.117.117.148.144.146.144.128.255 |
|
|
С
чего начинается родина |
168 |
mel5 |
db |
99.175.109.107.106.102.99.144.111.175 |
169 |
|
db |
96.99.107.107.107.107.102.104.170.96 |
170 |
|
db |
99.109.109.109.109.107.106.143.109.141 |
171 |
|
db |
99.109.109.109.109.104.106.171.96.99 |
172 |
|
db |
111.109.107.106.102.99.144.111.143.104 |
173 |
|
db |
114.114.114.114.109.111.176.96.104.116 |
174 |
|
db |
112.109.107.106.64.73.143.107.131.99 |
175 |
|
db |
144.80.80.112.111.64.75.173.128.255 |
|
|
Песня
из кинофильма «Веселые ребята» |
176 |
mel6 |
db |
105.109.112.149.116.64.80.148.114.64 |
177 |
|
db |
78.146.112.96.105.105.109.144.111.64 |
178 |
|
db |
80.145.112.64.81.178.96.117.117.117 |
179 |
|
db |
149.116.64.82.146.112.64.79.146.144 |
180 |
|
db |
96.105.105.107.141.108.109.112.110.102 |
181 |
|
db |
104.137.128.96.105.105.105.137.102.64 |
182 |
|
db |
73.142.105.107.109.64.75.137.96.105 |
183 |
|
db |
105.105.137.102.105.142.112.64.82.180 |
184 |
|
db |
96.116.116.116.148.114.112.142.109.64 |
185 |
|
db |
78.146.144.96.105.105.107.141.108.109 |
186 |
|
db |
112.110.102.104.169.96.96.255 |
|
|
Улыбка |
187 |
mel7 |
db |
107.104.141.139.102.105.104.102.164.128 |
188 |
|
db |
104.107.109.109.109.111.114.112.111.109 |
189 |
|
db |
144.139.128.109.111.144.96.111.109.104 |
190 |
|
db |
107.105.173.128.111.109.112.107.111.109 |
191 |
|
db |
109.107.102.104.134.132.128.100.103.107 |
192 |
|
db |
107.107.107.139.112.100.103.102.102.102 |
193 |
|
db |
134.102.103.107.105.107.108.108.108.108 |
194 |
|
db |
107.105.107.108.144.142.128.112.107.110 |
195 |
|
db |
140.112.105.108.107.107.107.105.140.139 |
196 |
|
db |
139.112.103.102.103.105.108.107.105.103 |
197 |
|
db |
128.112.107.110.108.108.108.108.140.112.105 |
198 |
|
db |
108.107.107.107.139.112.103.102.103.105 |
199 |
|
db |
108.107.105.103.105.1039.132.128.96.96 |
200 |
|
db |
96.255 |