На рисунке 3.6 показаны схемы алгоритмов для обеих частей задачи.
Рисунок 3.6 – Автономная форма алгоритмов процессов “службы времени”.
Схемы алгоритмов рабочей программы. Фоновый процесс
В графической части представлена схема алгоритма процесса передачи в однопроходной форме. После размыкания циклов задачи получилось две ветви. Первая – ожидание заполнения буфера данных. Вторая – собственно посылка буфера. За один проход задачи посылается один символ. Выбор ветви осуществляется с помощью переменной Sentry. Обмен информацией идет по стандарту интерфейса ИРПР-М.При посылке байта для соблюдения необходимых временных интервалов формируются паузы не менее 0,5 мкс. При проверке готовности приемника происходит логическое сложение сигналов BUSY и ACKNLG, и если результат равен нулю, выполняется отправка одного байта. По окончании передачи всего сообщения флаг готовности буфера сбрасывается.
3.4 Схемы алгоритмов рабочей программы. Подпрограмма обработки прерываний
Подпрограмма самодиагностики запускается по прерыванию от таймера. В однопроходном варианте присутствует три ветви. Первая ветвь пустая. Она выполняется диспетчером, если не возникало прерывания от таймера. Вторая ветвь служит для инициализации счетчика контрольной суммы. Обнуляется переменная – указатель и переменная, запоминающая текущее значение КС. В третьей ветви выполняются действия по суммированию содержимого ПЗУ. При достижении конечного адреса происходит сравнение полученного значения контрольной суммы с проверочным. При совпадении процедура устанавливает точку входа на первую ветвь, включает индикатор готовности и заканчивает работу. При ошибке КС индикатор готовности гасится и процессор зацикливается.
Текст фрагмента рабочей программы
Фрагмент программы, представленный в приложении полностью соответствует описанной выше схеме алгоритма. Программа выполнена в виде самостоятельного модуля. Трансляция проводилась с помощью ассемблера TASM 5.0. Результаты работы транслятора показаны на рисунке 3.7.
Рисунок 3.7 – Результаты работы транслятора
Программа состоит из четырех основных частей. В первой части происходит сохранение используемых регистров и опрос переменной, хранящей точку входа в основное тело программы. При этом происходит выбор одной из ветвей прохода задачи. Вторая часть реализует первую ветвь алгоритма и начинается сметки Е0. Здесь осуществляется проверка готовности буфера и, при необходимости, изменение точки входа. Третья часть программы реализует вторую ветвь алгоритма. Если приемник готов, то выполняется посылка одного байта и изменение счетчика символов. И, наконец, четвертая часть программы (метка EXLABEL) завершает проход задачи, восстанавливает регистры и передает управление вызвавшей программе.