2.1. ФОРМУВАННЯ ВИХІДНИХ СИГНАЛІВ.

У багатьох саморобних комп'ютерах немає ніяких роз'ємів для підключення, зовнішніх пристроїв, за винятком роз'єму підключення магнітофона. Тому, як для пристроїв введення, так і для пристроїв виводу, будемо розраховувати тільки на цей роз'єм. На цей роз'єм виведений сигнал, який формує комп'ютер для запису інформації на магнітофон. Далі буде розглянуто можливість використання цього сигналу для управління зовнішніми пристроями. Розглянемо докладніше спосіб формування сигналу на цьому виході. Для формування сигналу запису інформації на магнітофон використовується 3 розряд порту з номером 254. Генерація сигналу на цьому виході полягає в почергової установці "1" і скидання в "0" зазначеного розряду. На жаль, вихід мікросхеми та роз'єм з'єднані за допомогою ємнісної зв'язку та на виході можна одержувати тільки змінну напругу. Далі буде показано яким чином можна використовувати це змінна напруга в якості керуючого сигналу. У програмі 2.1 наводиться приклад формування вихідного сигналу:

Програма 2.1.

10 OUT 254,8
20 OUT 354,0
30 GO TO 10

Програма може бути дещо змінена для того, щоб одночасно з сигналом на виході формувався сигнал у динаміці комп'ютера. Для цього необхідно синхронне зміна розрядів 3 та 4 порти 254:

Програма 2.2.

10 OUT 254,24
20 OUT 254,0
30 GO TO 10

Електрична схема запису на магнітофон в більшості комп'ютерів виконана так, що сигнали з частотами нижче 300 Гц і вище 3 КГц послаблюються, тому бажано формувати вихідний сигнал у вказаному діапазоні частот. Змінюючи затримку між встановленням і скиданням розряду можна регулювати частоту вихідного сигналу. Для затримки можна використовувати команду PAUSE. Проблема, однак, полягає в тому, що мінімальна затримка Давайте цією командою складає 1 / 50 секунди і, тому, програма 2.3 дає сигнал з частотою близько 25 Гц:

Програма 2.З.

10 OUT 254,24
15 PAUSE 1
20 OUT 254,0
25 PAUSE 1
30 GO TO 10

Рішенням проблеми може стати використанням для затримки будь-яких інших операторів, наприклад LET, які формально виконуються, але ніяких дій не роблять. У цьому випадку програма буде мати вигляд:

Програма 2.4.

10 OUT 254,24

15 LET Z=0

20 OUT 254,0

25 LET Z=0

30 GO TO 10

Збільшуючи кількість операторів LET можна змінювати частоту (у бік зменшення) і встановити необхідну частоту. У програмах 2.1-2.4 вихідний сигнал звукової частоти генерується необмежений час -До вимикання комп'ютера або переривання виконання програми клавішею BREAK. На практиці часто потрібно, щоб сигнал мав конкретну тривалість. Програма 2.5 включає вихідний сигнал на заданий час:

Програма 2.5.

5 LET N=100

10 OUT 254,24

20 OUT 254,0

25 LET N=N-1

26 IF N=0 THEN GO TO 40

30 GO TO 10

40 STOP

Частота вихідного сигналу, що генерується програмою 2.5 близько 100 Гц. Для того, щоб мати можливість точно задавати часовий інтервал, необхідно провести калібрування. Для цього задайте N = 10000 і виміряйте секундоміром тривалість (t) вихідного сигналу. Ока Довжки бути близько 120 секунд. Тоді частоту (F) можна обчислити:

PRINT 10000/t,
а період (Т):

PRINT t/10000,

де t тривалість вихідного сигналу в секундах за результатами вимірювань. Після цього потрібний інтервал у програмі 2.5 можна задавати так

1 LET T = …

2 INPUT “INTERVAL (Sec) t=”,t

3 LET N=t/T

або

1 LET F = …

2 INPUT “INTERVAL (Sec) t=”;t

3 LET N = t*F

Якщо змінити програму 2.5 і використовувати, наприклад, оператор циклу FOR-NEXT, то калібрування необхідно провести знову. Програма в цьому випадку може бути такою:

Програма 2.5а.

5 FOR N = 0 ТО 1000

10 OUT 254,24

20 OUT 254,0

30 NEXT N

40 STOP

Програма 2.5а.

Тривалість сигналу визначається величиною N. Часто потрібно, щоб вихідний сигнал вмикається і вимикається кілька разів або повторювався циклічно. Для прикладу напишемо програму, яка буде виробляти позивні сигнали першого штучного супутника Землі. Цей сигнал (літера U в коді Морзе) у вигляді тимчасового графіка виглядає так:

Рис. 2.1.

Як видно з графіка, сигнал через 10 інтервалів часу повторюється. Тривалість "точки" дорівнює тривалості паузи між знаками. Тривалість "тире" дорівнює тривалості трьох "точок", а тривалість паузи між літерами дорівнює тривалості "тире". В якості підпрограми, яка формує сигнал "точка" використовуємо програму 2.5. Трохи змінивши її отримаємо підпрограми, що формують і "тире" і паузи. Підпрограми виконуються одна за одною і після формування коду букви U процес має повторюватися.

Програма 2.6.

10 LET N=30: LET A=24: GO SUB 100

20 LET N=30: LET A=0: GO SUB 100

30 LET N=30: LET A=24: GO SUB 100

40 LET N=30: LET A=0: GO SUB 100

50 LET N=90: LET A=24: GO SUB 100

60 LET N=90: LET A=0: GO SUB 100

70 GO TO 10

100 OUT 254,24

120 OUT 254,0

125 LET N=N-1

126 IF N=0 THEN GO TO 140

130 GO TO 100

140 RETURN