В первую очередь инициируем стек, записав в его указатель ( регистр SP) начальный адрес вершины стека - 30Н. Так же надо записать во внешнюю память по адресу 0000Н однобайтный код уставки.
Рассмотрим сначала устройства, включённые в состав ОМЭВМ. В регистре состояния программы (PSW), который применяется для хранения информации о АЛУ при выполнении программы, необходимо установить в “0” разряды 3 и 4 (RS0 и RS1) - тогда будет выбран банк рабочих регистров с номером 0 (адреса 00 - 07Н). Для исключения работы таймеров / счётчиков нужно записать в регистр управления ими TCON в разряды 4 и 6 “0”. А в разряд 0 (определяет вид прерывания по входу INT0) записать “1” (прерывание по срезу). В регистре приоритетов прерываний IP необходимо всем прерываниям присвоить одинаковый приоритет “1” (всё равно будет работать только прерывание по INT0). Для того, чтобы работало только прерывание INT0 нужно в регистре разрешения прерываний IE запретить все прерывания, кроме INT0, то есть необходимо только разряды 7 и 0 установить в “1”, а остальные - в “0”.
Для обеспечения нормальной работы параллельных интерфейсов (их в МПС 3) следует в их регистры управляющих слов (адреса: 0803Н, 0А03Н, 0В03Н) занести код 10010000Н (режим простого ввода / вывода). Ещё необходимо сбросить в “0” триггер запроса прерывания от клавиатуры, для этого надо подать “0” на разряд 0 порта Р1 ОМЭВМ и тут же установить его в “1”.
Для корректного управления внешними устройствами подадим нулевой код на выходы Y1 - Y3 (порт с адресом 0801Н) и на аналоговый выход Y4 (адрес порта 0802Н). Также нужно обеспечить начальное гашение индикаторов для этого подадим “0” на порты с адресами 0А00Н, 0А01Н, 0А02Н (это цифровые индикаторы) и на порт с адресом 0В02Н.
После всех этих действий МПС готова к работе.
Начало
Т > 0,5 с Да
|
Нет
Останов?
Да
Конец
Рис. 10. Схема алгоритма управления объектом.
Для ввода сигналов Х1 - Х4 необходимо лишь один раз прочитать содержимое параллельного порта по адресу 0800Н. Четыре младших разряда прочитанного кода и будут сигналами Х1 - Х4. Для получения Y1 реализуем функцию Х1 * (Х4 + Х2 * Х3). Длительность сигнала Y1 составит Т1 = 100 мс и эту задержку реализуем программным способом. Для этого создадим цикл, который будет длиться 100 мс. Тело цикла будет включать 3 команды NOP (1 машинный цикл) и одну команду проверки выхода из цикла (2 машинных цикла). Так как 1 машинный цикл длится 12 тактов, а тактовая частота - 12 МГц, то длительность одной итерации цикла составит 5 * 1 = 5 мкс. Тогда для задержки в 100 мс требуется выполнить тело цикла 20000 раз. Перед циклом задержки надо выставить сигнал Y1 (бит 0 порта с адресом 0801Н), а после цикла - сбросить его в “0”.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.