Страница Ивана Рощина > Статьи >

© Иван Рощин, Москва

ZXNet: 500:95/462.53
E-mail: bestview@mtu-net.ru
WWW: http://www.ivr.da.ru

Скажи вампирам «Нет»!

Радиомир. Ваш компьютер» 2/2002, под псевдонимом BV_Creator)

Дата последнего редактирования: 9.11.2002.


Вентилятор нужен, чтобы засасывать комаров через дисковод.
Народная мудрость.


Да-да, речь пойдёт именно о том, как использовать компьютер для борьбы с этими кровососущими тварями, — правда, не таким жестоким способом, как в эпиграфе. :–) Прочитал я недавно интересную заметку [1] о том, как одна музыкальная радиостанция добавляет в свои трансляции звуковой сигнал, отпугивающий комаров. Там упоминалось, что частота этого сигнала 12,3 КГц. И я решил попробовать сформировать подобный сигнал с помощью своего ZX Spectrum.


Вот первый вариант процедуры: сигнал воспроизводится через встроенный динамик.

;При тактовой частоте процессора 3,5 МГц один период составит
;3,5*10^6/12,3*10^3 ~= 285 тактов (точное значение 284,55).
;Пусть продолжительность одного полупериода будет 142 такта,
;а другого - 143.

           DI

M1         LD   B,8     ;7          \
           DJNZ $       ;7*13+8=99  |
           INC  HL      ;6          } 130+12=142
           LD   A,16    ;7          |
           OUT  (254),A ;11         /

           LD   B,9     ;7          \
           DJNZ $       ;8*13+8=112 |
           INC  HL      ;6          } 143
           LD   A,0     ;7          |
           OUT  (254),A ;11         /

           JR   M1      ;12

А вот второй вариант: для формирования сигнала используется музыкальный сопроцессор.

CHAN       EQU  0  ;Используемый канал: 0-A, 1-B, 2-C.
VOL        EQU  15 ;Громкость (0-15).

           LD   HL,#FFBF
           LD   C,#FD

;При тактовой частоте сопроцессора 1,75 Мгц значение делителя
;частоты тона должно быть равным 1,75*10^6/(12,3*10^3*16) ~= 9
;(точное значение 8,89). Выводим его в регистры частоты тона:

           LD   B,H
           LD   A,CHAN*2
           OUT  (C),A
           LD   B,L
           LD   A,9
           OUT  (C),A

           LD   B,H
           LD   A,CHAN*2+1
           OUT  (C),A
           LD   B,L
           XOR  A
           OUT  (C),A

;Включаем вывод частоты тона:

           LD   B,H
           LD   A,7
           OUT  (C),A
           LD   B,L
           LD   A,#FF
           RES  CHAN,A
           OUT  (C),A

;Установка громкости:

           LD   B,H
           LD   A,8+CHAN
           OUT  (C),A
           LD   B,L
           LD   A,VOL
           OUT  (C),A

           RET

Так как музыкальный сопроцессор работает независимо от основного процессора, то, выполнив эту процедуру, можно в дальнейшем работать с программами, не обращающимися к сопроцессору, и звук не будет прерван.

Обе процедуры формируют сигнал простейшей прямоугольной формы. Но форма оригинального сигнала много сложнее: как упоминается в [1], он занимает 1 МБ в формате Real Audio. Поэтому полезный эффект от использования этих процедур может оказаться ниже ожидаемого. Интересно было бы, если бы кто-то поделился своими результатами: помогает или нет?

Литература

  1. «Донимают комары? Вам поможет Интернет!». «Навигатор игрового мира» 9/2001, стр. 122.
Страница Ивана Рощина > Статьи >