|
|
| 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 |