Лабораторный практикум по изучению МП-систем
МП – система «Скважинный импульсный генератор нейтронов - ИГН»
ИГН представляет собой МП – систему управления возбуждением импульсного потока нейтронов в скважинном приборе – импульсном генераторе нейтронов с последующим, через заданные задержки времени ТЗ1 и ТЗ2 , подсчетом в окнах заданной длительности ТК1 и ТК2 вторичных гамма – квантов излучения от слагающих скважину горных пород и передачу полученных численных значений в наземную часть аппаратуры для регистрации и обработки (см. Рис.1).
Рис. 1. Временная диаграмма одного цикла работы МП-системы «АИНК-36»
Решаемые геологические задачи:
оценка характера насыщения коллекторов независимо от минерализации пластовых вод;
литологическое расчленение разреза скважин;
оценка коллекторских свойств горных пород;
привязка к разрезу скважины;
определение интервалов поглощения и поступления воды в скважину;
6. качественная и количественная оценка скорости потока флюида по стволу скважины.
Для решения указанных задач аппаратура должна обеспечить:
генерирование нейтронов в импульсном режиме;
регистрацию изменения интенсивности гамма-излучения радиационного захвата (ГИРЗ) по показаниям каналов импульсного нейтронного гамма-каротажа (ИНГК);
активацию ядер кислорода, входящих в состав горных пород;
регистрацию изменения интенсивности гамма-излучения наведенной активности кислорода по показаниям каналов кислородного активационного метода (КНАМ);
регистрацию изменения интенсивности естественного гамма-излучения горных пород по показаниям каналов гамма-каротажа (ГК).
Технические параметры.
Величина интегрального потока быстрых нейтронов (трубка ТНТ-1415), не менее - 6*10Е8 н/с;
Частота запуска излучателя – 20 Гц.(Тц=50мс.);
Временная задержка от запуска излучателя до начала регистрации ГИРЗ -0-1000 мкс.;
Число каналов регистрации ГИРЗ - 16;
Длительность каналов ГИРЗ - 0-250 мкс.(Тк1);
Временная задержка от запуска излучателя до начала регистрации данных КНАМ – 8 мс;
Число каналов регистрации данных КНАМ - 21;
Длительность каналов КНАМ – 2 мс.(Тк2);
Разрядность счетчиков регистрации канальных импульсов ГИРЗ и КНАМ-8;
Разрядность ЦАП - 8;
Напряжение питания, не более 300 В постоянного тока;
Диаметр прибора – 36 мм.
Блок-схема скважинного прибора представлена на рис.2. Он состоит из следующих узлов: детекторов D1 и D2, усилителей – преобразователей тока в напряжение У1 и У2, компараторов энергетического «окна» КОМ1 и КОМ2,счетчиков импульсов С1 и С2, цифро-аналоговых преобразователей ЦАП1 и ЦАП2, микропроцессора МП, памяти программ ППЗУ, периферийной БИС ввода/вывода информации ПБИС, приемо-передающей цепи ППЦ, блока управления питанием БУП, блока запуска нейтронной трубки БЗ, излучателя нейтронов ИН и источников питания ИП на напряжения +/-5В, +/-12В, +30В, 2кВ. Детекторы D1 и D2 состоят из сцинтилляционного кристалла NaJ размером 18160 и 1640 соответственно и фотоэлектронных усилителей ФЭУ-102, попарно помещенных в отдельные корпуса. Выходными сигналами детекторов являются импульсы тока длительностью 0,7-1,0 мкс.
На рис.3 представлена принципиальная электрическая схема скважинного генератора нейтронов, а на рис. 4 - 6 схемы основных узлов прибора.
Усилители У1 и У2 реализованы (на операционном усилителе DA1 для У1) (рис.4) по одинаковым схемам для обоих зондов. Усилители предназначены для согласования высокоомного выхода ФЭУ с низкоомными входами компараторов, для чего они выполнены по схеме преобразования импульсов тока в импульсы напряжения.
Компараторы КОМ1 и КОМ2 (рис.4) предназначены для формирования энергетического «окна» при регистрации гамма-излучения наведенной активности кислорода и каждый состоит из 3-х микросхем (DA2, DA3 и DD1 для КОМ1) (см. рис.4). Установка порогов срабатывания компараторов по нижнему и верхнему уровню окна производится напряжениями U1 и U2 соответственно.
Эти напряжения вырабатываются с помощью цифроаналоговых преобразователей ЦАП1 и ЦАП2,установленных в блоке ЦАП (рис.5). Выходные сигналы компараторов DA2 и DA3 управляют триггерами DD1.1 и DD1.2, выходы которых C и SE поступают в схему счетчиков, расположенных на плате процессора (рис.6). ЦАП1 и ЦАП2 построены на микросхемах DD7, DA1,DA3 и DD8, DA2, DA4 соответственно. Регистр DD7 служит для приема и хранения задаваемого оператором кода нижнего уровня энергетического «окна», а регистр DD8 – верхнего уровня «окна». В соответствии с хранящимися в регистрах кодами, микросхемы ЦАП DA1 и DA2 совместно с усилителями DA3 и DA4 вырабатывают напряжения U1 и U2 для компараторов.
Счетчики С1 и С2 (рис.6) реализованы для одного зонда на микросхемах DD4 (порт А и таймер), DD5 и DD6; а для другого зонда на микросхемах DD4 (порт В и таймер), DD7 и DD8. Счетчики служат для постоянного счета проходящих через энергетическое «окно» импульсов напряжения, возникающих при регистрации гамма-излучения. Съем информации со счетчиков производится «на лету» процессором через порты А и В по прерываниям от таймера, время работы которого задается оператором. Вычитание предыдущего отсчета из текущего и передача результата в соответствующую ячейку памяти (канал) дает распределение счетов по времени (по каналам с 1-го по 16-й) внутри одного цикла (после одного запуска излучателя нейтронов). Поцикловое и поканальное суммирование счетов в ячейках памяти за время прохождения заданного интервала по глубине (обычно 40 см) дает, наряду с временным, распределение импульсов от ГИРЗ по глубине, позволяющее на поверхности вычислять искомые параметры Тпл и τпл с целью получения каротажной диаграммы. Цифровые значения счетов в каналах с помощью телеметрической системы (микросхемы DD1и DD4 на рис. 5) передаются в наземный прибор.
В качестве памяти программ в скважинном приборе применена микросхема DD3 (К573РФ5), в которой размещается программа функционирования скважинного прибора в 4-х режимах, задаваемых оператором.
При включении аппаратуры, а также по желанию оператора прибор переходит в режим теста, при котором из скважинного прибора в наземный с частотой 100 Гц поступает кодовая комбинация 5020Н. Это – первый режим. Во втором режиме (ГК) производится регистрация естественного гамма-излучения, а в третьем (ИНГК) с частотой 20 Гц. запускается излучатель нейтронов и в промежутке между запусками регистрируется вторичное гамма-излучение в интервалах ГИРЗ (гамма-излучение радиационного захвата) и НАК (наведенной активности кислорода).
При каждом запуске через заданную оператором задержку, для исключения полной засветки датчика, регистрируются счета импульсов ГИРЗ в 16-ти последовательных интервалах времени (каналах), длительность которых также задается оператором. Через 8 мс после запуска излучателя, когда интенсивность импульсов ГИРЗ спадет до естественного фона гамма-излучения, начинается подсчет импульсов излучения НАК (наведенной активности кислорода) в заданном энергетическом «окне» (приблизительно от 3-х до 10 МэВ), который продолжается до следующего запуска излучателя, т.е. 42 мс.(Рис.7). Затем указанные операции повторяются с суммированием и запоминанием соответствующих счетов в выделенных ячейках оперативной памяти (микросхема DD4 на рис.51) в течение 1 сек. Из памяти каждую секунду полученная информация с помощью телесистемы передается в наземный прибор и далее в персональный компьютер для обработки.
Во втором режиме (ГК) производится непрерывный подсчет импульсов естественного излучения горных пород со съемом информации через каждые 10 мс и передачей в наземный прибор результатов суммирования в 5-ти последовательных двухбайтовых ячейках памяти 20-ти отсчетов, т.е. через каждые 200 мс числовые величины счета импульсов ГК за этот интервал времени запоминаются в 5-ти ячейках памяти и затем (через 1 сек) передаются в наземный блок для дальнейшей обработки.
Дополнительный режим (ГКС – гамма-каротаж спектрометрический) аналогичен второму и третьему с той разницей, что подсчет импульсов излучения производится в энергетических «окнах» характерных для изотопов калия (К), урана (U) и тория (Th).
Плата микропроцессора МП (см. рис.51) содержит микросхемы DD1 (собственно МП), DD2 (регистр адреса), DD9 (делитель) и DD4 (схема ОЗУ с портами ввода/вывода и таймером). При инициализации скважинного прибора МП функционирует в режиме, заданном оператором, по программе, команды которой выбираются с помощью регистра адреса DD2, а исполнение – с помощью портов ввода/вывода, чтение или запись информации в которые производится процессором.
Приемо-передающая цепь – ППЦ (рис.47) является скважинной частью примененной в приборе телесистемы и включает в себя кодер/декодер DD1, передатчик/приемник DD4 (рис.50) и трансформатор Т1 (установлен на шасси прибора) для согласования с геофизическим кабелем. Прием и передача информации осуществляется кодом «Манчестер-II» в соответствии с программой функционирования аппаратуры.
Излучатель нейтронов (ИН) VL1 предназначен для генерации импульсного потока быстрых нейтронов. В состав излучателя входят: нейтронная трубка ТНТ-1411 или ТНТ-1415, высоковольтные трансформаторы, ионный источник, резисторы защиты и поджига (см. рис.47).
В качестве наземного вторичного прибора используется компьютеризированный каротажный регистратор «Гектор», который в свою очередь связан с бортовым персональным компьютером типа «Notebook» по интерфейсу RS-232C. Функционирование комплекса – скважинный прибор, «Гектор» и персональный компьютер – осуществляется с помощью программного обеспечения, состоящего из двух частей: управляющей программы «LOG», находящейся в РС, и программы работы скважинного прибора, записанной в микросхеме ПЗУ DD3 (К573РФ5) на плате процессора (рис.51).
Блок-схема алгоритма работы скважинного прибора представлена на рис. 53.
Блоки 1-18 алгоритма реализуют следующие функции:
1. Режим инициализации: указание стека, программирование периферийной БИС, обнуление рабочего участка ОЗУ, программирование таймера на 10мс., ввод цифровых значений верхнего и нижнего уровней энергетического «окна», передача слова 5020Н в наземный прибор, останов (ожидание прерываний RST 7.5 от таймера или RST 5.5 от оператора каротажной станции).
2,3. Цикл длительностью 10мс. – режим цифрового теста. В блоке 2 установка «флага» - ячейку памяти 180ЕН в 1, аккумулятора А в 1, перенос содержимого А в регистр В с целью освобождения аккумулятора для текущих пересылок. В блоке 3 – пересылка слова 5020Н в наземный прибор, обнуление «флага» 180ЕН = 0, останов в ожидании прерываний 7.5 или 5.5.
4. Обработка прерывания 5.5: приём от оператора 6-ти управляющих слов. Задержка введена для ожидания прихода очередного слова, вызывающего прерывание 5.5.
5. Подготовительные операции к анализу принятых слов. Первый байт первого слова определяет режим работы генератора: ЕFН – режим регистрации естественного гамма-излучения; DFH – режим регистрации ГИРЗ и КНАМ. Анализ этих слов позволяет разделить алгоритм на две ветви: регистрацию естественного ГК и регистрацию ИНГК.
Режим ГК.
6. Программирование таймера на 10мс., ЦАП на верхний и нижний уровни энергетического «окна», «флага» 180ЕН в 1 и останов в ожидании прерывания 7.5.
7. Регистрация импульсов естественного γ-излучения (чтением портов 19Н и 1АН) в 10-ти последовательных ячейках ОЗУ (по пять двухбайтовых отсчетов, накопленных за 200мс.) для 2-х зондов – ячейки 1810Н, 1811Н,….., 1822Н, 1823Н. Передача накопленных данных в наземный прибор и повторение цикла – 5ячеек* 200мс.=1сек. Переход к п.6.
Error: Reference source not found
Рис.7. Блок-схема алгоритма работы
скважинного прибора
Режим ИНГК.
8. Программирование верхнего и нижнего уровней энергетического «окна» в области ГИРЗ, «флага» ИНГК 180ЕН=02, проверка второго байта первого управляющего слова на разрешение запуска излучателя и, если разрешение есть, то - запуск, если нет, то переход на начало программы.
9. Запуск излучателя нейтронов, программирование таймера на время первой задержки Тзад1 и на первое канальное время Тк1. Указание области ОЗУ для данных (начальный адрес 18А4Н), затем останов в ожидании прерывания от Тзад1 (RST7.5).
10. Регистрация 1-го отсчета (после Тзад1) в области ГИРЗ по двум зондам в ячейки памяти с адресами 18А4Н и 18А5Н. Останов.
11. Регистрация отсчетов ГИРЗ по 16-ти каналам по двум зондам в область памяти 18А6 – 18С4Н.
12. Программирование таймера на время Тк2, верхнего и нижнего уровней энергетического «окна» в области КНАМ. Обработка зарегистрированного ГИРЗ (перенос данных из области памяти с 18А4Н в область с 1810Н с суммированием). Указание областей ОЗУ для дальнейшей работы – 18А4Н и 1850Н. Останов.
13. Регистрация 1-го отсчета в области КНАМ в ячейки 18А4Н и 18А5Н.
14. Регистрация 2-го отсчета в области КНАМ в ячейки 18А6Н И 18А7Н. Вычисление разностей 18А6Н – 18А4Н = ΔΝ1 и 18А7Н – 18А5Н = ΔΝ2 и перенос результатов в последовательные ячейки памяти с адреса 1850Н с суммированием по оставшимся 20-ти каналам. Проверка количества циклов (28Н – 14Н = 14Н = 20D).
15. «Флаг» 180ЕН в аккумулятор А и проверка прохождения последнего цикла 29Н.
16. Программирование количества циклов (ГИРЗ + КНАМ) 14Н раз, для чего отводим в качестве «флага» ячейку 180FH.
17. Повторяем (ГИРЗ + КНАМ) 14Н(20D) раз.
18. Пересылаем в наземный прибор накопленный файл данных объёмом А3Н байт (ГИРЗ + КНАМ), ограниченный маркерами начала файла – 9999 и конца файла – 3333. Установка «флагов» 180FН = 01, 180ЕН = 02, таймера на Тзад1 и Тк1, начала ОЗУ по адресу 1810Н и останов в ожидании прерывания 7.5 по концу Тзад1. Переход к п.8.
Для смены режима работы прибора необходимо произвести разовое выключение/ включение питания и вновь запрограммировать прибор.
Листинг программы по данному алгоритму представлен в Приложении 1.
Разработка и отладка программы производится с помощью программно-логической модели микропроцессора 8085 на персональном компьютере.
Приведенные описания принципиальной схемы прибора, блок-схемы алгоритма функционирования и листинга программы работы используются в лабораторном практикуме для выполнения индивидуального задания по лабораторной работе.
Цель работы. Изучение схемотехники и программирования МП-систем с использованием команд МП и языка ассемблер. Освоение различных способов адресации памяти и внешних устройств (портов).
Содержание работы. В процессе выполнения работы студент должен выделить из всей системы ту часть, которая определена его индивидуальным заданием, как в виде структурной или электрической принципиальной схемы, так и в виде блок-схемы алгоритма и соответствующей ему части программы.
Подготовка к выполнению работы. При подготовке к выполнению работы студент должен ознакомиться с технологией проведения ГИС с помощью приборов АИНК, представлять себе смысл решаемых при этом геологических задач, изучить структуру и принципиальную электрическую схему прибора, временную диаграмму поэтапного функционирования прибора и общую блок-схему алгоритма его работы по этой диаграмме. Необходимо знать и уметь применять при разработке МП – систем способов компоновки системы из готовых МП – узлов: памяти, связи с периферией, приема/передачи информации, адресации портов; при разработке и отладке ПО уметь применять средства разработки в виде кросс-ассемблера и программной модели МП i8085.
Порядок выполнения работы.
Ознакомиться с вариантами лабораторной работы, оценить ее местоположение в структуре МП - системы и в общем ПО;
Выделить в общей электрической схеме ту часть, которая относится к заданному варианту лабораторной работы, по схеме определить адреса используемых портов;
Составить блок-схему алгоритма выполнения поставленной задачи, произвести программирование по алгоритму и сравнить программу с аналогичным фрагментом общего ПО на систему.
Индивидуальные задания. Разработать электрическую схему, алгоритм функционирования, составить блок-схему алгоритма, разработать программу на языке Ассемблер и произвести ее отладку в среде кросс-средств МП i8085 сравнением с общим ПО на систему для следующих фрагментов скважинной МП-системы «АИНК-36» (варианты заданий).
Инициализация МП-системы, содержащей МП i8085, ОЗУ, таймер и порты ввода/вывода в виде МС КР1821РУ55 и кодера/декодера 588ВГ6 для взаимодействия верхним уровнем управления и контроля.
Цифровое тестирование МП-системы с установкой признака тестирования и циклической его передачей на верхний уровень.
Подготовительные работы к приему команд оператора после получения от него запроса на обслуживание.
Прием команд оператора через кодер/декодер манчестерского кода 588ВГ6, подключенного в качестве периферийной БИС к МП i8085.
Отправка маркера начала квитанции, сообщающего оператору о приходе информации и подтверждающей правильность принятых МП-системой команд оператора.
Отправка квитанции через кодер/декодер из ОЗУ с помощью МП i8085. Определить содержание квитанции.
Отправка маркера конца квитанции и подготовка к анализу принятого слова режима.
Анализ принятой команды «Режим работы скважинного прибора».
Подготовка к работе в режиме регистрации естественного гамма-излучения (ГК).
Прием информации от датчиков в режиме регистрации естественного ГК.
Обработка принятой информации в режиме регистрации естественного ГК.
Формирование и передача в наземный блок выходного файла естественного ГК.
Подготовка к работе в режиме импульсного нейтронного гамма-каротажа (ИНГК).
Подготовка к регистрации гамма-излучения радиационного захвата (ГИРЗ).
Регистрация гамма-излучения в области ГИРЗ.
Обработка информации ГИРЗ при подготовке выходного файла ИНГК.
Подготовка к регистрации вторичного гамма излучения в области наведенной активности кислорода (НАК).
Регистрация информации в области НАК.
Обработка информации НАК при подготовке выходного файла ИНГК.
Формирование и передача в наземный блок выходного файла ИНГК.
Отчет по лабораторной работе должен содержать: фрагмент электрической принципиальной схемы МП-системы, соответствующий заданию по лабораторной работе, с описанием ее функционирования; блок-схему алгоритма решения поставленной задачи; программу на языке Ассемблер с подробными комментариями.
Пример выполнения лабораторной работы по варианту №10
«Прием информации от датчиков в режиме регистрации естественного ГК».
Электрической принципиальной схемой для данного варианта является схема по рис.51, на которой представлены элементы, соответствующие заданию: счетчики DD5, DD6 и DD7, DD8, подключенные к портам А (адрес 19Н) и В (адрес 1АН) микросхемы 1821RU55 (адрес 10Н), таймер МС 1821RU55 (порты 14Н и 15Н), запрограммированный на 10 мс с автоматической перезагрузкой, а также счетчик-делитель DD9 (МС 1533ИЕ7) с коэффициентом пересчета 3, МП 1821ВМ85А, буферный регистр младшего байта адреса 588ИР1 и ПЗУ 573РФ5.
При приеме информации реализуем следующий алгоритм: 1.Заносим в ячейку памяти с адресом 180ЕН – флаг(код) режима работы прибора (тест - 01Н, ГК – 02Н, ИНГК – 03Н), добавляем 1, если получится 2, то это режим ГК;
Читаем слово режима, заданное оператором, из ячейки памяти 1800Н и проверяем какой задан режим (слово EF соответствует режиму ГК, а слово DF - режиму ИНГК);
Если назначен режим ГК, то реализуем следующую схему регистрации: т.к. таймер запрограммирован на циклический отсчет интервала 10 мс, то через этот интервал берем отсчеты 5 раз по двум зондам (порт 19Н и порт 1АН), каждый раз определяя разность текущего отсчета и предыдущего и помещая результат в последовательные ячейки памяти (начиная с 1810Н) с суммированием. Поскольку суммирование может привести к неоднократному переполнению ячейки памяти, отводим для суммы два байта памяти. Во второй байт переносим единицу переполнения с суммированием.
Указанную последовательность регистрации можно отобразить следующим образом (табл.19):
Таблица 19
10 мс |
10 мс |
10 мс |
10 мс |
10 мс |
|||||
№ ЯП(Н) |
Содерж. ЯП |
№ ЯП(Н) |
Содерж. ЯП |
№ ЯП(Н) |
Содерж. ЯП |
№ ЯП(Н) |
Содерж. ЯП |
№ ЯП(Н) |
Содерж. ЯП |
1810 |
|
1814 |
|
1818 |
|
181С |
|
1820 |
|
1811 |
|
1815 |
|
1819 |
|
181D |
|
1821 |
|
1812 |
|
1816 |
|
181А |
|
181E |
|
1822 |
|
1813 |
|
1817 |
|
181В |
|
181F |
|
1823 |
|
Здесь:
где (N1 N5) и(N/1 N/5) – соответственно содержимое счетчиков DD5, DD6 и DD7, DD8 через интервалы времени 10 мс по 1-му и 2-му зондам прибора;
CY=1 – единица переноса при переполнении ячейки памяти;
- сумма переносов, или старший байт суммы приращений ;
N0 и N/0 – содержимое счетчиков DD5, DD6 и DD7, DD8 в начальный момент времени;
Указанная в табл. 19 последовательность отсчётов повторяется 20 раз, чтобы сформировать для обработки и получения каротажной диаграммы следующий файл, занимающий последовательные ячейки памяти (ЯП) с адреса 1810Н до 1823Н.
Рис.54 Выходной файл МП-системы ИГН (режим ГК)
В данном файле 5 отсчётов по двум зондам (порт 19Н и порт 1АН), каждый из которых представляет собой количество импульсов за время 200мс. (интенсивность импульсов), составляет последовательность пяти точек измерения за 1 сек. «привязанную» при получении на поверхности к текущей глубине нахождения прибора. Это позволяет построить графическую зависимость интенсивности гамма – излучения от глубины, т.е. каротажную диаграмму ГК.
Приведённый выше алгоритм приёма информации от датчиков, регистрирующих естественное гамма – излучение, можно представить в виде граф – схемы (рис. 55)
Программа на Ассемблере, соответствующая данной блок – схеме алгоритма в виде листинга, приведена ниже.
Рис.8. Блок схема алгоритма к заданию 10
ПРОГРАММА ПРИЕМА ИНФОРМАЦИИ В РЕЖИМЕ
РЕГИСТРАЦИИ ЕСТЕСТВЕННОГО ГК
003С JMP AR75 ;АНАЛИЗ ПPЕPЫВАНИЯ RST 7.5
AR75:
MVI A,0Fh
SIM
LDA 180Eh ;СЧЕТЧИК 7.5 УВЕЛИЧИВАЕМ НА ЕДИНИЦУ
INR A
STA 180Eh
MOV B,A
XRI 01h
JZ BEGIN1 ;ЕСЛИ ДА,ТО ПЕPЕХОД К ЦИФРОВОМУ ТЕСТУ
MOV A,B
XRI 02h
JNZ AR75E ;ЕСЛИ НЕТ,ТО ПЕPЕХОД К ГИРЗ
LDA 1800h ;D4,D5 = 01 ?
ANI 30h
XRI 01h
JNZ AR752 ;ЕСЛИ НЕТ,ТО ПЕPЕХОД К ПРОДОЛЖЕНИЮ ГК
ИНГК ГИРЗ
AR752:
LDA 1800h ;D5,D4 = 01 ИЛИ 11 ?
ANI 30h
JZ BEGIN ;ЕСЛИ НЕТ,ТО ПЕPЕХОД К НАЧАЛУ
LDA 180Fh ;СЧЕТЧИК ЦИКЛОВ PАВЕН НУЛЮ ?
CPI 00h
JNZ AR7522 ;ЕСЛИ НЕТ,TO ПЕPЕХОД К МЕТКЕ AR7522
LXI H,1810h ;ЕСЛИ ДА,ТО p.п.HL=1810h И В ТАЙМЕP ЗАПИСЫ-
LXI B,6710h ;ВАЕМ 10 мс. В PЕЖИМЕ 2
CALL TIME ;СТАPТ ТАЙМЕPА
LDA 180Fh ;УВЕЛИЧИВАЕМ СЧЕТЧИК ЦИКЛОВ НА ЕДИНИЦУ
INR A
STA 180Fh
LXI H,1810h
AR7522:
IN 19h ;ЧИСЛО С ПОPТА (A) ЗАПИСЫВАЕМ В p.B
MOV B,A
IN 1Ah ;ЧИСЛО С ПОPТА (B) ЗАПИСЫВАЕМ В p.C
MOV C,A
ЗАДАНИЕ 11(обработка принятой информации)
LDA 180Fh ;УВЕЛИЧИВАЕМ СЧЕТЧИК ЦИКЛОВ НА ЕДИНИЦУ
INR A
STA 180Fh
CPI 06h ;СЧЕТЧИК ЦИКЛОВ РАВЕН 7 ?
JZ AR7528 ;ЕСЛИ ДА,ТО ПЕРЕХОД К МЕТКЕ AR7528
AR7525:
MVI A,01h ;СЧЕТЧИК RST 7.5 = 1
STA 180Eh
MVI A,1ah ;УСТАНАВЛИВАЕМ МАСКУ НА RST 6.5
SIM
RET ;ВОЗВРАТ К ОЖИДАНИЮ ПРЕРЫВАНИЙ
AR7528:
LXI H,1810h
LDA 180Dh
INR A
STA 180Dh
CPI 14h
JNZ AR7529
AR7529:
MVI A,01h ;СЧЕТЧИК RST 7.5 = 1
STA 180Eh
STA 180Fh
MVI A,1ah ;УСТАНАВЛИВАЕМ МАСКУ НА RST 6.5
SIM
RET ;ВОЗВРАТ К ОЖИДАНИЮ ПРЕРЫВАНИЙ
Приложение 1. Листинг программы функционирования МП-системы «Скважинный
импульсный генератор нейтронов»
JMP BEGIN ;ПЕPЕХОД К НАЧАЛУ
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
JMP BEGIN ;ПЕPЕХОД К НАЧАЛУ
JMP R55 ;АНАЛИЗ ПPЕPЫВАНИЯ RST 5.5
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
JMP BEGIN
JMP AR75 ;АНАЛИЗ ПPЕPЫВАНИЯ RST 7.5
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BEGIN:
DI ;ЗАПPЕТ ПPЕPЫВАНИЙ
LXI SP,18F0h ;СТЕК ПО АДPЕСУ 18F0h
MVI A,4Ch ;PУ55 В PЕЖИМЕ : P.А.-ВВОД,P.В.-ВВОД,
OUT 10h ;P.С.-ВЫВОД
MVI B,00h ;ОБНУЛЕНИЕ p.D
nop
nop
LXI H,1800h ;p.HL - 1800h
MVI A,A6h ;ОБНУЛЕНИЕ ЯЧЕЕК ПАМЯТИ С
ZERO:
MOV M,B ; АДРЕСА 1800h ПО 18A6h
INX H
CMP L
JNZ ZERO
LXI B,6710h ;PЕЖИМ 2 И 10мс В ТАЙМЕP
CALL TIME ;СТАPТ ТАЙМЕPА
LXI H,1800h ;p.HL-1800h
MVI A,5Fh ;В КВУ - ПОPОГ 5Fh
OUT 08h
MVI A,50h ;В КНУ - ПОPОГ 50h
OUT 80h
LXI B,5020h ;ПЕPЕДАЧА В НАЗЕМНЫЙ ПPИБОP ЧИСЛА 5020
CALL VGOUT
MVI A,3Eh ;СБPОС ТPИГГЕPА ДЕКОДЕPА
OUT 13h
MVI A,1Eh
OUT 13h
MVI A,1Ah ;МАСКА НА RST 6.5
SIM
JMP HALTEN ;ПЕPЕХОД К ОЖИДАНИЮ
BEGIN1:
LXI B,5020h ;ПЕPЕДАЧА В НАЗЕМНЫЙ ПPИБОP ЧИСЛА 5020
CALL VGOUT
MVI A,3Eh ;СБPОС ТPИГГЕPА ДЕКОДЕPА
OUT 13h
MVI A,1Eh
OUT 13h
MVI A,00h ;ОБНУЛЕНИЕ СЧЕТЧИКА 7.5
STA 180Eh
MVI A,1Ah ;МАСКА НА RST 6.5
SIM
RET ;ПЕPЕХОД К ОЖИДАНИЮ
R55:
LDA 180Ch ;СЧЕТЧИК 5.5 PАВЕН НУЛЮ ?
XRI 00h
JNZ R551 ;ЕСЛИ НЕТ,ПЕPЕХОД
LXI H,1800h ;ЕСЛИ ДА,ТО p.HL-1810h
R551:
MVI A,0Eh ;МАСКА НА RST 7.5 И RST 6.5
SIM
MVI A,3Ch ;ВЫБОP CS-C PУ-55 И СБPОС ТPИГГЕPА
OUT 13h ;ДЕКОДЕPА
IN 28h ;ВВОД СТ.БАЙТА УПPАВ.СЛОВА
MOV M,A
INX H
IN 48h ;ВВОД МЛ.БАЙТА УПPАВ.СЛОВА
MOV M,A
INX H
MVI A,1Eh ;СНЯТЬ CS-C PУ-55
OUT 13h
LDA 180Ch ;СЧЕТЧИК 5.5 УВЕЛИЧИТЬ НА ЕДИНИЦУ
INR A
STA 180Ch
MVI A,3Eh ;СБPОС ДЕКОДЕPА
OUT 13h
MVI A,1Eh
OUT 13h
AR55:
LDA 180Ch ;СЧЕТЧИК 5.5 PАВЕН 6
XRI 06h
JZ AR551 ;ЕСЛИ ДА,ТО ПЕPЕХОД К АНАЛИЗУ СЛОВ
JMP HALTEN3
AR551:
MVI A,0Fh ;МАСКА НА RST 7.5,RST 6.5,RST 5.5
SIM
MVI A,4Ch ;ОСТАНОВ ТАЙМЕРА
OUT 10h
LXI H,1800h
CALL ZADER8
MVI B,90h ;!!!!!!! ПОСЫЛКА КОМАНДНОГО СЛОВА
MVI C,00h ;!!!!!!! 9000
SR1:
RIM ;--------
ANI 20h
JNZ SR1
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
CALL ZADER1
SR2:
MVI A,93h ;В p.HL АДPЕС ПОСЛЕДНЕЙ ЯЧЕЙКИ ?
CMP L
JC SR3 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR7591
MOV C,M ;МЛ.БАЙТ В ВГ-6
INX H ;p.HL + 1
MOV B,M ;СТ.БАЙТ В ВГ-6
INX H ;p.HL + 1
CALL VGOUT ;П.П. ПЕPЕДАЧИ
CALL ZADER1
JMP SR2
SR3:
MVI B,30h ;!!!!! ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3000
MVI C,00h
SR4:
RIM ;--------
ANI 20h
JNZ SR4
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
CALL ZADER1
MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК ЦИКЛОВ
STA 180Fh
POP H
POP H
POP H
POP H
POP H
LXI H,1810h
MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК 5.5
STA 180Ch
STA 180Dh
STA 180Eh
STA 180Fh
AR558:
LDA 1800h ;D5,D4 = 00 ?
ANI 30h
JNZ AR552 ;ЕСЛИ НЕТ,ПЕPЕХОД К СЛЕДУЮЩЕМУ АНАЛИЗУ
MVI A,0Ah ;ЕСЛИ ДА,УСТАНОВИТЬ МАСКУ НА RST 6.5 И
SIM ;ПЕPЕХОД К НАЧАЛУ
JMP BEGIN
AR552:
LDA 180Bh ;ВЫЧИСЛЕНИЕ СТ.БАЙТА Тз2 ДЛЯ РЕЖИМА 3
ANI 3Fh
ORI 00h
STA 180Bh
LDA 1800h
ANI 30h
XRI 10h
JNZ AR553
LDA 1800h
ANI 01h
JZ AR554
LDA 1803h
OUT 08h
AR554:
LDA 1800h
ANI 02h
JZ AR555
LDA 1802h
OUT 80h
AR555:
MVI A,02h
STA 180Eh
MVI A,0Bh
SIM
JMP AR753
AR553:
LDA 1800h
ANI 01h
JZ AR556
LDA 1803h
OUT 08h
AR556:
LDA 1800h
ANI 02h
JZ AR557
LDA 1802h
OUT 80h
AR557:
LXI B,6710h
CALL TIME
MVI A,01h
STA 180Eh
MVI A,0Bh
SIM
RET
AR75:
MVI A,0Fh
SIM
LDA 180Eh ;СЧЕТЧИК 7.5 УВЕЛИЧИВАЕМ НА ЕДИНИЦУ
INR A
STA 180Eh
MOV B,A
XRI 01h
JZ BEGIN1 ;ЕСЛИ ДА,ТО ПЕPЕХОД К НАЧАЛУ 1
MOV A,B
XRI 02h
JNZ AR75E ;ЕСЛИ НЕТ,ТО ПЕPЕХОД
LDA 1800h ;D4,D5 = 01 ?
ANI 30h
XRI 01h
JNZ AR752 ;ЕСЛИ НЕТ,ТО ПЕPЕХОД
AR753:
LDA 180Fh ;СЧЕТЧИК ЦИКЛОВ УВЕЛИЧИВАЕМ НА 1
INR A
STA 180Fh
LDA 1801h ;D15 = 1 ?
ANI F0h
JZ AR7577 ;ЕСЛИ НЕТ,ИЗЛУЧАТЕЛЬ НЕ ВКЛЮЧАЕМ
DI
MVI A,1Fh ;СТАPТ ИЗЛУЧАТЕЛЯ
OUT 13h
MVI A,4Ch ;ОСТАНОВ ТАЙМЕРА
OUT 10h
NOP
NOP
NOP
NOP
NOP
NOP
MVI A,1Eh ;СНЯТЬ СТАРТ ИЗЛУЧАТЕЛЯ
OUT 13h
AR7577:
LDA 1804h ;ЗАПИСЫВАЕМ МЛ.БАЙТ Тз1 В ТАЙМЕP
MOV C,A
LDA 1805h ;ЗАПИСЫВАЕМ СТ.БАЙТ Тз1 В ТАЙМЕP И
ANI 3Fh ; УСТАНАВЛИВАЕМ PЕЖИМ 3 ТАЙМЕPА
ORI 00h
MOV B,A
CALL TIME
LDA 1806h
MOV C,A
LDA 1807h
ANI 3Fh
ORI 40h
MOV B,A
CALL TIME
AR7531:
LXI H,1810h ;p.HL=1810h
MVI A,1ah ;МАСКА RST6.5 и RST5.5
SIM
RET
AR752:
LDA 1800h ;D5,D4 = 01 ИЛИ 11 ?
ANI 30h
JZ BEGIN ;ЕСЛИ НЕТ,ТО ПЕPЕХОД К НАЧАЛУ
LDA 180Fh ;СЧЕТЧИК ЦИКЛОВ PАВЕН НУЛЮ ?
CPI 00h
JNZ AR7522 ;ЕСЛИ НЕТ,TO ПЕPЕХОД К МЕТКЕ AR7522
LXI H,1810h ;ЕСЛИ ДА,ТО p.HL=1810h И В ТАЙМЕP ЗАПИСЫ-
LXI B,6710h ;ВАЕМ 10 мс В PЕЖИМЕ 2
CALL TIME ;СТАPТ ТАЙМЕPА
LDA 180Fh ;УВЕЛИЧИВАЕМ СЧЕТЧИК ЦИКЛОВ НА ЕДИНИЦУ
INR A
STA 180Fh
LXI H,1810h
AR7522:
IN 19h ;ЧИСЛО С ПОPТА (A) ЗАПИСЫВАЕМ В p.B
MOV B,A
IN 1Ah ;ЧИСЛО С ПОPТА (B) ЗАПИСЫВАЕМ В p.C
MOV C,A
MOV A,B ;СPАВНИВАЕМ ЧИСЛО С ПОPТА (A) С ПPЕДЫ-
CMP D ;ДУЩИМ,ЕСЛИ ПPЕДЫДУЩЕЕ БОЛЬШЕ ПО ЗНА-
JC AR752J0 ;ЧЕНИЮ,ТО ПЕPЕХОД К МЕТКЕ AR752J0
SUB D ;ВЫЧИТАЕМ ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ
AR752G0:
ADD M
MOV M,A ;ЗАПИСЫВАЕМ В ПАМЯТЬ РАЗНОСТЬ
MOV D,B ;В р.D ЗАПИСЫВАЕМ ЧИСЛО С ПОРТА (A)
INR L ;УВЕЛИЧИВАЕМ р.HL НА ЕДИНИЦУ
MVI A,00h
ADC M
MOV M,A
INR L
MOV A,C ;СРАВНИВАЕМ ЧИСЛО С ПОРТА (B) С ПРЕДЫ-
CMP E ;ДЫДУЩИМ,ЕСЛИ ПРЕДЫДУЩЕЕ БОЛЬШЕ,ТО
JC AR752K0 ;ПЕРЕХОД К МЕТКЕ AR752K0
SUB E ;ВЫЧИТАЕМ ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ
AR752H0:
ADD M
MOV M,A ;ЗАПИСЫВАЕМ В ПАМЯТЬ РАЗНОСТЬ
MOV E,C ;В р.E ЗАПИСЫВАЕМ ЧИСЛО С ПОРТА (B)
INR L ;УВЕЛИЧИВАЕМ р.HL НА ЕДИНИЦУ
MVI A,00h
ADC M
MOV M,A
INR L
LDA 180Fh ;УВЕЛИЧИВАЕМ СЧЕТЧИК ЦИКЛОВ НА ЕДИНИЦУ
INR A
STA 180Fh
CPI 06h ;СЧЕТЧИК ЦИКЛОВ РАВЕН 7 ?
JZ AR7528 ;ЕСЛИ ДА,ТО ПЕРЕХОД К МЕТКЕ AR7528
AR7525:
MVI A,01h ;СЧЕТЧИК RST 7.5 = 1
STA 180Eh
MVI A,1ah ;УСТАНАВЛИВАЕМ МАСКУ НА RST 6.5
SIM
RET ;ВОЗВРАТ К ОЖИДАНИЮ ПРЕРЫВАНИЙ
AR7529:
MVI A,01h ;СЧЕТЧИК RST 7.5 = 1
STA 180Eh
STA 180Fh
MVI A,1ah ;УСТАНАВЛИВАЕМ МАСКУ НА RST 6.5
SIM
RET ;ВОЗВРАТ К ОЖИДАНИЮ ПРЕРЫВАНИЙ
AR752J0:
MVI A,FFh ;ВЫПОЛНЯЕМ ВЫЧИСЛЕНИЕ
SUB D ;(256)-(ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ)+(СЧИТАН-
ADD B ;НОЕ ЗНАЧЕНИЕ) + (1)
INR A
JMP AR752G0 ;ПЕРЕХОД К МЕТКЕ AR752G0
AR752K0:
MVI A,FFh ; -11-
SUB E
ADD C
INR A
JMP AR752H0
AR7528:
LXI H,1810h
LDA 180Dh
INR A
STA 180Dh
CPI 14h
JNZ AR7529
AR7521:
LXI H,1810h ;В р.HL=1810h
MVI B,90h ;!!!!! ПЕРЕДАЧА КОМАНДНОГО СЛОВА 9000
MVI C,00h
NO2:
RIM ;--------
ANI 20h
JNZ NO2
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
CALL ZADER1
AR7523:
MVI A,24h ;В РЕГИСТРЕ HL ЗНАЧЕНИЕ РАВНО 181Ah ?
CMP L
JZ AR7524 ;ЕСЛИ ДА,ТО ПЕРЕХОД К МЕТКЕ AR7524
MOV B,M ;ЕСЛИ НЕТ,ТО ПЕРЕДАЧА СЛОВА И ПЕРЕХОД
MVI A,00h
MOV M,A
INR L ;К МЕТКЕ AR7523
MOV C,M
MOV M,A
INR L
CALL VGOUT
CALL ZADER1
JMP AR7523
AR7524:
MVI B,30h ;!!!!! ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3000
MVI C,00h
NO8:
RIM ;--------
ANI 20h
JNZ NO8
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
MVI A,0Ah
SIM
CALL ZADER1
MVI A,0Bh
SIM
LXI H,1810h ;В р.HL ЗАПИСЫВАЕМ ЗНАЧЕНИЕ 1810h
MVI A,01h ;СЧЕТЧИК ЦИКЛОВ = 1
STA 180Fh
MVI A,00h
STA 180Dh
JMP AR7525 ;ПЕРЕХОД К МЕТКЕ AR7525
AR75E:
MOV A,B
CPI 03h
JNZ AR751 ;ЕСЛИ НЕТ,ПЕPЕХОД К МЕТКЕ AR751
LXI H,18A4h
MOV A,M
IN 19h
MOV M,A
INR L
IN 1Ah
MOV M,A
INR L
MVI A,1ah ;6.5 5.5
SIM
RET
AR751:
CPI 14h ;СЧЕТЧИК RST 7.5 БОЛЬШЕ 18 ?
JNC AR754 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR754
AR75F:
IN 19h ;ВВОД ЧИСЛА С ПОPТА (A)
MOV M,A
INR L
IN 1Ah ;ВВОД ЧИСЛА С ПОPТА (B)
MOV M,A
INR L
MOV A,B
CPI 12h
JNZ AR75V0
LDA 180Ah
OUT 14h
LDA 180Bh
OUT 15h
MVI A,CCh
OUT 18h
AR75V0:
MOV A,B
CPI 13h
JNZ AR75Y10
MVI A,D0h
OUT 14h
MVI A,47h
OUT 15h
MVI A,CCh
OUT 18h
LDA 1809h
OUT 08h
LDA 1808h
OUT 80h
LXI H,18A4h
LXI D,1810h
AR75V01:
MOV A,L
CPI C4h
JZ AR75Y0
MOV B,M
INR L
INR L
MOV A,M
CMP B
JC AR75V02
SUB B
AR75V03:
XCHG
ADD M
MOV M,A
INR L
MVI A,00h
ADC M
MOV M,A
INR L
XCHG
DCR L
JMP AR75V01
AR75V02:
MOV C,A
MVI A,FFh
SUB B
ADD C
INR A
JMP AR75V03
AR75Y10:
MVI A,1ah ; 6.5 5.5
SIM
RET
AR75Y0:
LXI D,1850h
LXI H,18A4h
MVI A,1ah ; 6.5 5.5
SIM
RET
AR754:
CPI 14h
JNZ AR756
CPI 14h
IN 19h
MOV M,A
INR L
IN 1Ah
MOV M,A
INR L
MVI A,1ah ; 6.5 5.5
SIM
RET
AR756:
NOP
IN 19h
MOV M,A
INR L
IN 1Ah
MOV M,A
DCR L
MOV A,M
DCR L
DCR L
MOV B,M
CMP B
JC AR75J1
SUB B
AR75G1:
XCHG
ADD M ;---------
MOV M,A ;----------
INR L ;---------
MVI A,00h ;---------
ADC M ; ---------
MOV M,A ; ---------
INR L
XCHG
INR L
INR L
INR L
MOV A,M
DCR L
DCR L
MOV C,M
CMP C
JC AR75K1
SUB C
AR75H1:
XCHG
ADD M ;------------
MOV M,A ;------------
INR L ;------------
MVI A,00h ;-------------
ADC M ; ----------
MOV M,A ; ------------
INR L
XCHG
INR L
LDA 18A6h
STA 18A4h
LDA 18A7h
STA 18A5h
LDA 180Eh
CPI 28h
JNZ AR75X0
MVI A,8Ch
OUT 10h
AR75X0:
LDA 180Eh
CPI 29h
JZ AR757
MVI A,1ah
SIM
RET
AR75J1:
MOV C,A
MVI A,FFh
SUB B
ADD C
INR A
JMP AR75G1
AR75K1:
MOV B,A
MVI A,FFh
SUB C
ADD B
INR A
JMP AR75H1
AR757:
LDA 180Fh
CPI 14h
JNZ AR759
CALL ZADER1
LXI H,1810h
MVI B,90h ;!!!!!!! ПОСЫЛКА КОМАНДНОГО СЛОВА
MVI C,00h ;!!!!!!! 9000
NO3:
RIM ;--------
ANI 20h
JNZ NO3
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
CALL ZADER1
AR758:
MVI A,A3h ;В p.HL АДPЕС ПОСЛЕДНЕЙ ЯЧЕЙКИ ?
CMP L
JC AR7591 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR7591
MOV C,M ;МЛ.БАЙТ В ВГ-6
MVI A,00h ;ОБНУЛИТЬ Я.П. МЛ.БАЙТА
MOV M,A
INX H ;p.HL + 1
MOV B,M ;СТ.БАЙТ В ВГ-6
MOV M,A ;ОБНУЛИТЬ Я.П. СТ.БАЙТА
INX H ;p.HL + 1
CALL VGOUT ;П.П. ПЕPЕДАЧИ
CALL ZADER1
JMP AR758
AR7591:
MVI B,30h ;!!!!! ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3000
MVI C,00h
NO9:
RIM ;--------
ANI 20h
JNZ NO9
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
MVI A,0Ah
SIM
CALL ZADER1
MVI A,0ah
SIM
MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК ЦИКЛОВ
STA 180Fh
MVI A,0ah
SIM
CALL ZADER8
AR759:
LDA 1803h
OUT 08h
LDA 1802h
OUT 80h
MVI A,00h
STA 180Eh
JMP AR558
TIME:
MOV A,C
OUT 14h
MOV A,B
OUT 15h
MVI A,CCh
OUT 10h
RET
VGOUT:
MVI A,1Bh
SIM
NO:
RIM ;--------
ANI 20h
JNZ NO
CALL ZADER1
MVI A,1Ch ;ВЫБОP CS-D
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,0Ch ;СТАPТ ST-D
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-D,ВЫБОP CS-D,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
RET
HALTEN:
EI
HLT
JMP HALTEN
ZADER1:
; MVI A,0Ch
;ZADER2:
; DCR A
; NOP
; NOP
; NOP
; NOP
; NOP
; JNZ ZADER2
; NOP
; NOP
NOP
RET
HALTEN3:
EI
MVI A,FFh
HALTEN3A:
DCR A
NOP
NOP
NOP
JNZ HALTEN3A
MVI A,FFh
HALTEN3B:
DCR A
NOP
NOP
NOP
JNZ HALTEN3B
MVI A,FFh
HALTEN3C:
DCR A
NOP
NOP
NOP
JNZ HALTEN3C
MVI A,FFh
HALTEN3D:
DCR A
NOP
NOP
NOP
JNZ HALTEN3D
LXI H,1810h
MVI B,90h ;!!!!!!! ПОСЫЛКА КОМАНДНОГО СЛОВА
MVI C,00h ;!!!!!!! 9000
TEN32:
RIM ;--------
ANI 20h
JNZ TEN32
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
CALL ZADER1
TEN33:
MVI A,A3h ;В p.HL АДPЕС ПОСЛЕДНЕЙ ЯЧЕЙКИ ?
CMP L
JC TEN34 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR7591
MVI C,20h ;МЛ.БАЙТ В ВГ-6
MVI A,00h ;ОБНУЛИТЬ Я.П. МЛ.БАЙТА
MOV M,A
INX H ;p.HL + 1
MVI B,50h ;СТ.БАЙТ В ВГ-6
MOV M,A ;ОБНУЛИТЬ Я.П. СТ.БАЙТА
INX H ;p.HL + 1
CALL VGOUT ;П.П. ПЕPЕДАЧИ
CALL ZADER1
JMP TEN33
TEN34:
MVI B,30h ;!!!!! ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3000
MVI C,00h
TEN35:
RIM ;--------
ANI 20h
JNZ TEN35
CALL ZADER1
MVI A,1Ah ;ВЫБОP CS-С
OUT 13h
MOV A,C
OUT 20h ;МЛ.БАЙТ
MOV A,B ;СТ.БАЙТ
OUT 40h
MVI A,12h ;СТАPТ ST-С
OUT 13h
MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
MVI A,1Eh
OUT 13h
CALL ZADER1
MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК ЦИКЛОВ
STA 180Fh
JMP BEGIN
ZADER8:
MVI A,FFh
ZADER82:
DCR A
NOP
NOP
NOP
NOP
NOP
JNZ ZADER82
MVI A,FFh
ZADER83:
DCR A
NOP
NOP
NOP
NOP
NOP
JNZ ZADER83
NOP
NOP
NOP
RET
Приложение 2. Элементная база для лабораторной работы.
2.1. Озу с портами ввода/вывода и таймером кр1821ру55
БИС К1821РУ55 включает следующие устройства: статическое ОЗУ емкостью 2048 бит с организацией 256*8; два 8-битовых и один 6-битовый порты; 14-битовый программируемый таймер. Условное графическое обозначение БИС дано на рис.9, ее укрупненная структурная схема — на рис.10.
Назначение выводов.
AD7 — AD0 — двунаправленная мультиплексная 8-разрядная шина адрес/данные.
РА7 — РА0 — двунаправленная 8-разрядная шина ввода — вывода данных порта А.
РВ7—РВ0 — двунаправленная 8-разрядная шина ввода — вывода данных порта В.
РС5 — PC0 — двунаправленная 6-разрядная шина ввода — вывода данных порта С.
RD — вход управления чтением данных из БИС.
WR — вход управления записью данных в БИС.
IO/М — вход выборки порта ввода — вывода или памяти.
ALE — вход разрешения фиксации адреса внутри БИС.
RESET — вход сигнала сброса.
CS — вход выборки БИС.
TIMER IN — вход синхроимпульсов таймера.
TIMER OUT — выходной сигнал таймера.
Uсс — напряжение питания ( + 5 В).
GND — общий.
Рис.9. Условное графическое
обозначение БИС РУ55 Рис. 10. Структурная схема БИС ОЗУ РУ55
Сигналы БИС образуют три группы в соответствии с выполняемыми функциями: 1) сопряжение БИС и МП и управление ею, 2) параллельный ввод — вывод, 3) вход и выход таймера.
Линии адреса/данных AD7 — AD0, а также ALE, RD, WR и IO/М соединяются с одноименными линиями микропроцессора и их назначение можно узнать из описания соответствующих сигналов МП 8085 (см. 2.1). Демультиплексирование линий AD7 — AD0 производится как обычно, с помощью запоминания адресной информации в регистре-защелке по срезу импульса ALE. Различие состоит в том, что здесь эта операция осуществляется не во внешнем, а во внутреннем адресном регистре АР, на который через буфер адреса/данных поступает младший байт адреса. С выходов регистра АР снимаются сигналы А7 — А0 для адресации ячеек ОЗУ, причем младшие биты А2 — А0 подаются также в устройство управления для адресации внутренних узлов (регистров) БИС.
Буфер адреса/данных выполняет те же функции, что и в МП 8085 и содержит восемь двунаправленных усилителей с z-состояниями. Блок устройства управления воспринимает внешние сигналы управления и вырабатывает внутренние сигналы, управляющие работой всех блоков БИС. В состав устройства управления входят регистр управляющего слова (РУС), называемый также регистром команд (РК), и регистр слова состояния (РСС). В первом хранится поступающее из МП управляющее слово, которое определяет режим работы портов ввода — вывода и содержит команды управления таймером. Во втором формируется информация о текущем состоянии сигналов, сопровождающих работу портов в режиме с квитированием сообщений, и о завершении цикла счета в таймере. Отметим, что для РУС предусмотрена только операция записи, а для РСС — только операция чтения. Поэтому для них выделен один адрес, а обращение к конкретному регистру зависит от активного сигнала записи/чтения WR/RD.
Программирование БИС ОЗУ РУ55 состоит в том, что в регистр управляющего слова записывается байт, формат которого показан на рис. 11а. Биты D1, D0 управляющего слова задают направление передачи данных через порты А и В; биты D3, D2 определяют вариант использования порта С; биты D5, D4 разрешают или запрещают выработку сигналов прерывания INTR; биты D7, D6 содержат код ТМ2ТМ1 команды управления таймером (табл.10). Отметим, что новые значения N(код загрузки таймера) и кода режима могут быть загружены во время выполнения цикла счета. Однако для того, чтобы начался счет с новым N и в новом режиме, следует подать команду пуска таймера (ТМ2ТМ1 = 11), даже в том случае, когда изменяется только N.
Рис. 11. Формат управляющего слова РУ55(а) и его слова-состояния (б).
Таблица 13.
При раздельном управлении портами и таймером необходимо учитывать, что информация, относящаяся к этим узлам, совмещена в одном байте управляющего слова. Так, при назначении или изменении режимов работы портов следует установить D7 = D6 = 0, чтобы не повлиять на работу таймера, а в биты D5, D4 занести требуемую информацию. Если же стоит задача управления таймером, то необходимо изменить биты D7, D6 и сохранить содержимое D5 — D0 регистра РУС.
Поскольку содержимое РУС не может быть считано, то целесообразно хранить управляющее слово в специально выделенной ячейке ОЗУ. Для подачи новой команды таймеру, обычно выполняются следующие действия: извлекается управляющее слово из ОЗУ; устанавливаются в нуль биты D7, D6 с помощью команды маскирования AND; с помощью команды OR записываются единицы в биты D7, D6 в соответствии с кодом требуемой команды таймера; сформированное управляющее слово загружается в РУС БИС РУ55 и запоминается в ОЗУ.
Для РУ55 характерно, что можно считывать содержимое портов, запрограммированных не только на ввод, но и на вывод данных. Это осуществляется обычным чтением с помощью команды IN, по которой в аккумулятор вводится байт, выведенный ранее в данный порт. Такая операция не оказывает влияния на управляющие сигналы, связанные с этим портом.
Контроль состояния портов ввода — вывода и таймера осуществляется путем считывания и анализа слова-состояния, формат которого представлен на рис. 11,б. В отношении портов ввода — вывода анализ слова-состояния имеет смысл только при использовании режима с квитированием сообщений, поскольку в режиме простого ввода — вывода пересылки данных через порты не влияют на содержимое РСС. Бит ТС слова-состояния может использоваться для организации прерывания от таймера. Значение ТС = 1 устанавливается по окончании цикла счета; ТС = 0 — при считывании содержимого РСС и поступлении сигнала сброса RESET.
Функционирование портов ввода — вывода. Порты А и В одинаковы, и каждый из них содержит 8-битовый регистр для буферного запоминания пересылаемого байта данных. Все разряды портов А и В используются для ввода или вывода параллельно, т.е. невозможна установка направления передачи индивидуально для каждого разряда.
В зависимости от содержания РУС каждый порт (А и В) может работать в двух режимах: простого ввода — вывода (без обмена управляющими сигналами) или ввода — вывода с квитированием сообщения (с обменом управляющими сигналами). В первом режиме порт С также может осуществлять ввод вывод параллельно по шести линиям.
Таблица 14.
Во втором случае линии порта С разбиваются на две группы, одна из которых обеспечивает обмен управляющими сигналами для порта А, а другая- для порта В. Варианты использования линий порта С и соответственно организации работы всех портов РУ55 представлены в табл.14, где использованы следующие обозначения: INTR A/INTR В (Interrupt Request) - запрос прерывания по порту А/В; BF A/BF В (Buffer Full)— буфер порта А/В полон/занят;
STB A/STB В (Strobe) — строб записи, соответствующий порту А/В.
Функционирование таймера. Блок таймера содержит 14-битовый вычитающий счетчик, 16-битовый регистр хранения, схему формирования выходного сигнала и схему управления таймером. Счетчик выполняет основную функцию данного блока, заключающуюся в подсчете импульсов, поступающих извне на вход TIMER IN. Регистр хранения в 14 младших битах содержит коэффициент счета N, который загружается в него при подготовке таймера к работе и задает начальное состояние счетчика. Число N может иметь любое значение от 2Н до 3FFFN. Два старших бита этого регистра составляют регистр режима (RR), в котором хранится код ТМ2ТМ1 заданного режима работы таймера. Схема формирования обеспечивает форму сигнала TIMER OUT в соответствии с режимом работы таймера. Этот сигнал обязательно изменяет свое значение в момент окончания счета. Схема управления реализует заданный режим работы таймера и, в частности, осуществляет перезагрузку числа N из регистра в счетчик при организации циклической (непрерывной) работы таймера.
Программирование таймера состоит в загрузке двухбайтового слова в регистр хранения, после чего осуществляется запуск счетчика с помощью специальной команды (предусмотрен только программный запуск таймера). Во время работы счетчик уменьшает свое содержимое по фронту каждого импульса, поступающего на вход TIMER IN.
При обращении к таймеру используются два адреса: младший байт N загружается по адресу А2А1А0= 100. старший — по адресу А2А1А0= 101. Это позволяет загружать указанные байты в любом порядке.
Формат двухбайтового слова, загружаемого в таймер, представлен на рис.12.
Два старших бита М2М1 задают один из четырех режимов работы таймера, при которых вырабатываются соответствующие сигналы на выходе TIMER OU. В режиме 0 поддерживается выходной сигнал
TIMER OUT = l в течение первой половины счета и TIMER OUT = 0 в течение второй.
Режим 1 аналогичен режиму 0 с той разницей, что каждый раз по окончании счета производится автоматическая перезагрузка N из регистра хранения в счетчик и повторный запуск счетчика.
В режиме 2 после окончания счета формируется одиночный импульс напряжения низкого уровня, длительность которого равна одному периоду входных (счетных) импульсов. Режим 3 отличается от режима 2 автоматической перезагрузкой и перезапуском счетчика, что обеспечивает непрерывность работы таймера. Это режим деления частоты с выработкой выходного сигнала несимметричной формы (скважность зависит от значения N).
Рис. 12. Формат команды управления таймером.
Адресация БИС и ее внутренних узлов. В РУ55 предусмотрены изолированные адресные пространства памяти и ввода — вывода: при IO/М =0 восьмибитовый адрес А7 — А0 интерпретируется как адрес одной из 256 ячеек ОЗУ, а при IO/М= 1 — как адрес одного из внутренних узлов в соответствии с табл.15.
Таблица 15.
Напомним, что команды обращения к внешним устройствам IN и OUT являются двухбайтовыми, причем во втором байте В2 помещается адрес ВУ. Этот адрес выдается на линии AD7 — AD0, которые подключаются к БИС РУ55 и одновременно дублируются на линиях А15 — А8. Поэтому оказывается, что А8 — А0, А9 = А1,..., А15 = А7, т. е. содержимое линий AD2 — AD0 адресующих внутренние узлы РУ55, совпадает с содержимым линий A10 — А8. Таким образом, для формирования сигнала выбора кристалла CS=0 остаются линии А15 — All. Дешифрированием содержимого этих линий обеспечивается сигнал CS = 0 при обращении как к ячейкам ОЗУ, так и к остальным адресуемым узлам БИС.
Распределение адресных линий при обращении к памяти показано на рис. 13, а, а при обращении к внутренним узлам БИС — на рис. 13, б. Еще раз отметим, что линии А10 — А8 не должны использоваться при формировании сигнала CS = 0, поскольку это нарушило бы адресацию внутренних узлов БИС.
Рис.13. Формирование адреса при обращении к ячейкам памяти БИС РУ55 (а) и его портам (б).