Программирование на Ассемблере
управления DMA
adcon = $DFF09E ;регистр управления звуком
c0thi = $DFF0A0 ;старшее слово регистра адреса таблицы
c0tlo = c0thi + 2 ;младшее слово регистра адреса таблицы
c0tl = c0thi + 4 ;регистр размера таблицы
c0per = c0thi + 6 ;регистр периода звука
c0vol = c0thi + 8 ;регистр громкости run: ;генерация звука сирены
move.l #table,c0thi+16 ;адрес таблицы для канала 1
move #8,c0tl+16 ;размер таблицы - 8 слов
move #300,c0per+16 ;период
move #40,c0vol+16 ;громкость move.l #table2,c0thi ;адрес таблицы для канала 0
move #8,c0tl ;размер таблицы
move #60000,c0per ;период
move #30,c0vol ;громкость move #$8010,adcon ;включаем режим модуляции по частоте
move #$8203,ctlw ;запускаем DMA
move.l #100000,D0 ;счетчик цикла задержки
dl: subq #1,D0 ;задержка
bne.s dl
still: ;** выключить звук
move #$10,adcon ;выключаем режим модуляции
move #3,ctlw ;выключаем каналы
rts ;все table: ;данные для основного тона - синусоида
dc.b -40,-70,-90,-100,-90,-70,-40,0
dc.b 40,70,90,100,90,70,40,0
table2: ;данные для частотной модуляции, чем
;выше значение, тем ниже частота
;основного тона
dc.w 400,430,470,500,530,500,470,430 end Теперь запустите программу и Вы услышите звук сирены. Изменяя значения в
table2 Вы сможете получить другие не менее интересные звуковые эффекты.
В этой программе мы использовали новый регистр - adcon ($DFF09E).
|