УДК 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, Ленинград

ЛИТЕРАТУРА

  1. Косенков С.М., Полосин А.Н., Счепицкий З.А., Дябин М.И., Половянюк А.И. Бытовая персональная микро-ЭВМ «Электроника БК-0010 // Микропроцессорные средства и системы. - 1985, - № 1, - С. 22-25.
  2. Обновленский П.А., Рудометов Е.А., Фокин А Л., Харазов В.Г., Капустина Н.В Применение микро-ЭВМ «Электроника БК-0010» в системе управления производством кварцевого стекла. // Микропроцессорные средства и системы. - 1987. - № 2, - С. 48-50.

 

Статья поступила 12.01.89

 

Performed by © gid, 2012-2024.