Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[35]

Рис .6.4. SIREN А - программа. аящая мелодию

воспроизво-

LIST

10 GOSUB 210

знаки с десятичным числом под каждой 20 dl-nc14 pVpdp ютой, определяющим ее тональность. На,

>ис. 6.3, б приведены десятичные коне- зо REM nc-количество цикл ганта, характеризующие длительность А0 REM Р1 НАЧАЛО ЦИКПА то звучания. Программа использует двенальности

ячейки ( Д 300 и Д 301). Перед запус- so rem P2-koheu цикла тон ком программы в ячейку Д 300 необхо- 60 димо поместить число, эквивалентное высоте (тональности), а в ячейку Д 301 <*5 - число, эквивалентное продолжительности, воспроизводимой динамиком ноты.

На рис. 6.4 приведена программа SIREN А, организующая самые разнообразные музыкальные заставки. Ими можно iоо разнообразить программы. Программа использует оператор GOSUB.

GOSUB означает переход на строку с 130 номером, указанным в этом операторе. Как только в последующих операторах будет встречен оператор RETURN, происходит автоматический возврат на оператор, следовавший за GOSUB. В программе в строке 10 оператор GOSUB 200 передает управление на строку 210. Группа операторов, стоящая в строках 210,220,230, 220 организует запись в память начиная с адреса 770 ( Д 302), констант, запи- 230 санных в DATA. Запись в память осуществляется до тех пор, пока не будет прочитано число 256, по которому происходит возврат (оператор RETURN) на строку 10.

В прил. 2 приведена программа: ВАЛЬС, использующая программу, представленную на рис. 6.3 и записываемую в память аналогично тому, как это делается в операторах 210, 220, 230 программы SIREN А.

В заключение отметим еще раз, что-

770 = Д 302, 769 = Д 301, 768 = Д 300

Ввод данных с клавиатуры. Ввод данных с клавиатуры можно организовать, например, так:

100 WATT Д СО00, Д 80,0 : X Д = CHR Д (РЕЕК( СО00)) 200 РОКЕ Д СОЮ.О

В результате работы этой программы в переменной X Д будет находиться код последней нажатой клавиши. Поскольку признаком нажатой клавиши служит единица в старшем разряде, то для получения действительного кода (в КОИ-8) необходимо эту единицу исключить. Следующая программа распечатывает на экра-

70

80

но

120

140 150

200

210

АЛЬНОСТИ REM Р -ТОН КАЖДОЙ НОТЫ

REM DP-ШАГ ИЗМЕНЕНИЯ Т

ОНАЛЬНОСТИ НОТ REM L -ПРОДОЛЖИТЕЛЬНОС

ТЬ ЗВУЧАНИЯ ОДНОЙ НОТ

Ы

GOSUB 120-END

РОКЕ 768,Р: РОКЕ 769, L

CALL 770: RETURN FOR J - 1 ТО NC FOR P » PI TO P2 STEP DP

GOSUB 100: NEXT P FOR P = P2 TO PI STEP - DP

GOSUB 100: NEXT P,J: RETURN DATA 160,0,174,0,3,1 73,48,192,136,208,5,2 06,1,3,240,5,202,208, 245,240,237,96,256 AD » 770

READ X: IF X - 256 THEN

RETURN POKE AD,X: AD » AD + 1 : GOTO 220


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

5 RIBBON = 3; Х=РЕЕК( Д ОООО): РОКЕ Д 0010,0 10 IF Х=0 THEN PRINT : GOTO 10 : НТАВ 15 20 X=X-I28 : PRINT CHR Д (7) : PRINT X : GOTO 5

Программирование пультов. Пульты позволяют управлять положением символов или объектов на экране ВКУ. что открывает широкие возможности по написанию динамических программ.

Считывая состояние ручки потенциометра пульта, можно связывать с ним координату воспроизводимого символа или объекта на экране.

Изменение (при вращении) положения ручки потенциометра приводит к изменению координаты, а значит, и положения объекта на экране. Так, например, в программе "Теннис", приведенной в прил. 2, в операторах с номерами 1100-1300 и других определяется положение ручек пультов и в соответствии с этим осуществляется управление положением ракеток на экране. Программа

10Х=РЕЕК( Д С062) : Y=PEEK( Д С061):Х = INT(X/255)

20Y=INT(Y/255) : XI « PDL(l) : Yl - PDL(0)

30RIBBON=2: PRINT XI;"-"; RB3BON=3 : PRINT X; "LJ";

40RIBBON=4:PRINT Yl; " - "; RIBBON=7:PRINT Y : GOTO 10

Вычисляет координаты положения ручек потенциометров обоих пультов в виде целых чисел от 0 до 255 (отображает зеленым и синим цветом на экране ВКУ). Кроме того, программа считывает состояние кнопок пультов. При нажатии кнопок изменяется соответствующее им число на обратное (0 на- 1 или 1 на 0).

Эту программу можно использовать как тест проверки работоспособности пультов.

Таймерные прерывания. Таймерные прерывания открывают широкие возможности по использованию компьютера в режиме реального времени. Например, с помощью таймериых прерываний легко реализуется программа "Часы". После обращения по

адресу С040 по линиям IRQ и NMI на соответствующие входы микропроцессора начинают поступать импульсы, прерывающие его работу. Так как прерывания поступают с фиксированной частотой, в качестве программ обработки прерываний можно организовать счетчики, подсчитывающие число поступавших импульсов, соответствующее интервалу времени.

Этот принцип используется в программе CLOCK, приведенной в прил. 2. Число

поступивших импульсов по входу NMI подсчитывается в четырех ячейках: 7083 -накапливаются часы, 7082 - минуты, 7081 - секунды, 7080 - пятидесятые доли секунд.

Адреса векторов прерывания лежат в области, отведенной под ПЗУ. Поэтому в

программе предусмотрено изменение соответствующих ячеек векторов NMI и IRQ, находящихся в псевдоПЗУ. Запуск часов осуществляется обращением по адресу C040-C04F, выключение - по адресу С050 - C05F. Посмотреть, как "идут" часы можно обратившись по адресу С7ВА. После включения 46-й текстовой страницы в режиме АЦР 64 первые четыре символа в третьей строке сверху изменяются в соответствии с назначением ячеек. В четвертой позиции символы изменяются с


частотой 50 символов в секунду, в третьей - 1 символ в секунду, во второй -1 символ в минуту и в первой - 1 символ в час.

Программа функционирует независимо от интерпретатора языка БЕЙСИК и располагается в памяти с адреса Д 7000 по адрес Д 7080.

Этот же принцип использован в прогрпмме "Часы", приведенной в прил. 2.

Рассмотрим в качестве примера программы, работающей в режиме реального времени (использующей таймерные прерывания), программу SOVM, приведенную в прил. 2. Программа позволяет совмещать на экране ВКУ графику с четырьмя текстовыми строками.

SOVM поочередно, с привязкой к таймерному прерыванию, отображает на экране часть графической и текстовой страницы.

В заключение заметим, что после обращения по адресу С220 псевдоПЗУ стало доступным по записи в него, а стандартное ПЗУ - по чтению. Это дает возможность изменить содержимое, например, векторов IRQ и NMI. После записи изменений в псевдоПЗУ его необходимо включить в режим чтения обращашл да адресу С200.

Магнитофонный вход. ПЭВМ предоставляет пользователю возможность не только хранить программы и данные на магнитной ленте. Используя интерфейс магнитофона, можно, например, организовать обмен данными между двумя и более компьютерами по кабелю, имеющему длину не более 10 м. Для этого магнитофонный выход первого компьютера соединяется с магнитофонным входом другого и наоборот, после чего по команде SAVE на первом компьютере и команде LOAD на втором происходит передача-прием программы на языке БЕЙСИК между двумя ПЭВМ. Уровень передаваемого сигнала порядка 200-250 мВ.

Использование интерфейса магнитофона этим не ограничивается. Вопросы, связанные с передачей данных посредством телефонного канала и организации локальной сети, рассмотрены в гл. 11.

6.3. ПРОГРАММИРОВАНИЕ ГРАФИКИ

Изображение на экране ВКУ формируется цветовым пером (курсором). Толщина пера зависит от выбранного графического режима.

В состав языка БЕЙСИК включены операторы управления этим пером. По желанию программиста можно рисовать либо поднятым, либо опущенным пером. На рис. 6.5 приведена программа, рисующая на экране зеленую елочку, на вершине которой красным цветом мигает звезда. В строке 10 программы задается графический режим среднего разрешения (толщина пера - 2x2 точки) и выбирается зеленый цвет (COLOR=2). Командой PLOT осуществляется перемещение пера по точкам координатной сетки 128 х 128 точек.

Начало координат находится в левом верхнем углу. Координаты X изменяются слева направо, соответственно от 0 до 128. Координаты Y изменяются сверху вниз, соответственно от 0 до 128. Таким образом, чтобы нарисовать линию, необходимо в операторе PLOT задать координаты начальной и конечной точки. Так, в программе в строке 50 формируется положение зеленого треугольника с вершиной в точке, имеющей координату Х=64, Y=19. Основание треугольника определяется координатой Y=40, а боковые стороны зависят от переменной X,*



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98]