Скачиваний:
109
Добавлен:
21.01.2014
Размер:
2.38 Mб
Скачать

4. Контрольные вопросы

                  1. Назначение и синтакис операторов GET, PUT, POINT, PMAP ?

                  1. Назначение и синтакис операторов работы со звуковым сопровождением ?

Вопросы по процедуре выполнения индивидуального задания.

5. Библиографический список

                  1. Бобровский С. Программирование на языке QBASIC для школьников и студентов. — М.: Десс; Инфорком-Пресс, 1999. - 208 с.

                  1. Зельднер Г.А. Программируем на языке QuickBASIC 4.5. - М: ABF, 1996. - 432 с.

                  1. Введение в программирование на языке Microsoft BASIC: Учебное пособие / Ю.Я. Максимов, С.В. Осипов, А.В. Потемкин, Щ.С. Симоненков. - М.: ”Диалог-МИФИ”,1991. - 176 с.

Министерство образования

Российской Федерации

Тульский государственный университет

Кафедра “Инструментальные и метрологические системы”

Информатика

ЛАБОРАТОРНАЯ РАБОТА 23

Организация ввода/вывода в порт

для студентов очного обучения

Тула 2000 г.

1. Цель и содержание работы

Целью работы является изучение принципов контроля над оборудованием через порты ввода/вывода.

Полученные знания и навыки необходимы для выполнения других лабораторных работ, а также практической деятельности.

2. Порядок выполнения работы

                  1. Изучить теоретическую часть.

                  1. Получить задание у преподавателя.

                  1. Выполнить задание.

                  1. Оформить отчет.

                  1. Защитить работу.

3. Теоретическая часть

Операторы языка

INP

Функция

Возвращает байт, считанный с аппаратного порта ввода/вывода.

INP(port%)

  • port% - число в пределах от 0 до 65,535, определяющее порт.

  1. x% = INP(&H3FC) 'Считывает Управляющий Регистр Модема COM1.

OUT &H3FC, (x% XOR 1) 'Изменяет бит Готовности Данных Терминала.

OUT

Оператор

Посылает байт в аппаратный порт ввода/вывода.

OUT port%, data%

  • port% - число в пределах от 0 до 65,535, определяющее порт;

  • data% - числовое выражение в пределах от 0 до 255, посылаемое в порт.

  1. x% = INP(&H3FC) 'Считывает Управляющий Регистр Модема COM1.

OUT &H3FC, (x% XOR 1) 'Изменяет бит Готовности Данных Терминала.

OPEN COM

Оператор

Открывает и инициализирует канал связи для ввода или вывода (В/ВВ).

Оператор OPEN COM должен быть выполнен до начала работы с устройством, использующим для связи интерфейс RS232.

OPEN "COMn: опции_1 опции_2" [FOR тип] AS [#]номер% [LEN=длина%]

  • n - открываемый коммуникационный порт (1 = COM1, 2 = COM2);

  • опции_1 - наиболее часто используемые параметры связи: [скорость] [,[проверка] [,[данные] [,[стоп-биты]]]]

  • скорость - скорость передачи данных (в бодах) открываемого устройства: 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600

  • проверка - вариант контроля паритета: N (отсутствует) E (по четности) O (по нечетности) S (с промежутком) M (с маркером) PE (включение проверки ошибок)

  • данные - число битов данных в байте: 5, 6, 7, 8

  • стоп-биты - число стоповых битов: 1, 1.5, 2 По умолчанию: 300 бод, по четности, 7 битов данных, 1 стоповый бит;

  • опции_2 - список реже используемых параметров, разделяемых запятыми:

  • ASC - открывает устройство в режиме ASCII.

  • BIN - открывает устройство в двоичном режиме. Устанавливает тайм-аут (в миллисекундах) для линии DCD (Data Carrier Detect).

  • CS[m] - устанавливает тайм-аут (в миллисекундах) для линии CTS (Clear to Send).

  • DS[m] - устанавливает тайм-аут (в миллисекундах) для линии DS (Data Set Ready).

  • LF - посылает символ перевода строки после символа возврата каретки.

  • OP[m] - задает время ожидания (в миллисекундах) OPEN COM открытия каналов связи.

  • RB[n] - устанавливает размер (в байтах) принимающего буфера.

  • RS - подавляет обнаружение сигнала "Запрос на передачу" (RTS).

  • TB[n] - устанавливает размер (в байтах) передающего буфера;

  • тип - INPUT, OUTPUT, или RANDOM (по умолчанию);

  • номер% - число в пределах от 1 до 255, идентифицирующее канал связи, пока он открыт;

  • длина% - размер буфера режима прямого доступа (по умолчанию 128 байтов).

  • Если было установлено 8 бит данных на байт, необходимо определить проверку N.

  • Если неуказанна одна из опции_1, то пустое место в операторе должно отделятся запятой.

  • Опции_2 могут вводится в список в любом порядке. Для СS[m], DS[m], CD[m], если не получено сигнала в течении m миллисекунд, генерируется тайм-аут. Значение m может быть в пределах 0- 65535, по умолчанию 1000. Значение CD по умолчанию 0. Если m равно 0 для опции, то опция игнорируется. Линия CTS проверяется независимо от того, есть или нет данных в буфере передачи, если указана опция CS. Линии DSR, DCD проверяются на тайм-ауты, если соответствующие опции (DC, CD) указаны.

  • Если тип опущен, то по умолчанию он устанавливается как прямой тип ввода / вывода. Оператор OPEN COM должен быть выполнен перед использованием с интерфейсом RS-232.

  • Используйте большие значения параметра опции OP по сравнению с параметрами опций CS, DS, CD. Если две программы включаются в коммуникационную связь, им обеим требуется время для выполнения оператора СОM.

  • Поскольку телефонная линия очень медленная, то связь с модемом - это одна из многочисленных областей, где программирование на BASIC ничем не хуже, чем на языке ассемблера.

  • Этапы открытия коммуникационного устройства оператором OPEN COM:

  • коммуникационные буферы размещены и прерывания включены;

  • флаг линии Data Terminal Ready(“готовность компьютера”) включен;

  • если опции OР или DS ненулевые, оператор ожидает указанное время поднятия флага линии Data Set Ready(“готовность модема”). В случае тайм - аута процесс переходит к этапу VI;

  • флаг линии Request To Send (“запрос на посылку”) поднимается, если опция RS не указана;

  • если опции OР или СD ненулевые, оператор ожидает указанное время поднятия флага линии Data Carrier Detect(“обнаружен носитель данных”). В случае тайм - аута процесс переходит к этапу VI. Иначе, OPEN COM успешно выполнен;

  • открытие прервано из-за тайм - аута. Процесс закрывает буфера, выключает прерывания и очищает все управляющие линии.

  1. 'Используйте при проблемах с коммуникациями через последовательный порт.

OPEN "COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048" FOR RANDOM AS #1

STICK

Функция

Возвращает координаты джойстика.

STICK(n%)

  • n% - числовое выражение в пределах 0- 3, указывает возвращаемые координаты:

  • 0 - координату Х джойстика A;

  • 1 - координату Y джойстика A;

  • 2 - координату Х джойстика B;

  • 3 - координату Y джойстика B.

  • Вы должны вызвать STICK(0) перед STICK(1), STICK (2), или STICK(3). STICK(0) записывает текущие координаты в память. Они возвращаются путем вызова STICK(1) ... STICK(3).

  • Координаты Х и Y имеют пределы 1 - 200.

  1. Temp% = STICK(0)

PRINT STICK(2), STICK(3)

STRIG

Функция

Возвращает статус указанного триггера джойстика.

STRIG(num%)

  • num% - числовое выражение в пределах 0 - 7, указывает вид возвращаемой информации. Служит для обозначения джойстика и триггера, статус которого необходимо проверить:

  1. Аргумент

Возвращаемое значение

0

- 1, если нижняя кнопка джойстика А была нажата с предыдущего вызова STRIG (0). 0 - если нет

1

- 1, если нижняя кнопка джойстика А сейчас нажата. 0 - если нет

2

- 1, если нижняя кнопка джойстика В была нажата с предыдущего вызова STRIG (2). 0 - если нет

3

- 1, если нижняя кнопка джойстика В сейчас нажата. 0 - если нет

4

- 1, если верхняя кнопка джойстика А была нажата с предыдущего вызова STRIG (4). 0 - если нет

5

- 1, если верхняя кнопка джойстика А сейчас нажата. 0 - если нет

6

- 1, если верхняя кнопка джойстика В была нажата с предыдущего вызова STRIG (6). 0 - если нет

7

- 1, если верхняя кнопка джойстика В сейчас нажата. 0 - если нет

  • QuickBASIC не поддерживает операторов STRIG ON и STRIG OFF.

  1. 'Для выполнения этого примера нужен джойстик

ON STRIG(0) GOSUB Jojstik

STRIG(0) ON

PRINT "Для выхода нажмите Esc"

DO UNTIL INKEY$ = CHR$(27): LOOP

END

Jojstik:

PRINT "Триггер джойстика отжат"

RETURN

STRIG

Оператор

STRIG включает, выключает или приостанавливает отслеживание события для джойстика. При включенном отслеживании события, ON STRIG обращается к подпрограмме при каждом нажатии указанного триггера.

STRIG(n%) ON

STRIG(n%) OFF

STRIG(n%) STOP

ON STRIG(n%) GOSUB строка

  • n% - значение, указывающее тригер джойстика:

  • 0 - нижний тригер, джойстик A;

  • 2 - нижний тригер, джойстик В;

  • 4 - верхний тригер, джойстик A;

  • 6 - верхний тригер, джойстик В;

  • STRIG(n%) ON- включает отслеживание события для джойстика.

  • STRIG(n%) OFF - выключает отслеживание события для джойстика.

  • STRIG(n%) STOP - приостанавливает отслеживание события. События обрабатываются при включении STRIG ON отслеживания события.

  • строка - метка или номер первой строки подпрограммы отслеживания события.

  1. 'Для выполнения этого примера нужен джойстик

ON STRIG(0) GOSUB Handler

STRIG(0) ON

PRINT "Для выхода нажмите Esc"

DO UNTIL INKEY$ = CHR$(27): LOOP

END

Handler:

PRINT "Тригер джойстика отжат"

RETURN

INP

OUT

Операторы

INP возвращает байт, считанный с аппаратного порта ввода/вывода.

OUT посылает байт в аппаратный порт ввода/вывода.

INP(port%)

OUT port%, data%

  • port% - число в пределах от 0 до 65,535, определяющее порт.

  • data% - числовое выражение в пределах от 0 до 255, посылаемое в порт.

  1. x% = INP(&H3FC) 'Считывает Управляющий Регистр Модема COM1.

OUT &H3FC, (x% XOR 1) 'Изменяет бит Готовности Данных Терминала.

WAIT

Оператор

Приостанавливает выполнение программы до ввода двоичного кода из порта ввода.

WAIT порт%, AND-выражение% [XOR-выражение%]

  • номер% - целое выражение в пределах 0 - 255, адрес порта;

  • AND-выражение% - целое выражение, которое WAIT объединяет созначением двоичного кода, используя оператор AND. Если результат не равен нулю, WAIT останавливает использование порта;

  • XOR-выражение% - целое выражение, комбинируемое с данными, получаемыми из порта, операцией XOR. Может быть использовано для включения /выключения битов линии в двоичном коде перед использованием AND.

  1. Оператор приостанавливает программу до тех пор, пока определенный битовый образ не будет получен из данного порта. Полученные данные комбинируются операцией XOR с XOR-выражением%

'Читает порт контроллера прерываний с адресом &H20.

'Для продолжения нажмите любую клавишу.

WAIT &H20, 1