2.4. ТЕЛЕФОННИЙ номеронабирач.

Іншим додатком схеми 2.1 може бути реалізація за допомогою SPECTRUM кнопковим номеронабирачем телефонного апарату. Тимчасова діаграма сигналу набору номера наведена на рис 2.4.

На цьому малюнку верхній рівень відповідає замкнутому станом телефонної лінії, а нижній – розімкнутого. Частота подвійних імпульсів набору номера повинна бути 10 імп / сек (допускається 8 – 11). Час між пачками імпульсів не менше 0,6 с. Для реалізації режиму набору номера нормально замкнуті контакти реле К1 включаються в розрив телефонної лінії, знімається трубка і запускається програма 2.8.

Програма 2.8.

3 PRINT AT 8,8; “SOLON 268-55-58”

5 PRINT AT 10,6;”PRESS NUMBER KEY 0-9″

18 IF INKEY$ = “1” THEN LET C=l: GO SUB 1100

20 IF INKEY$ = “2” THEN LET C=2: GO SUB 1100

30 IF INKEY$ = “3” THEN LET C=3: GO SUB 1100

40 IF INKEY$ = “4” THEN LET C=4: GO SUB 1100

50 IF INKEY$ = “5* THEN LET C=5: GO SUB 1100

60 IF INKEY$ = “6* THEN LET C=6: GO SUB 1100

70 IF INKEY$ = “V THEN LET C=7: GO SUB 1100

80 IF INKEY$ = “8” THEN LET C=8: GO SUB 1100

90 IF INKEY $ = "Г THEN LET C = 9: GO SUB 1100

100 IF INKEY$ = “0” THEN LET C=10: GO SUB 1100

200 GO TO 18

1100 FOR N=1 TOG

1110 FOR I=1 TO 3

1120 OUT 254,24: OUT 254,0

1130 NEXT I

1140 PAUSE 3

1150 NEXT N

1160 RETURN

Натискаючи на цифрові клавіші 0-9 можна набрати потрібний номер. При вимкненому комп'ютері телефоном можна користуватися в звичайному режимі. Програма 2.8 може бути вдосконалена дня підвищення надійності роботи та зручності користування. Як вже зазначалося, при використанні команд OUT у програмі на Бейсике можна сформувати вихідний сигнал з частотою не більше 100 Гц. При цьому формування часових інтервалів з тривалістю більше секунди труднощів не викликає. Проте, при формуванні імпульсів телефонного набору, тривалість імпульсів становить близько 50 мілісекунд, що є гранично малою величиною при частоті сигналу заповнення імпульсу близько 100 Гц. Це може при неточному підборі времязадающіх елементів у схемі 2.2 викликати нестабільність роботи або навіть повну непрацездатність пристрою. Уникнути цього можна підвищивши частоту заповнення в кілька разів. Таку частоту можна реалізувати при використанні підпрограми в машинних кодах. Підпрограма 2.9 виробляє сигнал тривалістю близько 50 мілісекунд при частоті заповнення 1000 Гц.

Програма 2.9.

Мнемоніка

Код

Коментар

push of

245

Збережемо в стеку регістри

push be

197

af і Ьс

Id c,35

14

Помістимо в регістр з

35

число періодів сигналу

Id b,100

6

Помістимо в регістр b

100

число в діапазоні 1-255

визначальне частоту

Id a,24

62

Встановимо 1 на виході

24

пристрої

out 254,a

211

254

dec b

5

Затримка

jr nz,-3

32

253

Id a,0

62

Встановимо 0 на виході

0

пристрої

out 254,a

211

254

Id b,100

6

100

dec b

5

Затримка

jr nz,-3

32

253

dec з

13

Почнемо наступний період

jr nz,-21

32

сигналу 235

pop bc

193

Відновимо be і af

pop af

241

ret

201

Повернення в Бейсік

Програма 2.9 використовується в якості підпрограми в програмі 2.10.

Програма 2.10.

2 PRINT AT 12,8; "Р-PAUSE"

3 PRINT AT 8,8; “SOLON 268-55-58”

4 PRINT AT 14,8;”N – NEW TELEFON”

5 PRINT AT 10,6;”PRESS NUMBER KEY 0-9″

6 PRINT AT 13,8;*R – REPEAT”

7 PRINT AT 19,4;”TLF: “;

11 DIM A (64)

12 FOR 1-1 TO 28

13 READ A (I): POKE (64000+1), A(l)

14 NEXT I

15 DATA 245,197,14,35,6,100,62,24,211,254,5,32,253,62,0,211,254,6,100,5,32,253,13,32,235,193,241,201

18 IF INKEY$ = “1” THEN LET C=1; GO SUB 1100

20 IF INKEY$ = “2” THEN LET C=2; GO SUB 1100

30 IF INKEY$ = “3” THEN LET C=3; GO SUB 1100

40 IF INKEY$ = “4” THEN LET C=4; GO SUB 1100

50 IF INKEY$ = “5” THEN LET C=5; GO SUB 1100

60 IF INKEY$ = “6” THEN LET C=6; GO SUB 1100

70 IF INKEY$ = “7” THEN LET C=7; GO SUB 1100

80 IF INKEY$ = “8” THEN LET C=8; GO SUB 1100

90 IF INKEY$ = “9” THEN LET C=9; GO SUB 1100

100 IF INKEY$ = “0” THEN LET C=10; GO SUE 1100

110 IF INKEY$ = “P” THEN PRINT “P”;PAUSE 100

120 IF INKEY$ = “R* THEN GO SUB 2000

130 IF INKEY$ = “N” THEN RUN

200 GO TO 18

1100 FOR N = 1 TO З

1110 RANDOMIZE USR 64001

1140 PAUSE 4

1150 NEXT N

1155 IF C=10 THEN LET C=0

1156 PRINT З

1157 PAUSE 100

1160 RETURN

2000 LET S=9

2005 PAUSE 200

2010 IF SCREENS (19,S)=” ” THEN RETURN

2020 IF SCREENS (19,S)=”P” THEN PAUSE 100

2030 IF SCREENS (19,S)=”1″ THEN LET C=1; GO SUB 3100

2040 IF SCREENS (19Д = "2" THEN LET C = 1; GO SUB = 3100

2050 IF SCREENS (19,S)=”3″ THEN LET C=1; GO SUB 3100

2060 IF SCREENS (19,S)=”4″ THEN LET C=1; GO SUB 3100

2070 IF SCREENS (19,S)=”5″ THEN LET C=1; GO SUB 3100

2080 IF SCREENS (19,S)=”6″ THEN LET C=1; GO SUB 3100

2090 IF SCREENS (19,S)=”7″ THEN LET C=1; GO SUB 3100

2100 IF SCREENS (19,S)=”8″ THEN LET C=1; GO SUB 3100

2110 IF SCREENS (19,S)=”9″ THEN LET C=1; GO SUB 3100

2120 IF SCREENS (19,S)=”0″ THEN LET C=10; GO SUB 3100

2150 LET S=S+1

2160 GO TO 2010

3100 FOR N = 1 TO З

3110 RANDOMIZE USR 64001

3140 PAUSE 4

3150 NEXT N

3157 PAUSE 100

3160 RETURN

Програма 2.9.

Мнемоніка

Код

Коментар

push of

245

Збережемо в стеку регістри

push bc

197

аt і Ьс

Id c,35

14

Помістимо в регістр з

35

число періодів сигналу

Id b,100

6

Помістимо в регістр b

100

число в діапазоні 1-255

визначальне частоту

Id a,24

62

Встановимо 1 на виході

24

пристрої

out 254,a

211

254

dec b

5

Затримка

jr nz,-3

32

253

Id a,0

62

Встановимо 0 на виході

0

пристрої

out 254,a

211

254

Id b,100

6

100

dec b

5

Затримка

jr nz,-3

32

253

dec з

13

Почнемо наступний період

jr nz,-21

32

сигналу 235

pop bс

193

Відновимо bс і af

pop af

241

ret

201

Повернення в Бейсік

Програма 2.9 використовується в якості підпрограми в програмі 2.10.

2 PRINT AT 12,8;”P-PAUSE”

3 PRINT AT 8,8; “SOLON 268-55-58”

4 PRINT AT 14,8;”N – NEW TELEFON”

5 PRINT AT 10,6;”PRESS NUMBER KEY 0-9″

6 PRINT AT 13,8;*R – REPEAT”

7 PRINT AT 19,4;”TLF: “;

11 DIM A (64)

12 FOR I=1 TO 28

13 READ A (I): POKE (64000+1), A(l)

Після запуску програми 2.10 на екрані з'являться написи:

SOLON: 268-55-58

PRESS NUMBER KEY (0-9)

P – PAUSE

R – REPEAT

N – NEH TLF

TLF: SP095P2685558

Puc.2.5.

Піднявши трубку, можна набирати номер. Одночасно з передачею імпульсного коду на екрані буде відображатися ви набираєте номер, наприклад:

TLF: 8P095P2685558

Буква Р позначає збільшену паузу, необхідну, наприклад, при міжміського зв'язку. Якщо натиснути CAPS SHIFT і R, то буде повторений набір номера з екрану. Перед повторним набором, природно, необхідно покласти та підняти знову трубку. Після натискання CAPS SHIFT і N можна набирати новий номер. У наведеній програмі є одна істотна незручність: перед набором нового номера або повторним набором необхідно покласти на кілька секунд і потім підняти трубку. Цю операцію цілком може взяти на себе комп'ютер. У момент коли трубка натискає на важелі телефонного апарата на АТС передається сигнал "відбій". Цей сигнал формується за "розрив" телефонної лінії. Наш пристрій, який формує імпульси набору номера, також може "розірвати" лінію, тобто сформувати сигнал "відбій". Для цього в програму 2.10 необхідно внести наступні зміни:

Програма 2.10a.

130 IF INKEY$ = “N” THEN GO TO 201

200 GO TO 18

201 POKE 64004,255:POKE 64006,255:POKE 64019,255

202 RANDOMIZE USR 64001

210 RUN

2001 POKE 64004,255:POKE 64006,255:POKE 64019,255

2002 RANDOMIZE USR 64001

2003 POKE 64004,35:POKE 64006,100:POKE 64019,100

У рядку 201 змінюються параметри підпрограми для реалізації затримки в 1 – 2 секунди, необхідної для посилки сигналу "відбій" на АТС. Аналогічні дії виконуються в рядку 2001. У рядку 2003 проводиться відновлення параметрів для подальшого формування імпульсів набору номера. Після введення зазначених змін можна повторювати набір номера або набирати новий номер при будь-якому сигналі у слухавці.

Можна й далі вдосконалити програму: ввести список найбільш часто використовуваних номерів, довідник за кодами міжміського зв'язку і так далі. Це пропонуємо зробити зацікавленим читачам.