Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Задание- Сигналы поступают в контроллер в виде 8разрядных параллельных кодов по 4 каналам с интервалом 1 мс.

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 25.11.2024

Задание: Сигналы поступают в контроллер в виде 8-разрядных параллельных кодов по 4 каналам с интервалом 1 мс. Осуществить поочередный прием информации в память емкостью 1К. После заполнения памяти найти среднее арифметическое и выдать полученное значение в виде 8-разрядного последовательного кода. При нулевом результате включить постоянно горящий индикатор. После завершения очередного цикла работы, автоматически переходить к началу нового.

При включении контроллера должна осуществляется аппаратно программная проверка памяти и устройств ввода вывода. При наличии неполадок в любом из этих устройств должен включатся мигающий индикатор с частотой 1 Гц.

Описание структурной схемы

В самом общем виде контроллер можно представить в виде структурной схемы, изображенной на рисунке 1. В ней приведены три основных элемента - центральный процессор, память и устройство ввода/вывода. Эти три блока входят в состав любого контроллера.

Центральный процессор - самый сложный элемент. Он представляет собой программно-управляемое устройство, обрабатывающее информацию и осуществляющее обмен ею между основными компонентами контроллера. В качестве центрального процессора в проектируемом контроллере используем большую интегральную схему (БИС) микропроцессора КР580ВМ80А.

Память контроллера состоит из постоянного запоминающего устройства (ПЗУ), допускающего только считывание хранимой информации, и оперативного запоминающего устройства (ОЗУ), работающего как в режиме чтения информации из ОЗУ, так и записи в него новых данных. Фактически память—это совокупность однотипных ячеек, в каждой из которых хранится закодированная информация. Единицей измерения ее объема является бит. Для хранения 1 бита достаточно иметь одноразрядную ячейку, в которую может быть записан 0 или 1. Разрядность ячейки памяти микроЭВМ определяется разрядностью шины данных микропроцессора (для микропроцессора КР580ВМ80А составляет 8 бит, или 1 байт).

Каждая ячейка памяти имеет свой номер- адрес. Число непосредственно адресуемых ячеек определяется разрядностью адреса, формируемого микропроцессором. В нашем случае это 16 разрядов, что позволяет иметь максимальный объем адресуемой памяти 65535 ячеек.

Обмен информацией с внешними устройствами осуществляется через порты ввода/вывода. К микропроцессору КР580ВМ80А можно подключить в общей сложности 256 таких устройств.

Объем используемой памяти, число устройств ввода/вывода определяют конфигурацию контроллера, его возможности и стоимость.

Шины - это совокупность проводов, объединенных между собой по функциональному признаку. Восемь проводов образуют шину данных, шестнадцать - шину адреса, пять - шину управления. Такая архитектура позволяет легко наращивать различные периферийные устройства, присоединяя их к проектируемому устройству.

В контроллере передаваемые сигналы представлены двумя уровнями напряжения - логическими «0» и «1». Сигнал, который вызывает выполнение некоторого действия, называют активным. Активное состояние может быть при логической единице либо при логическом нуле. В частности, на шине управления сигналы активны при уровне логического «0». Таких управляющих сигналов пять: RD — чтение памяти; WR — запись в память; IORD—чтение порта ввода/вывода; IOWR—запись в порт ввода/вывода; INTA—подтверждение прерывания. Шина управления используется лишь для вывода сигналов управления, то есть она однонаправленная. Основная причина введения активных сигналов низкого уровня (они помечены чертой сверху) состоит в простоте объединения их по ИЛИ. Кроме того, выходной каскад с таким сигналом большую часть времени находится в выключенном состоянии и потребляет меньше энергии от источника питания.

Как и шина управления, шина адреса лишь передает выходные сигналы микропроцессора. Отдельные линии шины адреса имеют обозначение от А0 до А15.

В отличие от шин управления и адреса, шина данных — двунаправленная. Передача данных здесь может производиться как от процессора, так и к процессору. Однако в каждый данный момент времени она осуществляется только в одном направлении. Отдельные линии шины данных обозначаются от D0 до D7. По шинам контроллера информация передается в двоичном коде.

Все внешние устройства контроллера могут быть подключены к микропроцессору только при выполнении двух условий: на них должен быть подан управляющий сигнал с шины управления и это устройство должно быть выбрано соответствующим адресом. Формирование сигналов выборки кода адреса осуществляют селекторы адреса САУВВ и САУП, дешифрируя сигналы шины адреса.

Для повышения нагрузочной способности использованы: буфер адресной шины и буфер данных.

Генератор тактовой частоты предназначен для формирования тактовых импульсов и строба состояния STB.

Программируемый таймер ПТ служит для генерации сигнала прерывания и частоты мигания индикатора.


Описание работы процессора

Микросхема КР580ВМ80А - функционально законченный однокристальный микропроцессор с фиксированной системой команд. Применяется в устройствах обработки данных и управления.

Микропроцессор имеет раздельные 16-разрядный канал адреса и 8-разрядный канал данных. Канал адреса обеспечивает прямую адресацию к внешней памяти объемом до 65 536 байт и 256 устройствам ввода и вывода.

Восьмиразрядное арифметико-логическое устройство микропроцессора выполняет арифметические и логические операции над двоичными числами, представленными в дополнительном коде, а также обработку двоично-десятичных упакованных чисел.

В состав блока регистров входят: 16-разрядный регистр адреса команды (IP), 16-разрядный регистр указателя стека (SP), 16-разрядный регистр временного хранения (WZ), 16-разрядная схема инкремента-декремента и шесть 8-разрядных регистров общего назначения (В, С, D, Е. Н, L), которые могут использоваться и как три 16-разрядных регистра (ВС, DE, HL).

Микропроцессор выполняет команды по машинным циклам. Число циклов, необходимое для выполнения команды, зависит от ее типа и может быть от одного до пяти. Машинные циклы выполняются по машинным тактам. Число тактов в цикле определяется кодом выполняемой команды и может быть от трех до пяти. Длительность такта равна периоду тактовой частоты и при частоте 2,0 МГц составляет 500 наносекунд.

В начале каждого машинного цикла микропроцессор вырабатывает сигнал синхронизации SYN, который в сочетании с другими сигналами может быть использован для организации различных режимов работы процессора.

На рисунке 2 показана диаграмма состояний типичного машинного цикла, показывающая последовательность перехода от такта к такту в машинном цикле и влияние внешних сигналов RDY, HLD и INT на его выполнение. После подачи на вывод SR сигнала высокого уровня микропроцессор устанавливается в исходное состояние.

В такте Т1 микропроцессор выдает на адресный канал адрес ячейки, в которой хранится команда программы, а через канал данных - информацию состояния. В такте Т2 анализируются состояния сигналов на входе RDY, «Подтверждение останова», и в зависимости от состояния этих сигналов микропроцессор переходит в состояние ожидания, останова или приступает к выполнению такта ТЗ. В такте ТЗ при наличии сигнала высокого уровня на входе RDV микропроцессор принимает информацию по каналу данных, анализирует состояние сигнала на входе HLD, и если этот сигнал высокого уровня, то после окончания такта ТЗ переходит в состояние захвата. В зависимости от кода выполняемой команды машинный цикл завершается после выполнения тактов ТЗ, Т4 или Т5.

В конце машинного цикла снова анализируется состояние сигнала на входе HLD. При низком уровне сигнала проверяется, окончено ли выполнение команды. Если команда не закончена, то микропроцессор выполняет следующий машинный цикл команды, начиная с такта Т1. В конце каждой команды микропроцессор анализирует состояние сигнала на входе INT. Если сигнал высокого уровня и прерывание ранее было разрешено командой Е1, то микропроцессор переходит к выполнению машинного цикла «Прерывание», начиная с такта Т1. В противном случае первый машинный цикл новой команды начинается с такта Т1.

Действия, выполняемые микропроцессором в конкретном машинном цикле, определяются 8-разрядной информацией состояния, которая выдается через канал данных в такте Т1 каждого машинного цикла. Эта информация может использоваться для выработки сигналов обращения к микросхемам памяти, устройствам ввода/вывода и для организации различных режимов работы микропроцессора.

В зависимости от сочетания сигналов состояния, выдаваемых в конкретном цикле, машинные циклы можно разделить на 10 типов:

1. Цикл М1 - прием первого байта команды в регистр команд.

2. Цикл чтения ЗУ (запоминающего устройства) по содержимому программного счетчика или содержимому одного из регистров ВС, DE,HL.

3. Цикл записи в ЗУ - запись в ЗУ по содержимому одного из регистров ВС,DE, HL.

4. Цикл чтения стека- чтение ЗУ по содержимому указателя стека.

5. Цикл записи в стек- запись в ЗУ по содержимому указателя стена.

6. Цикл ввода-ввода информации в регистр результата (аккумулятор) из внешнего устройства.

7. Цикл вывода-вывода информации из регистра результата во внешнее устройство.

8. Цикл прерывания - прием кода команды RST или CALL из контроллера прерываний.

9. Цикл останова.

10. Цикл прерывания при останове - прием кода команды RST или CALL при выводе микропроцессора из режима «Останов» по прерыванию.

При выполнении команд микропроцессор может переходить в одно из трех состояний: «ожидание», «захват» или «останов», длительность которых определяется внешними управляющими сигналами.

Сигнал высокого уровня на входе RDY обеспечивает автоматическое выполнение команд программы микропроцессором с частотой тактовых сигналов. Если на выводе RDY установлен сигнал низкого уровня, то микропроцессор переходит в режим «Ожидание" и формирует выходной сигнал WI высокого уровня.

Сигнал RDY может быть использован для согласования работы микропроцессора с работой медленно действующих устройств, если длительность их цикла обращения составляет более одного периода тактовой частоты, а также для организации пошагового (по циклам) выполнения команды или покомандного выполнения программы.

При подаче на вход HLD сигнала высокого уровня микропроцессор переходит в состояние “захват” и подтверждает переход в это состояние формированием сигнала высокого уровня на выходе HLDA. Буферные схемы канала адреса и данных микропроцессора переключаются в высокоомное (высокоимпедансное) состояние, а выходные управляющие сигналы - в состояние низкого уровня (за исключением сигналов TR и HLDA). Микропроцессор переходит в состояние "захват» в такте ТЗ, если выполняется цикл чтения и на входе RDY сигнал высокого уровня, и в такте, следующем за ТЗ, если выполняется цикл записи. Сигналы HLD и HLDA позволяют организовать режим прямого доступа к памяти для любого внешнего устройства, формирующего сигнал HLD.

При выполнении команды HLT микропроцессор переходит в состояние “останов” и переводит буферные схемы канала адреса и данных в высокоомное состояние. Из состояния «останов» микропроцессор выходит при наличии сигнала высокого уровня на одном из его входов:

на входе SR - микропроцессор начинает работать с такта Т1 цикла М1;

на входе HLD — микропроцессор переходит в состояние: “захват”, а после перехода сигнала HLD на низкий уровень возвращается в состояние «останов»;

на входе INT - микропроцессор переходит к выполнению цикла прерывания при останове с такта Т1, если команде HLT предшествовала команда EI «разрешение прерывания», иначе он остается в состоянии «останов».

Сигнал высокого уровня на выводе INT позволяет прерывать выполнение текущей программы и переводить микропроцессор на выполнение подпрограммы обслуживания устройства, выдавшего запрос прерывания (например, часов). При поступлении сигнала INT микропроцессор (после окончания текущей команды) переходит с такта Т1 к выполнению машинного цикла «Прерывание» в том случае, если прерывание было разрешено ранее командой EI. При выполнении цикла «Прерывание" в такте Т1 микропроцессор выдает по шине данных сигнал состояния «Подтверждение прерывания». По окончании подпрограммы прерывания происходит возврат к прерванной программе.

Сигнал высокого уровня на входе SR (длительность которого должна быть не менее трех периодов тактовой частоты) устанавливает микропроцессор в исходное состояние: триггеры разрешения прерывания и захвата, регистры команд, признаков и адреса команды устанавливаются в нулевое состояние. После окончания действия сигнала SR микропроцессор производит первое обращение за чтением команды к ячейке памяти по адресу ООООН.

Система команд микропроцессора состоит из 78 базовых команд, которые можно разделить на пять групп:

команды передачи данных - используются для передачи данных из регистра в регистр, из регистра в память;

арифметические команды- используются для сложения, вычитания, инкремента или декремента содержимого регистров или ячейки памяти;

логические команды - И, ИЛИ, сравнение, сдвиги;

команды переходов - используются для условных или безусловных переходов, вызова подпрограмм и возврата из них;

команды управления, ввода/вывода и работы со стеком -  используются для управления регистром признаков, ввода и вывода информации.

В микропроцессоре КР580ВМ80А принят формат информационного слова, представляющего собой 8-разрядное двоичное слово (байт). Формат информационного слова (данных):

D7 D6 D5 D4 D3 D2 Dl DO,

где D7—старший разряд слова, а DO—младший. Отрицательные числа хранятся в памяти в дополнительном коде.

Формат команды зависит от типа операции -  может быть одно, двух- и трехбайтовым. Байты двух- и трехбайтовых команд должны храниться в ячейках памяти, следующим одна за другой. Адрес первого байта всегда является адресом кода операции.

Наиболее общие закономерности использования команд процессора:

1. Арифметические и логические операции разрешены только между аккумулятором и байтом данных или между аккумулятором и любым регистром.

2. Аккумулятор и регистровая пара HL являются единственными регистрами, которые могут быть непосредственно загружены в память.

3. Аккумулятор является единственным регистром, который может быть инвертирован, сдвинут, косвенно загружен в память с использованием регистровых пар ВС и DE или использован в командах ввода/вывода (IN, OUT).

4. Регистровая пара HL является единственной, содержимое которой может быть передано в счетчик команд (команда PCHL) или указатель стека (команда SPHL).

5. Регистровая пара НL может использоваться как аккумулятор двойной длины при сложении 16-разрядных чисел (команда DAD)

6. Содержимое регистровых пар HL и DE можно менять местами (команда HCHG).

7. Отдельные команды могут применяться для специальных функций. Команды XRAA или  CMP A обнуляют аккумулятор. Команды ANA или ORA А очищают флаг переноса, а команда ADD A выполняет логический сдвиг аккумулятора влево.

8. Команды увеличения (уменьшения) на 1 регистров (INR, DCR) действуют на все флаги, за исключением флага переноса. Команды увеличений (уменьшения) на 1 регистровых пар (INX, DCX) не оказывают влияния на флаги.

9. В стек или из стека могут быть переданы только регистровые пары. Одной из таких регистровых пар является слово состояния микропроцессора, которое содержит аккумулятор (старший байт) и флаги (младший байт). Команды CALL и R ЕТ передают адрес в стек и обратно.

10. При записи 16-разрядных адресов младший байт записывается первым.

Операнды команд могут храниться в программно доступных регистрах микропроцессора или памяти. Для указания операнда в регистре используются регистровая и регистровая неявная адресации, для указания операнда в памяти - непосредственная, прямая, косвенная регистровая и стековая адресации.

Регистр признаков микропроцессора используется для хранения пяти битов признаков, которые вырабатываются в результате выполнения некоторых операций:

S- бит знака; равен 1, если старший значащий разряд результата операции равен 1 (то есть результат операции - отрицательное число);

Z- бит нуля; равен 1, если результат операции равен нулю;

АС- бит вспомогательного переноса; равен 1, если при выполнении операции был перенос из третьего разряда сумматора в четвертый;

С -  бит переноса; равен 1, если при выполнении операции был перенос из седьмого разряда сумматора или заем в седьмой разряд сумматора;

Р - бит четности; равен 1, если число единиц результата четное.

Распределение разрядов в регистре признаков следующее:

D7    D6    D5    D4    D3    D2    Dl     DO

S       Z       0     АС    0      Р      1       С

Адреса портов и распределение памяти

                        таблица 1

номер

Адрес

номер

адрес

номер

адрес

номер

адрес

DD20

DD21

Таймер

Доп. порт

0FFFh

1

00h

4

04h

C0

08h

6

0Ch

ОЗУ

2

01h

5

05h

C1

09h

2Кб

3

02h

6

06h

C2

0Ah

0800h

РУС

03h

РУС

07h

РУС

0Bh

07FFh

ПЗУ

2Кб

0000h

Описание принципиальной схемы

Блок центрального процессора выполнен на микросхемах DD1, DD2, DD3, DD4, DD5. Микросхема DD1 - микропроцессор КР580ВМ80А. Микросхема DD2 КР580ГФ24 предназначена для формирования двух последовательностей тактовых импульсов с требуемыми временными и амплитудными параметрами. Она содержит задающий генератор, стабилизированный кварцевым резонатором Z0 с частотой 16МГц.

Адресная шина подключается ко многим устройствам. Выходы же микропроцессора выдерживают лишь нагрузку одного входа ТТЛ микросхем. Поэтому для повышения нагрузочной способности к шине адреса подключены двунаправленные 8-разрядные шинные формирователи DD4, DD5 КР580ВА86. Так как шина адреса является однонаправленной, то на входах Т микросхем DD4, DD5 присутствует лог. 1 (вывод).

Увеличение нагрузочной способности двунаправленной шины данных выполнено с помощью микросхемы системного контроллера DD3  КР580ВК28. Она формирует управляющие сигналы по сигналам состояния процессора при обращении к ЗУ: RD и WR, при обращении к УВВ: IORD и IOWR, INTA, а также обеспечивает прием и передачу 8-разрядной информации между процессором и шиной данных. Вывод INTA микросхемы подсоединен к напряжению +12В через резистор 1КОм, что бы во время действия сигнала RC буферная схема данных формировала код команды RST7 и передавала на канал данных микропроцессора. Таким образом, микросхема обеспечивает единственный вектор прерываний с номером 7 без дополнительных компонентов.

Микросхема DD6  КР573РФ5 является ПЗУ контроллера, и предназначена для хранения управляющей программы. ПЗУ буферизировано микросхемой DD7 КР580ВА86. Так как из ПЗУ возможно только чтение, то на входе Т микросхемы DD7 присутствует лог. 1.

Микросхема DD8  КР537РУ10 является ОЗУ контроллера, и предназначена для хранения принимаемой и служебной информации. ОЗУ буферизировано микросхемой DD9 КР580ВА86. Так как из ОЗУ возможно не только чтение, но и запись, то на вход Т микросхемы DD9 заведен сигнал WR от системного контроллера. Таким образом, когда будет происходить чтение из ОЗУ сигнал WR будет равен лог.1 и DD9 будет настроена на вывод (от ОЗУ к ШД), а когда запись, то сигнал WR будет равен лог.0 и DD9 будет настроена на ввод (от ШД к ОЗУ).

На микросхемах DD18.1, DD12.1, DD11.1 совместно с микросхемами DD17.1, DD17.2, DD17.3, DD17.4, DD18.2, которые запрещают доступ к памяти при наличии адреса выше 0FFFh, выполнен Селектор Адреса Устройств Памяти. Он выполняет следующие функции:

1. При активном сигнале RD (лог. 0) и адреса в диапазоне 0000h-07FFh разрешает чтение из ПЗУ и запрещает доступ к ОЗУ.

САУП в этом режиме работает следующим образом. При появлении на адресной шине адреса в диапазоне 0000h-07FFh, разряды  А11, А12, А13, А14, А15 шины адреса равны лог. 0. Следовательно, на входе DD18.1 (ИЛИ) присутствуют два лог. 0, устанавливающие выход DD18.1 в лог. 0, который в свою очередь приходит на один из входов DD18.2 (ИЛИ). На втором входе DD18.2 так же присутствует лог. 0, так как лог. 0 по входам DD17.1, DD17.2 дают на их выходах так же лог.0. Соответственно и на выходе DD17.3 тоже лог. 0. Лог. 0 на выходе DD18.2 поступает на вывод CS микросхем  DD6 (ПЗУ) и  DD7 (буфер) выводя их высокоомного состояния, что позволяет считывать с них информацию. В это же время сигнал WR равен лог. 1, которая по входу DD12.1 (исключающее ИЛИ) на выходе ее дает лог. 1. Эта лог. 1 поступает на вход DD11.1 (И-НЕ). На другом входе присутствует лог. 0 с  А11 адресной шины. Следовательно на выходе DD11.1 (И-НЕ) лог. 1, которая подается на DD17.4. Одной лог. 1 на входе DD17.4 достаточно что бы на выходе была тоже лог. 1, которая, попадая на выводы CS микросхем DD8 (ОЗУ) и DD9 (буфер), перевела их в третье (высокоомное) состояние не позволяющее считывать с них информацию.

2. При активном сигнале RD (лог. 0) и адреса в диапазоне 0800h-0FFFh разрешает чтение из ОЗУ и запрещает доступ к ПЗУ.

САУП в этом режиме работает следующим образом. При появлении на адресной шине адреса в диапазоне 0800h-0FFFh, разряды   А12, А13, А14, А15 шины адреса равны лог. 0. Следовательно на одном входе DD18.1 (ИЛИ) присутствует лог. 1 с А11 шины адреса и лог. 0 сигнала RD, устанавливающие выход DD18.1 в лог. 1, которая в свою очередь приходит на один из входов DD18.2 (ИЛИ). На втором входе DD18.2 присутствует лог. 0, так как лог. 0 по входам DD17.1, DD17.2 дают на их выходах так же лог.0. Соответственно и на выходе DD17.3 тоже лог. 0. Одной лог. 1 на входе DD18.2 достаточно, что бы на выходе тоже была лог. 1, которая поступает на вывод CS микросхем  DD6 (ПЗУ) и  DD7 (буфер) вводя их в высокоомное состояние, что не позволяет считывать с них информацию. В это же время сигнал WR равен лог. 1, которая по входу DD12.1 (исключающее ИЛИ) на выходе ее дает лог. 1. Эта лог. 1 поступает на вход DD11.1 (И-НЕ). На другом входе то же присутствует лог. 1 с  А11 адресной шины. Следовательно, на выходе DD11.1 (И-НЕ) лог. 0, который подается на DD17.4. Два лог. 0 на входе DD17.4 дают на ее выходе была тоже лог. 0, который, попадая на выводы CS микросхем DD8 (ОЗУ) и DD9 (буфер) вывел их из высокоомного состояния, разрешая считать информацию. Выбор направления передачи данных описан выше.

3. При активном сигнале WR и адреса в диапазоне 0800h-0FFFh разрешает запись в ОЗУ и запрещает доступ к ПЗУ.

Работа САУП в этом режиме аналогична предыдущей за исключением направления передачи данных, которая поменяет свое направление за счет того, что на вывод выбора направления передачи поступит лог. 0 сигнала WR.

4. При активном сигнале WR или RD и адреса в диапазоне выше 0FFFh запрещает доступ и к ПЗУ и к ОЗУ.

САУП в этом режиме работает следующим образом. При появлении на адресной шине адреса в диапазоне выше 0FFFh, один из разрядов А12, А13, А14, А15 шины адреса всегда будет равен лог. 1. Одной лог.1 по входам DD17.1, DD17.2 дают на их выходах так же лог.1. Соответственно и на выходе DD17.3 тоже лог. 1. Одной лог. 1 на входе DD18.2 и DD17.4 достаточно, что бы на выходе тоже была лог. 1, которая поступает на вывод CS микросхем  DD6 (ПЗУ), DD7 (буфер), DD8 (ОЗУ) и DD9 (буфер)  вводя их в высокоомное состояние, что не позволяет считывать с них информацию.

На микросхеме DD14 K555ИД7 совместно с микросхемами DD10.1 и DD12.2, которые запрещают доступ к УВВ при наличии адреса выше 1Fh, выполнен Селектор Адреса Устройств Ввода Вывода. Адресация происходит согласно таблицы 1.

Работа САУВВ. При считывании с любого порта имеющего адрес ниже 1FH разряды А5, А6, А7 шины адреса равны лог. 0 следовательно лог. 0 на входах DD10.1 дадут на выходе лог. 0, который совместно с лог. 0 разряда А7 шины адреса и лог. 1 с выхода DD12.2 (исключающее ИЛИ), установленной одним из сигналов IORD или IOWR, выведут DD14 из третьего состояния, что в свою очередь позволит подключать один из существующих портов подачей лог. 0 с одного из выводов дешифратора (в зависимости от адреса активным будет только один вывод) на вывод CS микросхем DD15, DD20, DD21 или на один из выводов DD10.2, DD10.4 образующих порт №6. Если адрес будет выше 1FH, то не активность DD14 не позволит обращаться к портам ввода вывода.

Микросхема DD15 КР580ВИ53 представляет собой трехканальное программируемое устройство (таймер). Канал 1 совместно с микросхемой DD11.4, которая является инвертором сигнала, используется для генерации сигнала прерывания с интервалом 1 мс. Работает в режиме одиночного аппаратного стробирующего сигнала и запускается при наличии управляющего сигнала на выводе СЕ0 DD15, который формируется элементами DD13.3 и DD13.2 (И-НЕ с открытым коллектором) при записи в порт №6 числа, устанавливающего вывод D2 шины данных в состояние лог.1. Например 04h.

Каналы 2 и 3 используются для генерации частоты 1 Гц, используемой при выдаче мигающего сигнала светодиода VD2, причем выход второго канала OUT1 подается на счетный вход третьего канала С2 (получается делитель частоты). Каналы 2 и 3 работают в режиме генератора меандра. Поэтому для зацикливания счета на выводах СЕ1 и СЕ2 этих каналов присутствует лог.1.

Частота 1 Гц получается следующим образом.  В канал 2 DD15 записано число 1000 (03E0h). На выходе этого канала получим прямоугольный сигнал с периодом 500нс (длительность периода процессора)*1000*2(режим генератора меандра)= 1мс (1КГц). Эта частота подается на счетный вход канала 3, в который записано число 500 (01F4h), тогда на выходе OUT2 третьего канала получим прямоугольный сигнал с периодом 1мс*500*2=1с (1 Гц).

На микросхемах DD16, DD10.3 и DD13.1 собран и подключен к порту №6 блок индикатора, который при записи в порт определенного числа выполняет следующие функции:

1. При записи числа 00h VD2 не горит

2. При записи числа 02h VD2 мигает с заданной частотой

3. При записи числа 03h VD2 горит постоянно

Происходит это следующим образом.

При записи в порт №6 на входах DD10.2 присутствуют 2 лог. 0 (Y3 DD14 и IOWR  DD3), которые на выходе DD10.2 дают лог. 0, инвертируемый в лог.1 DD11.2 и подаваемый на вывод C (разрешение записи) триггеров DD16.1 и DD16.2. В это же время по шине данных (DB0, DB1) приходит информация на входы D триггеров, устанавливая их выходы в состояние лог 1. или лог. 0. Если в порт №6 записали 00h, то у триггера DD16.2  по выходу установится лог.0, который по входу DD13.1 (И-НЕ с открытым коллектором) даст на выходе лог.1 не зависимо от состояния второго входа. Следовательно, VD2 гореть не будет.

При записи в порт №6 числа 02h, после разрешения записи в триггера, описанной выше, у триггера DD16.2  по выходу установится лог.1, поступающая на вход DD13.1 (И-НЕ с открытым коллектором). Триггер же DD16.1 по выходу будет иметь лог. 0, который в сочетании с выходом OUT2  таймера DD15  дадут на выходе DD10.3 прямоугольный сигнал с указанной в задании частой. Тогда, имея на одном  входе DD13.1 лог.1 а на другом прямоугольный сигал на выходе получим сигнал той же частоты, что в свою очередь приведет к миганию VD2.

При записи в порт №6 числа 03h, после разрешения записи в триггера, описанной выше, у триггера DD16.2  по выходу установится лог.1, поступающая на вход DD13.1 (И-НЕ с открытым коллектором). Триггер же DD16.1 по выходу будет иметь то же лог. 1. Следовательно, на входе DD10.3 всегда будет присутствовать лог.1, которая игнорируя сигнал с выхода OUT2  таймера DD15  даст на выходе DD10.3 лог. 1. Тогда, имея на входах DD13.1 лог.1, на выходе получим лог. 0, что в свою очередь приведет к постоянному свечению VD2.

Микросхема DD12.3 при общем сбросе устанавливает DD16 в исходное состояние (VD2 не горит).

Устройства ввода вывода представлены двумя микросхемами DD20, DD21 КР580ВВ55А являющимися программируемыми устройствами ввода вывода параллельной информации. В данном случае все работают в режиме 0, обеспечивая возможность синхронной программно управляемой передачи данных через два независимых 8-разрядных канала ВА и ВВ и два 4-разрядных канала ВС. Младший бит  порта 5 (ВВ0) использован для вывода последовательной информации (программным способом). Адреса портов приведены в таблице 1.

Разъем Х1 подключается к контроллеру для проверки УВВ и соединяет между собой контакты 1 и 2, порты: 1 и 4; 2 и 5; 3 и 6. Замыкание контактов 1 и 2 является признаком того, что необходимо проверить устройства ввода вывода при включении или перезапуске. Происходит это следующим образом. При включении, после теста ОЗУ, контроллер считывает информацию с порта №6  и если Х1 не подключен, то на выходе DD19.1 и линии D3 шины данных будет лог.0, что будет являться признаком игнорировать тест УВВ. Если же Х1 подключен, то при считывании информации с порта №6  +5В через контакты 1и2 дадут лог.1 на выходе DD19.1. и линии D3 шины данных, что будет являться признаком проводить тест УВВ. Во всех остальных случаях (кроме чтения с порта 6) выход DD19.1 будет находиться в высокоомном (третьем) состоянии, что не будет влиять на информацию, передаваемую по шине данных.

Список используемой литературы

1. Микропроцессоры и микропроцессорные комплекты интегральных микросхем: Справочник. В 2 т.-М.: Радио и связь, 1988. - Т.1.-368 с.

2. Логические ИС КР1533, КР1554. Справочник в 2 частях.

Сбоку справо!!!

Адрес

Код

Метка

Текст

Пояснения

1E 00

MVI  E,00

Подпрограмма OIIO

26 04

MVI  H,04

Число пар микросхем +1

3E 03

MVI  A,03

Адрес РУС в нечетной микросхеме текущей пары

32 01 08

MOI

STA  0801

Записать адрес РУС в память по адресу 0801Н

57

MOV  D,A

3A 07 08

LDA  0807

Считать управляющее слово для РУС нечетной микросхемы

CD 00 08

CALL 0800

Записать управляющее слово в РУС нечетной микросхемы

7A

MOV  A,D

C6 04

ADI   04

Вычислить адрес РУС четной микросхемы

32 01 08

STA  0801

Записать адрес РУС в память по адресу 0801Н

3A 08 08

LDA  0808

Считать управляющее слово для РУС четной микросхемы

CD 00 08

CALL 0800

Записать управляющее слово в РУС четной микросхемы

67

MOV  H,A

C8

RZ

Если все микросхемы запрограммированы, то выйти

3E 08

MVI  A,08

Вычислить адрес РУС нечетной микросхемы след. пары

83

ADD E

5F

MOV E,A

 

C3 MOI

 

JMP  MOI

 

Подпрограмма IN

26 04

MVI   H,04

Счетчик портов в микросхеме +1

2E 04

MVI   L,04

Счетчик пар микросхем +1

3A 06 08

LDA  0806

Считать контрольное слово из памяти

4F

MOV  C,A

AF

XRA   A

Вычислить адрес первого порта

83

ADD  E

 

 

 

 

7A

MI2

MOV  A,D

32 04 08

STA   0804

Записать адрес порта в память

CA MI1

JZ     MI1

3E 03

MVI   A,03

Если не совпадает, то включить мигающий индикатор

D3 1C

OUT  1C

76

HLT

14

MI1

INR    D

Вычислить адрес следующего порта в этой микросхеме

57

MOV  D,A

25

DCR  H

Уменишить счетчик портов а микросхеме на 1

67

MOV  H,A

C2 MI2

JNZ   MI2

Если не все порты перебраны, то продолжить считывание

2D

DCR  L

Если все, то уменьшить счетчик пар на 1

C8

RZ

Если все пары перебраны, то выйти

6F

MOV  L,A

3E 08

MVI   A,08

Вычислить адрес следующей пары

83

ADD  E

5F

MOV  E,A

 

C3 MI3

 

JMP   MI3

 

Подпрограмма OUT

26 04

MVI   H,04

Счетчик портов в микросхеме +1

2E 04

MVI   L,04

Счетчик пар микросхем +1

3A 06 08

LDA  0806

Считать контрольное слово из памяти

4F

MOV  C,A

AF

XRA   A

Вычислить адрес первого порта

83

ADD  E

57

MO2

MOV  D,A

7A

MO1

MOV  A,D

32 01 08

STA   0801

Записать адрес порта в память

CD 00 08

CALL 0800

Вывести в порт контрольное слово

14

INR    D

Вычислить адрес следующего порта в этой микросхеме

57

MOV  D,A

25

DCR  H

Уменишить счетчик портов а микросхеме на 1

67

MOV  H,A

C2 MO1

JNZ   MO1

Если не все порты перебраны, то продолжить вывод

2D

DCR  L

Если все, то уменьшить счетчик пар на 1

C8

RZ

Если все пары перебраны, то выйти

6F

MOV  L,A

3E 08

MVI   A,08

Вычислить адрес следующей пары

83

ADD  E

5F

MOV  E,A

C3 MO2

JMP   MO2

Программа управляющая работой  контроллера

Адрес

Код

Метка

Текст

Пояснения

0000

FB

 

DI

Запретить прерывания

0001

3E 3A

 

MVI  A,3A

Программирование таймера

0003

D3 0B

 

OUT  0B

Установка канала (0) в режим (5)

0005

3E 7E

 

MVI  A,76

 

0007

D3 0B

 

OUT  0B

Установка канала (1) в режим (3)

0009

3E BE

 

MVI  A,BE

 

000B

D3 0B

 

OUT  0B

Установка канала (2) в режим (3)

000D

3E D0

 

MVI   A,D0

Загрузить канал (0) таймера на время 1 мс числом 2000 (07D0H)

000F

D3 08

 

OUT  08

 

0011

3E 07

 

MVI   A,07

 

0013

D3 08

 

OUT  08

 

0015

3E D0

 

MVI  A,E8

Загрузка канала 1  числом 1000  (03E8H)

0017

D3 09

 

OUT 09

 

0019

E3 07

 

MVI  A,03

 

001B

D3 09

 

OUT 09

 

001D

3E F4

 

MVI  A,F4

Загрузка канала 2  числом 500  (01F4H)

001F

D3 0A

 

OUT 0A

 

0021

E3 01

 

MVI  A,01

 

0023

D3 0A

 

OUT 0A

 

0025

21 00 08

 

LXI   H,0800

Тест ОЗУ

0028

36 55

M3

MVI  M,55

Записать в ячейку памяти контрольное число (55Н)

002A

3E 55

 

MVI  A,55

 

002C

AE

 

XRA M

Проверка записи в ячейку памяти контрольного числа (55Н)

002D

CA M1

 

JZ    M1

 

0030

3E 02

 

MVI  A,02

При не правильной записи включить мигающий индикатор

0032

D3 0C

 

OUT 0C

 

0034

C3 M4

 

JMP M4

Обход адреса прерывания (0038Н)

0037

00

 

NOP

 

0038

C3 INT

 

JMP INT

Переход на программу обработки прерывания

003A

76

M4

HLT

Останов процессора

003B

36 AA

M1

MVI  M,AA

Записать в ячейку памяти контрольное число (AAН)

 

3E AA

 

MVI  A,AA

 

 

AE

 

XRA M

Проверка записи в ячейку памяти контрольного числа (AAН)

 

CA M2

 

JZ    M2

 

 

3E 02

 

MVI  A,02

При не правильной записи включить мигающий индикатор

 

D3 0C

 

OUT 0C

 

 

76

 

HLT

Останов процессора

 

23

M2

INX  H

Переход к следующему адресу

 

3E 10

 

MVI  A,10

Проверить вся ли память протестирована

 

AC

 

XRA H

 

 

C2 M3

 

JNZ    M3

 

 

3E 00

 

MVI  A,00

Инициализация буфера индикатора

 

32 09 08

 

STA  0809

Сохранить в ОЗУ

 

31 FF 0F

 

LXI   SP,0FFF

Установка стека

 

DB 0C

 

IN    0C

Тест УВВ

 

06 08

 

MVI  B,08

Проверить подключен ли тестовый разъем (Х1)

 

A0

 

ANA B

 

 

CA PRG

 

JZ    PRG

Если нет, то перейти к выполнению основной программы

 

21 00 08

 

LXI  H,0800

Записать в память подпрограмму вывода в порт (с адреса 0800Н)

 

36 D3

 

MVI  M,D3

Будет записана команда OUT

 

23

 

INX  H

Место под номер порта

 

23

 

INX  H

 

 

36 C9

 

MVI  M,C9

Будет записана команда RET

 

23

 

INX  H

Записать в память подпрограмму чтения из порта (с адреса 0803Н)

 

36 DB

 

MVI  M,DB

Будет записана команда    IN

 

23

 

INX  H

Место под номер порта

 

23

 

INX  H

 

 

36 C9

 

MVI  M,C9

Будет записана команда RET

 

3E 80

 

MVI  A,80

Записать по адресу 0807Н управляющее слово 80Н (все порты на вывод)

 

32 07 08

 

STA  0807

 

 

3E 9B

 

MVI  A,9B

Записать по адресу 0808Н управляющее слово 9BН (все порты на ввод)

 

32 08 08

 

STA  0808

 

 

CD OIIO

 

CALL OIIO

Установить нечетные микросхемы на вывод, а четные на ввод

 

3E 55

 

MVI  A,55

Записать по адресу 0806Н тестовое слово 55Н

 

32 08 06

 

STA  0806

 

 

1E 00

 

MVI  E,00

Указатель на нечетные микросхемы пар

 

CD OUT

 

CALL OUT

Вывести во все порты нечетных микросхем число 55Н

 

1E 04

 

MVI  E,04

Указатель на четные микросхемы пар

 

CD IN

 

CALL IN

Прочитать со всех портов четных микросхем число 55Н

 

3E AA

 

MVI  A,AA

Записать по адресу 0806Н тестовое слово AAН

 

32 08 06

 

STA  0806

 

 

1E 00

 

MVI  E,00

Указатель на нечетные микросхемы пар

 

CD OUT

 

CALL OUT

Вывести во все порты нечетных микросхем число AAН

 

1E 04

 

MVI  E,04

Указатель на четные микросхемы пар

 

CD IN

 

CALL IN

Прочитать со всех портов четных микросхем число 55Н

 

3E 9B

 

MVI  A,9B

Записать по адресу 0807Н управляющее слово 9BН (все порты на вывод)

 

32 08 07

 

STA  0807

 

 

3E 80

 

MVI  A,80

Записать по адресу 0808Н управляющее слово 80Н (все порты на ввод)

 

32 08 08

 

STA  0808

 

 

CD OIIO

 

CALL OIIO

Установить четные микросхемы на вывод, а нечетные на ввод

 

1E 04

 

MVI  E,04

Указатель на четные микросхемы пар

 

CD OUT

 

CALL OUT

Вывести во все порты четных микросхем число AAН

 

1E 00

 

MVI  E,00

Указатель на нечетные микросхемы пар

 

CD IN

 

CALL IN

Прочитать со всех портов нечетных микросхем число AAН

 

3E 55

 

MVI  A,55

Записать по адресу 0806Н тестовое слово 55Н

 

32 08 06

 

STA  0806

 

 

1E 04

 

MVI  E,04

Указатель на четные микросхемы пар

 

CD OUT

 

CALL OUT

Вывести во все порты четных микросхем число 55Н

 

1E 00

 

MVI  E,00

Указатель на нечетные микросхемы пар

 

CD IN

 

CALL IN

Прочитать со всех портов нечетных микросхем число 55Н

 

3E 9B

PRG

MVI  A,9B

Записать по адресу 0807Н управляющее слово 80Н (все порты на ввод)

 

32 08 07

 

STA  0807

 

 

3E 80

 

MVI  A,80

Записать по адресу 0808Н управляющее слово 80Н (все порты на ввод)

 

32 08 08

 

STA  0808

 

 

CD OIIO

 

CALL OIIO

Установить четные и нечетные микросхемы на ввод

 

3E 99

 

MVI  A,99

Настроить порт 5 на вывод       

 

D3 07

 

OUT  07

 

 

21 00 09

ST

LXI   H,0900

Адрес начала блока принимаемых данных

 

FB

 

EI

Разрешить прерывания

 

3A 09 08

INT

LDA  0809

Запустить таймер, не изменив состояние светодиода

 

C6 04

 

ADI   04

 

 

D3 0C

 

OUT  0C

 

 

DB 00

 

IN     00

Считать информацию с 1 порта

 

77

 

MOV  M,A

Записать в память

 

23

 

INX    H

Увеличить счетчик адреса на 1

 

3E 0D

 

MVI   A,0D

Проверить на заполнение 1К памяти

 

AC

 

XRA  H

 

 

CA P2

 

JZ     P2

Если заполнен, то перейти к суммированию

 

DB 01

 

IN     01

Считать информацию со 2 порта

 

77

 

MOV  M,A

Записать в память

 

23

 

INX    H

Увеличить счетчик адреса на 1

 

3E 0D

 

MVI   A,0D

Проверить на заполнение 1К памяти

 

AC

 

XRA  H

 

 

CA P2

 

JZ     P2

Если заполнен, то перейти к суммированию

 

DB 02

 

IN     02

Считать информацию с 3 порта

 

77

 

MOV  M,A

Записать в память

 

23

 

INX    H

Увеличить счетчик адреса на 1

 

3E 0D

 

MVI   A,0D

Проверить на заполнение 1К памяти

 

AC

 

XRA  H

 

 

CA P2

 

JZ     P2

Если заполнен, то перейти к суммированию

 

DB 04

 

IN     04

Считать информацию с 4 порта

 

77

 

MOV  M,A

Записать в память

 

23

 

INX    H

Увеличить счетчик адреса на 1

 

3E 0D

 

MVI   A,0D

Проверить на заполнение 1К памяти

 

AC

 

XRA  H

 

 

CA P2

 

JZ     P2

Если заполнен, то перейти к суммированию

 

76

 

HLT

Цикл опроса закончен до следующего прерывания

 

F3

P2

DI

Запретить прерывания                              (Суммирование 1К)

 

AF

 

XRA  A

Обнулить ячейки памяти отведенные под сумму   

 

32 0A 08

 

STA  080A

 

 

32 0B 08

 

STA  080B

 

 

32 0C 08

 

STA  080C

 

 

21 00 09

 

LXI   H,0900

Адрес начала блока суммируемых данных

 

11 0C 08

 

LXI   D,080C

Адрес младшего байта суммы

 

70

S3

MOV  B,M

К младшему байту суммы прибавить число из текущей ячейки памяти

 

1A

 

LDAX D

 

 

80

 

ADD   B

 

 

12

 

STAX D

Сохранить новое значение младшего байта суммы

 

D2 S1

 

JNC   S1

 

 

1B

S2

DCX  D

Если был перенос, перейти к  следующему байту суммы

 

1A

 

LDAX D

 

 

CE 00

 

ACI   00

Увеличить его на 1

 

12

 

STAX D

Сохранить

 

DA S2

 

JC     S2

Если был перенос, повторить еще раз

 

11 0C 08

 

LXI   D,080C

Восстановить адрес младшего байта суммы

 

23

S1

INX    H

Перейти к следующему байту памяти

 

3E 0D

 

MVI   A,OD

Проверить вся ли память просуммирована

 

AC

 

XRA   H

 

 

C2 S3

 

JNZ    S3

Если не вся, то продолжить суммирование

 

AF

 

XRA   A

Нахождение среднего арифметического блока памяти 1К

 

21 0D 08

 

LXI    H,080D

Адрес частного

 

11 0B 08

 

LXI    D,080B

Адрес второго байта суммы

 

77

 

MOV  M,A

Обнулить частное

 

1A

D3

LDAX D

Загрузить второй байт суммы в аккумулятор

 

D6 04

 

SUI    04

Вычесть делитель

 

12

 

STAX D

Сохранить новое значение второго байта суммы

 

D2 D1

 

JNC   D1

 

 

1B

 

DCX  D

Если при вычитании был перенос, то перейти к первому байту суммы

 

1A

 

LDAX D

Загрузить первый байт суммы в аккумулятор

 

4F

 

MOV  C,A

Запомнить первый байт суммы в регистре С

 

EE 00

 

XRI    00

Проверить первый байт суммы на ноль

 

CA D2

 

JZ  D2

Если ноль, то деление окончено

 

34

 

INR    M

Увеличить частное на 1

 

 

 

MOV  A,C

Восстановить первый байт суммы

 

3D

 

DCR   A

Уменьшить его на 1

 

12

 

STAX D

Сохранить новое значение первого байта суммы

 

13

 

INX    D

Восстановить адрес второго байта суммы

 

C3 D3

 

JMP   D3

Продолжить деление

 

34

D1

INR    M

Увеличить частное на 1

 

C3 D3

 

JMP   D3

Продолжить деление

 

AF

D2

XRA   A

Проверить равно ли частное нулю

 

A6

 

ANA   M

 

 

C2 E1

 

JNZ    E1

 

 

3E 03

 

MVI    A,03

Если равно, то включить светодиод (горит постоянно)

 

D3 0C

 

OUT   0C

 

 

32 09 08

 

STA    0809

Сохранить состояние светодиода

 

CD OUTSE

 

CALL OUTSE

Вывести значение частного в порт 5

 

D3 16

 

OUT   16

 

 

C3 ST

 

JMP   ST

Перейти на заполнение следующего килобайта памяти

 

3E 00

E1

MVI    A,00

Если не равно, то выключить светодиод

 

D3 0C

 

OUT   0C

 

 

32 09 08

 

STA    0809

Сохранить состояние светодиода

 

CD OUTSE

 

CALL OUTSE

Вывести значение частного в порт 5

 

C3 ST

 

JMP   ST

Перейти на заполнение следующего килобайта памяти

 

1E 00

OIIO

MVI  E,00

Подпрограмма OIIO

 

26 01

 

MVI  H,01

Число пар микросхем

 

3E 03

 

MVI  A,03

Адрес РУС в нечетной микросхеме текущей пары

 

32 01 08

MOI

STA  0801

Записать адрес РУС в память по адресу 0801Н

 

57

 

MOV  D,A

 

 

3A 07 08

 

LDA  0807

Считать управляющее слово для РУС нечетной микросхемы

 

CD 00 08

 

CALL 0800

Записать управляющее слово в РУС нечетной микросхемы

 

7A

 

MOV  A,D

 

 

C6 04

 

ADI   04

Вычислить адрес РУС четной микросхемы

 

32 01 08

 

STA  0801

Записать адрес РУС в память по адресу 0801Н

 

3A 08 08

 

LDA  0808

Считать управляющее слово для РУС четной микросхемы

 

CD 00 08

 

CALL 0800

Записать управляющее слово в РУС четной микросхемы

 

25

 

DCR  H

Уменишить счетчик пар на 1

 

C8

 

RZ

Если все микросхемы запрограммированы, то выйти

 

3E 08

 

MVI  A,08

Вычислить адрес РУС нечетной микросхемы след. пары

 

83

 

ADD E

 

 

5F

 

MOV E,A

 

 

C3 MOI

 

JMP  MOI

 

 

26 03

IN

MVI   H,03

Счетчик портов в микросхеме                  (Подпрограмма IN)

 

2E 01

 

MVI   L,01

Счетчик пар микросхем

 

3A 06 08

 

LDA  0806

Считать контрольное слово из памяти

 

4F

 

MOV  C,A

Запомнить контрольное слово

 

AF

 

XRA   A

Вычислить адрес первого порта

 

83

 

ADD  E

 

 

57

MI3

MOV  D,A

 

 

7A

MI2

MOV  A,D

 

 

32 04 08

 

STA   0804

Записать адрес порта в память

 

CD 03 08

 

CALL 0803

Считать из порта контрольное слово

 

A9

 

XRA  C

Сравнить с образцом

 

CA MI1

 

JZ     MI1

 

 

3E 02

 

MVI   A,02

Если не совпадает, то включить мигающий индикатор

 

D3 0C

 

OUT  0C

 

 

76

 

HLT

Останов процессора

 

14

MI1

INR    D

Вычислить адрес следующего порта в этой микросхеме

 

25

 

DCR  H

Уменишить счетчик портов а микросхеме на 1

 

C2 MI2

 

JNZ   MI2

Если не все порты перебраны, то продолжить считывание

 

2D

 

DCR  L

Если все, то уменьшить счетчик пар на 1

 

C8

 

RZ

Если все пары перебраны, то выйти

 

3E 08

 

MVI   A,08

Вычислить адрес следующей пары

 

83

 

ADD  E

 

 

5F

 

MOV  E,A

 

 

26 03

 

MVI    H,03

 

 

C3 MI3

 

JMP   MI3

 

 

26 03

OUT

MVI   H,03

Счетчик портов в микросхеме              (Подпрограмма OUT)

 

2E 01

 

MVI   L,01

Счетчик пар микросхем

 

3A 06 08

 

LDA  0806

Считать контрольное слово из памяти

 

4F

 

MOV  C,A

Запомнить контрольное слово

 

AF

 

XRA   A

Вычислить адрес первого порта

 

83

 

ADD  E

 

 

57

MO2

MOV  D,A

 

 

7A

MO1

MOV  A,D

 

 

32 01 08

 

STA   0801

Записать адрес порта в память

 

79

 

MOV  A,C

Вспомнить контрольное слово

 

CD 00 08

 

CALL 0800

Вывести в порт контрольное слово

 

14

 

INR    D

Вычислить адрес следующего порта в этой микросхеме

 

25

 

DCR  H

Уменишить счетчик портов а микросхеме на 1

 

C2 MO1

 

JNZ   MO1

Если не все порты перебраны, то продолжить вывод

 

2D

 

DCR  L

Если все, то уменьшить счетчик пар на 1

 

C8

 

RZ

Если все пары перебраны, то выйти

 

3E 08

 

MVI   A,08

Вычислить адрес следующей пары

 

83

 

ADD  E

 

 

5F

 

MOV  E,A

 

 

26 03

 

MVI    H,03

 

 

C3 MO2

 

JMP   MO2

 

 

3E 08

OUTSE

MVI   A,01

Последовательный вывод частного     (Подпрограмма OUTSE)

 

D3 05

 

OUT  05

Установить младший бит порта 5  в 1

 

3A 0D 08

 

LDA  080D

Считать частное из памяти

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

16 0B

 

MVI   D,0B

Запомнить величину задержки в регистре  D

 

3E 00

 

MVI   A,00

Генерация синхроимпульса запуска

 

D3 05

 

OUT  05

 

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z1

DCR  B

 

 

C2  Z1

 

JNZ   Z1

 

 

79

 

MOV  A,C

Восстановить частное из С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести первый бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z2

DCR  B

 

 

C2 Z2

 

JNZ   Z2

 

 

79

 

MOV  A,C

Восстановить частное из С

 

0F

 

RRC   A

Подготовка следующего бита к выводу

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести второй бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z3

DCR  B

 

 

C2 Z3

 

JNZ   Z3

 

 

79

 

MOV  A,C

Восстановить частное из С

 

0F

 

RRC   A

Подготовка следующего бита к выводу

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести третий бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z4

DCR  B

 

 

C2 Z4

 

JNZ   Z4

 

 

79

 

MOV  A,C

Восстановить частное из С

 

0F

 

RRC   A

Подготовка следующего бита к выводу

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести четвертый бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z5

DCR  B

 

 

C2 Z5

 

JNZ   Z5

 

 

79

 

MOV  A,C

Восстановить частное из С

 

0F

 

RRC   A

Подготовка следующего бита к выводу

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести пятый бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z6

DCR  B

 

 

C2 Z6

 

JNZ   Z6

 

 

79

 

MOV  A,C

Восстановить частное из С

 

0F

 

RRC   A

Подготовка следующего бита к выводу

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести шестой бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z7

DCR  B

 

 

C2 Z7

 

JNZ   Z7

 

 

79

 

MOV  A,C

Восстановить частное из С

 

0F

 

RRC   A

Подготовка следующего бита к выводу

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести седьмой бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z8

DCR  B

 

 

C2 Z8

 

JNZ   Z8

 

 

79

 

MOV  A,C

Восстановить частное из С

 

0F

 

RRC   A

Подготовка следующего бита к выводу

 

4F

 

MOV  C,A

Запомнить частное в регистре С

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести восьмой бит частного в порт 5

 

42

 

MOV   B,D

Задержка 0.104  мс   (скорость 9600 бод)

 

05

Z9

DCR  B

 

 

C2 Z9

 

JNZ   Z9

 

 

AF

 

XRA   A

Обнулить аккумулятор

 

3C

 

INR    A

Генерация стоп бита

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

00

 

NOP

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

4F

 

MOV  C,A

Дополнение цикла задержки

 

D3 05

 

OUT   05

Вывести стоп бит в порт 5

 

C9

 

RET

 




1. психологического климата в коллективе организации
2. вождь усіх часів та народів Йосип Сталін
3. Основы документационной системы управления
4. Почетный донор России
5. Статья 16 Защита информации 1
6. рефератдисертації на здобуття наукового ступенякандидата технічних наук Суми ~ Дис
7. тема- Место финансов хозяйствующих субъектов в национальной финансовой системе
8. Теоретический аспект методики формирования портфелей новшест
9. Контрольная работа общим объёмом не менее 12 страниц печатного текста должна включать- титульный лист с у
10. Тема- Организация работы архива БТИ Исполнитель - Елена Николаевна
11. на тему- Предприятие в рыночной экономике План лекции- 1
12. на тему- rdquo; Проектирование цифровых устройствrdquo; Выполнил- Студент- Касицин С.
13. Влияние температуры на пластичность металла
14. О компании Airbus Каталог самолетов
15. йоркской полиции Еве Даллас
16. Рассмотрено Согласовано Утверждаю на заседании методическ
17. Тема 3 Субъекты международного права Проверил- Вып
18. Тема- Зоогигиеническое обоснование конюшни для денникового содержания лошадей на 40 голов
19. . Святой апостол Павел рассуждая о святом таинстве крещения сокровенную силу его сравнивает с смертию и.
20. Тема- 5-2