УДК 681.325.54
М.Г. Меш
ПРОГРАММНЫЙ СЧЁТЧИК ПРЕРЫВАНИЙ ПО ТАЙМЕРУ ДЛЯ ПЭВМ БК-0010
Очень часто пользователю ПЭВМ БК-0010 приходится отказываться от разработки прикладных программ на языке высокого уровня Фокал, входящего в состав программного обеспечения данной ПЭВМ, из-за ограниченного быстродействия интерпретатора. Но при этом теряется возможность пользоваться встроенными функциями языка Фокал, в том числе функцией FCLK, которая позволяет работать с таймером, не вникая в подробности процесса обслуживания прерывания по таймеру и подсчёта количества прерываний. При разработке программ в машинных кодах эти вопросы вплотную встают перед программистом.
Запросы на обслуживание прерываний по таймеру формируются внешним генератором импульсов и поступают на порт ввода-вывода (контакт В1).
Обслуживание прерываний по таймеру начинается через вектор 1008 при условии равенства нулю разряда 7 слова состояния процессора. Подпрограмма обслуживания прерывания по таймеру расположена в памяти с адреса 1322248 по адрес 1322368. В ОЗУ выделены две ячейки специального назначения: ячейка с адресом 17468 (счётчик прерываний), содержимое которой увеличивается на 4008 при каждом обслуживании прерывания, и ячейка с адресом 17508 (счётчик переносов), в которой суммируются переносы, возникающие при заполнении счётчика прерываний.
Для работы в реальном времени и формирования временных интервалов пользователь должен организовать программный счётчик прерываний по таймеру. Предварительно в ОЗУ произвольно резервируются две ячейки с адресами STMO (для хранения начального значения счётчика переносов МО) и STNO (для хранения начального значения счётчика прерываний NO).
Запуск программного счётчика прерываний по таймеру осуществляется вызовом подпрограммы ТО. Для удобства эта и другие программы записаны в мнемонике языка ассемблера.
Подпрограмма КТ позволяет в регистрах R0, R1 сформировать с удвоенной точностью количество прерываний по таймеру, обработанных с момента запуска программного счётчика (вычислить количество «тиков» таймера).
Проиллюстрировать работу с программным счётчиком можно на следующем примере. После включения прибора датчик опрашивается в течение одной минуты. Если датчик за это время сработал, осуществляется переход к выполнению основной программы MAIN, если не сработал, работа заканчивается. Частота поступления запросов на прерывание по таймеру - 50 Гц.
Алгоритм программы, реализующей эту задачу, приведён на рисунке.
Алгоритм программы:
1 - начало; 2 - запуск программного счётчика; 3 - датчик сработал?; 4 - подсчёт числа «тиков» таймера; 5 - одна минута прошла?
(5760 «тиков» таймера); 6 - основная программа; 7 - останов
Ёмкость программного счётчика прерываний при частоте запросов на обслуживание прерываний 50 Гц позволяет работать с ним после включения микро-ЭВМ более 46 ч. Этого времени вполне достаточно для выполнения рабочих программ БК-0010.
Телефон 350-86-69, Ленинград
Статья поступила 12.07.88
УДК 681.3
Е.А. Рудометов, А.Ю. Коленников
ПРОГРАММНО-АППАРАТНОЕ ОБЕСПЕЧЕНИЕ ФУНКЦИИ ТАЙМЕРА ПЭВМ БК-0010
В автоматизированных системах научных исследований и управления технологическими процессами возможно применение ПЭВМ БК-0010 [1,2], которое ограничено отсутствием таймера. Реализовать эту функцию можно с помощью программно-аппаратного обеспечения системы обработки внешних прерываний ПЭВМ. Для этой цели на линию ПРТ Н, выведенную на разъем порта ввода-вывода (контакт В1), подаются импульсы от внешнего генератора, схемотехническое решение которого выбирают исходя из характера решаемых задач. Учитывая, что включение ЭВМ при работающем генераторе может вызвать блокировку клавиатуры в режиме монитора, необходимо предусмотреть задержку включения либо программный запуск генератора от порта ввода-вывода, либо их комбинацию. Один из простейших вариантов схемы генератора приведён на рисунке. Значения элементов соответствуют частоте 100 Гц.
При разработке прикладного программного обеспечения с использованием языка Фокал число импульсов, поступивших по линии ПРТ Н, можно получить, применяя встроенную функцию FCLK ( ).
Упрощённая схема генератора:
R1-200; R2-6,8к; CI-6,8мкФ; С2-470,0; X1- СНП58-64/95×9р; D1-К155ЛАЗ
Для функции таймера в программах, разработанных на языке Фокал, частота задающего генератора выбирается с учётом времени непрерывной работы таймера и точности представления переменных, которая для данного языка составляет 5,6 значащих цифр.
Транслятор языка БЕЙСИК и драйвер-мониторная система, включённые в состав резидентного математического обеспечения ПЭВМ, не содержат программных средств, аналогичных оператору FCLK() языка Фокал. Для обеспечения функции таймера при программировании на БЕЙСИКЕ и ассемблере необходима программа в кодах, разработка которой выполняется с помощью соответствующих средств системного монитора ПЭВМ или математического обеспечения, совместимых по системе команд ЭВМ.
Трансляция на мини-ЭВМ СМ1420 в системе NTS, а проверка и отладка - на ПЭВМ БК-0010. Представленная программа в соответствии с частотой внешнего генератора обеспечивает расчёт и вывод текущего времени (часы, минуты, секунды) в поле информационной строки. При этом данные значения сохраняются в трёх ячейках памяти и доступны для программ пользователей. Считывание информации о текущем времени позволяет фиксировать произвольные моменты времени, что необходимо при использовании микро-ЭВМ в контуре управления.
Основные параметры программы: адрес загрузки - 37472, частота внешнего генератора (по умолчанию равна 100 Гц) - 37724, «тики» - 37734, «секунды» - 37736, «минуты» - 37740, «часы» - 37742. Для запуска программы достаточно установить необходимые значения начального времени, частоту генератора (если она не равна 100 Гц), записать в ячейку 100 начальный адрес - 37472 и запустить генератор таймера. Работоспособность программы сохраняется при её загрузке в любую область памяти.
Данную программу можно присоединить к программам на БЕЙСИКе. Для этого программа в кодах должна иметь имя с расширением BIN: TIME.BIN. В этом случае ввод осуществляется командой BLOAD TIME с последующей защитой области памяти оператором CLEAR.
Программу таймера можно включать в текст программы на БЕЙСИКе с помощью операторов DATA с последующей пересылкой в требуемую область оперативной памяти оператором непосредственного доступа к памяти РОКЕ.
Программа запускается командой RUN. После ввода параметров в режиме диалога память, занимаемую программой БЕЙСИКа, можно очистить с помощью команд CLEAR и NEW и использовать для размещения других программ. При этом оператор ввода-вывода приостанавливает работу таймера на время обмена с накопителем на магнитной ленте.
После останова ПЭВМ с помощью клавиши СТОП происходит потеря информации в ячейке 100. Это не только вызывает останов программы таймера, но и приводит к невозможности её перезапуска. Однако работа данной программы возобновляется после восстановления содержимого ячейки 100.
Длительная эксплуатация приведённых программно-аппаратных решений в системах управления измерительными комплексами показала их высокую надёжность и эффективность. Снижение производительности ПЭВМ, вызванное обработкой прерываний, при частоте генератора, равной 100 Гц, составило приблизительно 1,5%.
Телефон 585-29-84, Ленинград
ЛИТЕРАТУРА
- Косенков С.М., Полосин А.Н., Счепицкий З.А., Дябин М.И., Половянюк А.И. Бытовая персональная микро-ЭВМ «Электроника БК-0010 // Микропроцессорные средства и системы. - 1985, - № 1, - С. 22-25.
- Обновленский П.А., Рудометов Е.А., Фокин А Л., Харазов В.Г., Капустина Н.В Применение микро-ЭВМ «Электроника БК-0010» в системе управления производством кварцевого стекла. // Микропроцессорные средства и системы. - 1987. - № 2, - С. 48-50.
Статья поступила 12.01.89