Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по ЛР устрво проверки реакции.doc
Скачиваний:
9
Добавлен:
08.03.2015
Размер:
2.25 Mб
Скачать

2 Архитектура системы

Изобразим архитектуру интерфейса, которая включает в себя устройства ввода/вывода и порты ввода/вывода.

Ввод осуществляется с кнопок. Для ввода используется 7 линий порта inport(рисунок 2.1 RGIN 0002h).

Для вывода информации используем 8 семисегментных индикаторов (для их работы задействуем 2 порта: outsym (рисунок 2.1 RGOUT 0000h) и outnum (рисунок 2.1 RGOUT 0001h)), а так же используем порт outflag(рисунок 2.1 RGOUT 0003h) для вывода двоичных индикаторов состояния. Общее количество портов вывода устройства равно трем.

Архитектура устройства представлена на рисунке 2.1.

Рисунок 2.1 – Архитектура программы «устройство для проверки реакции».

3 Декомпозиция

Разобьём программу на несколько подпроцессов нижнего уровня. Сначала представим задачу как единый процесс (рисунок 3.1), входными и выходными данными, которого будут являться данные с входных/выходных устройств.

Рисунок 3.1 – Исходная схема программы «устройство для проверки реакции»

Выполним декомпозицию программы. Выделим процесс ввода, который будет формировать данные в памяти. Процесс определения времени реакции, процесс просмотра результатов и контрольный процесс.

Полученная статическая модель программы приведена на рисунке 3.2.

Рисунок 3.2 – Статическая модель программы после первого этапа декомпозиции

Процесс ввода достаточно прост для понимания и не нуждается в дальнейшей декомпозиции.

Разобьем процесс просмотра результатов на подпроцессы: выбор номера пользователя, просмотр мест и вывод времени. Контрольный процесс включает в себя формирование флагов управления и процесс «поиска и удаления записи» при запуске измерений. Процесс определение времени реакции разобьём на подпроцессы: генерация времени задержки, задержка приглашения, ожидание реакции пользователя, вывод результатов, запись и сортировка.

Рисунок 3.3 – Статическая модель программы после декомпозиции

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

4 Структура данных программы

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

Результаты разработки структуры данных сведем в таблицу (таблица 4.1).

Таблица 4.1 Структура данных программы устройство проверки реакции.

Наименование данных

Символьное имя

Формат данных

Кодирование данных

примечание

D7

D6

D5

D4

D3

D2

D1

D0

Данные в ОЗУ

timeuser

Массив слов

*

*

*

*

*

*

*

*

800 байт хранящих номера пользователей и их время

*

*

*

*

*

*

*

*

...

*

*

*

*

*

*

*

*

Накопитель

nakopitel

5 байт

0

0

0

0

*

*

*

*

Накопительная часть

0

0

0

0

*

*

*

*

Младшая цифра

0

0

0

0

*

*

*

*

Средняя цифра

0

0

0

0

*

*

*

*

Средняя цифра

0

0

0

0

*

*

*

*

Старшая цифра

Счетчик замеров

zamer

байт

0

0

0

0

*

*

*

*

Позиционный код

Номер пользователя

nomberuser

2 байта

0

0

0

0

0

0

0

0

*

*

*

*

*

*

*

*

Десятичное число от 00 до 99

Место пользователя

mesto

2 байта

0

0

0

0

0

0

0

0

*

*

*

*

*

*

*

*

Десятичное число от 00 до 99

Флаг сортировки

sort

байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Флаг задержки

flagtime

байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Флаг готовности

starts

байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Образ кнопок

obraz

байт

-

*

*

*

*

*

*

*

Каждый бит отвечает за свою кнопку

Вспомогательная переменная

old

байт

-

*

*

*

*

*

*

*

Хранит старое значение кнопок

Случайное число

random

байт

*

*

*

*

*

*

*

*

-

Случайное число

iadro

байт

*

*

*

*

*

*

*

*

-

Накопитель

time

4 байта

0

0

0

0

*

*

*

*

Младшая цифра

0

0

0

0

*

*

*

*

Средняя цифра

0

0

0

0

*

*

*

*

Средняя цифра

0

0

0

0

*

*

*

*

Старшая цифра

5 Алгоритмы программы

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

Из статической модели программы следует, что для решения поставленной задачи необходимо реализовать ряд процессов:

- Ввод с кнопок (readkey);

- Контроль работы программы (Control );

- Выбор пользователя (inuser);

- Выбор места (inmesto);

- Получение случайного числа (randomize);

- Задержка приглашения (priglashenie);

- Ожидание реакции пользователя (reakcia);

- Просмотр результатов (prosmotr);

- Вывод на семисегментные индикаторы (outtime).

В скобках указаны символьные имена, присвоенные программным модулям. Имена будут использоваться как наименования соответствующих процедур программы.

Алгоритм макроуровня программы в одноуровневом представлении приведен на рисунке 5.1. Для повышения информативности ГСА на ней изображены входные и выходные данные, обрабатываемые каждым программным модулем.

Рисунок 5.1 – Граф-схема алгоритма работы программы (одноуровневое представление)

Далее необходимо перейти к двухуровневому представлению алгоритма, что соответствует организации программы. Этот переход осуществляется формально, он представлен на рисунке 5.2.

Рисунок 5.2 – Граф-схема алгоритма работы программы (двухуровневое представление)

Итак, после определения основных программных исполнителей необходимо

разработать алгоритм каждого из них.

Подзадача «Функциональная подготовка» (podgotovka) производит инициализацию флагов и начальных значений переменных.

Подзадача «Ввод» (readkey) осуществляет считывание данных с кнопок, расположенных на лицевой панели устройства и формирует соответствующий их состоянию образ в памяти. Граф-схема представлена на рисунке 5.3.

Рисунок 5.3 – Граф-схема алгоритма «ввод»

Подзадача «контрольный процесс» (control) осуществляет анализ образа клавиатуры и формирует значение флагов. Граф-схема представлена на рисунке 5.4.

Рисунок 5.4 – Граф-схема алгоритма «контрольный процесс»

Подзадача «выбор пользователя» (inuser) осуществляет изменение номера пользователя. Граф-схема представлена на рисунке 5.5.

Рисунок 5.5 – Граф-схема алгоритма «выбор пользователя»

Подзадача «вывод числа на индикаторы» (outdecimal) отвечает за визуальное представление номера пользователя или места на соответствующих семисегментных индикаторах. Необходимые параметры для данной подзадачи передаются через регистры dx, bx. Граф-схема алгоритма представлена на рисунке 5.6.

Рисунок 5.6 – Граф-схема алгоритма «вывод числа на индикаторы»

Подзадача «изменение места» (inmesto) осуществляет изменение места на одну позицию. Граф-схема алгоритма представлена на рисунке 5.7.

Рисунок 5.7 – Граф-схема алгоритма «изменение места»

Подзадача «получение случайного числа» (randomize) осуществляет генерацию случайного числа. Граф-схема алгоритма представлена на рисунке 5.8.

Рисунок 5.8 – Граф-схема алгоритма «получение случайного числа»

Процедура «задержка приглашения» (priglashenie) осуществляет задержку вывода приглашения на случайное время. Граф-схема представлена на рисунке 5.9.

Рисунок 5.11 – Граф-схема алгоритма «задержка приглашения»

Процедура «ожидание реакции от пользователя» (reakcia) считает время реакции пользователя, отвечает за накопление и сохранение результатов. Граф-схема представлена на рисунке 5.10.1.

Рисунок 5.10.1 – Граф-схема алгоритма «ожидания реакции от пользователя»

Рассмотрим алгоритмы подпрограмм использованные в процедуре «ожидание реакции от пользователя»

Рисунок 5.10.2 – Граф-схема алгоритма «накопление статистики»

Рисунок 5.10.3 – Граф-схема алгоритма «сохранение результатов»

Рисунок 5.10.4 – Граф-схема алгоритма «сортировка результатов»

Процедура «просмотр» (prosmotr) определяет взаимообратную зависимость между номером пользователя и занимаемым местом. В зависимости от флага сортировки находим интересующие нас данные, а затем в качестве параметров передаем их в процедуры вывода на семисегментные индикаторы (outdecimal,outtime). Граф-схема представлена на рисунке 5.11.

Рисунок 5.11.– Граф-схема алгоритма «просмотр»

Процедура «вывод времени на индикаторы» (outtime) осуществляет формирование образа переменной time и вывода его на семисегментные индикаторы. Граф-схема представлена на рисунке 5.12.

Рисунок 5.12.– Граф-схема алгоритма «вывод времени на индикаторы»

Процедура «вывод сообщения» (null) вызывается в случаи отсутствия результата по выбранному значению места или пользователя. Граф-схема представлена на рисунке 5.13.

Рисунок 5.13.– Граф-схема алгоритма «вывод сообщения»

6 Руководство пользователя

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

При зажигании индикатора приглашения как можно быстрее нажмите на кнопку проверки реакции. После чего индикатор приглашения должен погаснуть. Повторите операцию 10 раз для накопления статистики. Индикатор горит в течение двух секунд, считается, что за это время вы должны среагировать. Если же вы не успели нажать на кнопку, то замер произведен, ваше время реакции считается равным двум секундам.

Просмотр результатов можно осуществлять, как изменяя номер пользователя, так и в состоянии сортировки изменяя место. Для переключения состояний воспользуйтесь кнопкой «сортировка/просмотр».