
2. Теоретическое введение.
В состав программируемого таймера (ПТ) входят три независимых 16-разрядных счетчика (счетчики CT0; CT1; CT2). На входы счетчиков С0, С1, С2 поступают импульсы. Прием этих импульсов разрешается сигналами G0, G1, G2 (STB0, STB1, STB2). Под действием этих сигналов содержимое счетчиков сбрасывается. При равенстве содержимого счетчика нулю на его выходе OUT выбрасывается сигнал запросов на прерывание. Режимы работы каждого счетчика независимы и заданы значением управляющего слова, занесенным в специальный регистр для каждого счетчика. Содержимое счетчиков сбрасывается при записи управляющих слов. Частота счета возможна от 0 до 2 мГц. Величина счета в двоичном коде 216 в двоично-десятичном 104.
П.Т. – программируется через микропроцессор и после программирования готов к выполнению действий. Каждый из трех каналов ПТ программируется отдельно, путем записи управляющих слов и начальных значений содержимого счетчика они заносятся последовательно по одинаковому адресу.
Формат управляющего слова приведен в табл. 3.1.
Табл. 3.1. Формат управляющих слов П.Т.
разряд |
Значение разрядов |
0 |
Код счета: 0 – двоичный; 1 – двоично-десятичный |
1 2 3 |
Режим работы при D3, D2, D1: 000 – режим 0; 001 – режим 1; 010 – режим 2; 011 – режим 3; 100 – режим 4; 101 – режим 5 |
4 5 |
Число записываемых/считываемых байтов при D5, D4: 01 – младший; 10 – младший, затем старший; 00 – копирование в спец. регистр для последующего чтения. |
6 7 |
Выбор счетчиков при D7, D6: 00 – канала 0; 01 – канала 1; 10 – канала 2. |
При программировании в соответствующий канал ПТ управляющие слова записываются командой OUT [адр] управляющего слова, затем в регистр счетчика последовательно записывают младший байт числа и старший при одинаковом адресе. Номер канала указан в управляющем слове.
Адресация каналов определяется уровнем сигналов, поданных на выводы A0 и A1 – ПТ и приведена в табл. 3.2.
Табл. 3.2. Адресация регистров ПТ
Регистр |
A1 |
A0 |
|
Адр. В УМПК - 80 |
Счетчик канала 0 |
0 |
0 |
0 |
98 |
Счетчик канала 1 |
0 |
1 |
0 |
99 |
Счетчик канала 2 |
1 |
0 |
0 |
9A |
Управляющего слова |
1 |
1 |
0 |
9B |
В процессе работы ПТ содержимое любого счетчика можно прочитать после прихода первого импульса C двумя способами:
1) приостановив работу счетчика подачей сигнала G (STB) L – уровня или блокировкой тактовых импульсов: прочитать с помощью двух команд ввода (IN), если запрограммировано чтение двух байтов.
2) записав в ПТ управляющее слово, содержащее нули в разрядах D4, D5; которые указывают на операцию копирования содержимого счетчика в момент чтения; прочитать содержимое счетчика двумя командами ввода. При этом считывание осуществляется без нарушения операции счета. Содержимое заданного счетчика копируется в специальном буфере, откуда и считывается. Операция считывания первого и второго байтов должна быть проведена полностью.
Каждый из счетчиков ПТ может работать в одном из шести режимов.
В режиме 0 счетчик функционирует как программируемый таймер. Сигнал OUT после занесения управляющего слова имеет низкий уровень. При низком уровне сигнала G сброс содержимого прекращается до прихода высокого уровня. Сброс содержимого счетчика происходит по срезу сигнала C при высоком уровне на входе G, начиная со второго сигнала C.
В режиме 1 счетчик работает как ждущий одновибратор. Сигнал OUT снимается по срезу первого импульса C при высоком уровне на входе G и устанавливается при сбросе счетчика. Т.о. ПТ формирует отрицательные импульсы длительностью t=n*Tc где Tc – период тактовых импульсов на входе С, n – число, загруженное в счетчик. Занесение в счетчик нового начального значения при низком уровне сигнала OUT не изменяет длительность импульса на выходе OUT после следующего положительного фронта сигнала G. Содержимое счетчика можно считывать в любой момент времени.
В режиме 2 счетчик используется как делитель частоты на n. Выходной сигнал OUT имеет низкий уровень с частотой Cвх:n. Устанавливается 0 на время одного периода сигнала Cвх. Если счетчик перезагружается между выходными импульсами, то на текущий период это не сказывается. При подаче на вход G низкого уровня на выходе OUT устанавливается 1, счетчик начинает отсчет от начальной величины счета по фронту на входе G.
В режиме 3 выходной сигнал OUT в течении одного полупериода Tn имеет высокий уровень, в другом - низкий.
Tn = n*Tc
В режиме 4 после загрузки управляющего слова выход OUT имеет высокий уровень. После занесения начального значения счетчик начинает работать. По окончании счета сигнал OUT сбрасывается, а при поступлении следующего импульса на вход C вновь устанавливается. Снятие сигнала G останавливает счет, а его повторная установка вызывает работу счетчика с начального значения.
В режиме 5 счет начинается после поступления положительного фронта на вход G. Сигнал OUT сбрасывается после окончания счета и затем устанавливается по импульсу C.
3. Задание для домашней подготовки
3.1. Ознакомиться с устройством ПТ, сигналами, форматом управляющего слова, способами программирования и чтения содержимого счетчиков.
3.2. Ознакомиться с режимами работы ПТ.
3.3. Изучить программу 3.1 и 3.2.
3.4. Написать управляющие слова для режимов 1 - 5.
4. Задание к лабораторной работе
4.1. Ввести программу 3.1. Выполнить программу по шагам команд. Вводить импульсы 00 нажатием кнопки SB1. Подать сигнал G0 ключом SA3.1 (вверх) - при этом лампа G0 включается.
По результатам построить временные диаграммы сигналов C, OUT, G, WR в соответствии с описанием режимов работы ПТ.
4.2. После остановки программы 3.1 по адресу 0825 при G0=1 ввести содержимое младшего и старшего байта счетчика в регистры A и B нажатием кн. От Рг. Затем после подачи сигнала C0 повторно ввести содержимое счетчиков после завершения цикла в программе 3.2.
Зафиксировать значения счетчиков после пяти импульсов C0 и после шестого импульса. Дать объяснение полученным результатам.
4.3. Откорректировать программу 3.1 на выполнение режимов 1 - 5. провести исследование режимов в соответствии с описанием работы. Построить временные диаграммы сигналов C0, G0, OUT, WR.
5. Содержание отчета
Отчет должен содержать:
1. Программы задания режимов.
2. Программу 3.2.
3. Временные временные диаграммы сигналов C0, G0, OUT, WR для 6-ти режимов.
Программа 3.1. Программирование работы канала 0 программируемого таймера в режиме 0 при двоичном коде счета.
адр |
код |
ассемблер |
комментарии |
0800 0802 0804 0806 0808 080A 080C |
3E 30 D3 9B 3E 04 D3 98 3E 00 D3 98 C3 20 08 |
MVIA 30 OUT RGCW MVIA 04 OUT RGCO MVIA 00 OUT RGCO JMP OUT
|
запись управляющего слова в регистр управляющего слова
запись мл. байта в счетчик запись ст. байта в счетчик CO переход к программе вывода содержимого счетчика |
Программа 3.2. - OUT. Вывод содержимого счетчика канала - 0.
адр |
код |
ассемблер |
комментарии |
0820
0822
0823 0835 |
DB 98
47
DB 98 C3 20 08 |
IN RGCO
MOV BA
IN RGCO JMP OUT
|
Чтение младшего байта счетчика 0 в аккумулятор Пересылка содержимого младшего байта CO в рег. B Чтение старшего байта счетчика CO Зацикливание программы вывода |
Лабораторная работа №4.
Исследование программируемого контроллера прерываний KP580BН59.
1. Цель работы: ознакомление с устройством, программированием и принципом работы контроллера прерываний.
2. Теоретическое ведение
Программируемый контроллер прерываний (ПКП) состоит из буфера данных, блока управления обменом с сигналами, поступающими от МПС , , AO, , схемы каскадирования с сигналами CAS0, CAS1, CAS2, сигналами ведущий/ведомый – MS/ и устройство управления INT и входным сигналом – INT A с 8 входами сигналов запросов прерывания – IRQ0 – IRQ7. Запросы прерывания от внешних устройств подают на входы IR0 – IR7, которые запоминают в регистре запросов, если сигнал запросов от внешнего устройства задерживается до прихода первого сигнала INTA. Регистр маски содержит единицы в разрядах блокируемых запросов. Каждый последующий запрос на прерывание принимается только после выполнения программы обслуживания по данному входу со сбросом соответствующего разряда регистра обслуживаемых запросов (состояния). Это выполняют специальной командой. Очередность обслуживания программируется и может быть с фиксированным приоритетом, при котором высший приоритет присваивается запросу IR0 – низший IR7 и с циклически изменяющимся приоритетом, при котором обслуженному запросу присваивается низший приоритет. Номер запроса с низшим приоритетом можно запрограммировать.
Программирование контроллера осуществляют двумя типами команд: командами инициализации и командами управления режимом обслуживания. Запись команд в контроллер осуществляется микропроцессором. Команды инициализации подают перед началом работы контроллера. Команды управления режимом можно подавать в процессе работы контроллера.
Программирование контроллера производят последовательной записью в них команд инициализации (КИ-1 и КИ-2). Если система содержит несколько контроллеров, включенных каскадно, после команды КИ-3, которая определяет соподчиненность контроллеров.
Перед программированием прием прерываний МП запрещают командой DI (запрет прерывания с кодом F3).
Команда КИ-1 (табл. 4.1) осуществляет сброс всех разрядов регистров запроса на прерывание, регистра маски, присваивает низкий приоритет входу IR7, сбрасывает триггеры чтения состояния регистров и определяет число контроллеров прерывания в системе, разность между стартовыми адресами, младшие байты адресов подпрограмм обслуживания прерываний, которые по второму сигналу INTA выводятся контроллером прерываний на шину данных. (По первому сигналу INTA ведущий контроллер выдает на шину данных код команды CALL). По третьему сигналу INTA на шину данных ведомый контроллер выдает старший байт адреса подпрограммы обслуживания запроса, заданный командой КИ-2.
При каскадном включении адреса выдают подчиненные контроллеры в соответствии с номером обслуживаемого запроса прерывания.
Табл. 4.1.
Формат команд КИ-1
A0=0
N разряда |
Назначение разрядов |
D0 |
0 – признак команды |
D1 |
1 – один контроллер в МПС 0 – более одного контроллера в МПС |
D2 |
Разность между адресами подпрограмм 1 – 4 байта 0 – 8 байтов |
D3 |
0 – признак команды |
D4 |
1 – признак команды |
D5 |
A5 – пятый разряд адреса подпрограммы |
D6 |
A6 – шестой разряд адреса подпрограммы |
D7 |
A7 – седьмой разряд адреса подпрограммы |
КИ-2
A0=1
Старший байт адреса подпрограммы
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
A15 |
A14 |
A13 |
A12 |
A11 |
A10 |
A9 |
A8 |
КИ-3 – для ведущего контроллера
A0=1
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
IR7 |
IR6 |
IR5 |
IR4 |
IR3 |
IR2 |
IR1 |
IR0 |
IRN=1- подчиненный ПКП подключен IRN=0 – не подключен
КИ-3 – для подчиненного контроллера
A0=0
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
x |
x |
x |
x |
x |
N2 |
N1 |
N0 |
номер входа ведущего контроллера, к которому подключен данный подчиненный
Управление порядком обслуживания запросов и маскирования запросов осуществляется командами управления КУ-1, КУ-2, КУ-3 табл. 4.2.
Для задания простого приоритетного режима не требуется никаких дополнительных команд, кроме команд инициализации. После приема микропроцессором запроса на прерывание INT и выдачи сигнала INTE триггер разрешения прерываний микропроцессора сбрасывается, запрещая прием прерываний. Поэтому для организации многоуровневой системы прерываний необходимо выполнить программную установку этого триггера командой E1 (разрешение прерывания – код IR).
Команду КУ-2 используют и для задания циклического приоритета и изменения порядка приоритетов при указании номера входа запроса, которому присваивается низший приоритет, т. е. указывается дно циклического приоритета.
Команду КУ-3 используют для установки спецмаскирования и опроса состояния регистров запроса и регистра обслуживаемых запросов состояния) при организации прерываний по результату опроса слова состояния – регистра обслуживаемых запросов.
Табл. 4.2.
Команды управления
КУ-1
A0 D7 D6 D5 D4 D3 D2 D1 D0
1
-
M7
M6
M5
M4
M3
M2
M1
M0
Маскирование входа
1 – маска установлена
0 – маска сброшена
КУ-2
AØ D7 D6 D5 D4 D3 D2 D1 D0
Ø
-
Ц
К
СВ
Ø
Ø
К2
К1
К0
н
омер
входа запроса, которому присваивается
низший приоритет
1 – сброс разряда с наивысшим приоритетом
0 – не воздействует
1 – разряды К0-К1 используются
0 – не используются
1 – режим циклического приоритета
0 – простой приоритетный режим
КУ-3
A0 D7 D6 D5 D4 D3 D2 D1 D0
0
-
X
СM1
СM2
0
1
П
Р1
Р0
считывание
регистров
-
0
1
0
1
1
1
0
0
регистр
запросов
регистр
обслуж.
запр.
не воз- действ.
1 разрешает в следующем цикле считывать номер запроса с высшим приоритетом
-
Режим спецмаскирования
1
0
0 1
1
1
0 0
режим установлен
сброс режима
не воз- действ.
Формат слова считываемого с контроллера
После команды КУ-3-ОС
A
0
-
3
X
X
X
X
К2
К1
К0
код с высшим приоритетом
1 – запрос имеется
0 – запрос отсутствует
После подачи команды КУ-3=0С можно считывать слово состояния, в котором в трех младших разрядах указан номер запроса с высшим приоритетом, а в седьмом разряде высокий уровень 1 – обозначает наличие запроса на прерывание.
При организации прерываний по результату опроса (программно) каждое новое обслуживание запросов осуществляется по инициативе программы МПС путем предварительной подач команды КУ-3=0С с последующим чтением кода запроса с высшим приоритетом командой IN и сигналом RD. При этом сигналы INT и INTA между МП и КП не должны передаваться (каналы не соединены).
Прием запросов, маскирование и анализ их по приоритетам производится так же как при прерывании по запросу. Напряжение высокого уровня на входах IR0 – IR7должно удерживаться до прихода сигнала RD.
Действие команды КУ-3 прекращается после считывания регистров по команде IN (сигналу RD). При подаче команды КУ-3=0A в следующем цикле считывается содержимое регистра состояния.
Считывание содержимого регистра маски выполняется командой IN (при A0=1) без предварительной команды КУ-3.
Устройство модуля платы контроллера прерываний УМПК-80/МИ-4
Схема модуля содержит два КП, включены каскадно. БИС D9 является ведущей, а D10 ведомой. Переключатель SA5 при положении ключа вправо подключает сигнал запроса прерывания ведомого КП к входу IR7 ведущего, а при положении ключа влево – ко входу IR0 ведущего.
Дешифратор адреса формирует сигналы выборки микросхем – CS, стробирующий сигнал записи данных в регистр D11 и сигналы сброса триггеров запросов D6-D7.
Обращение к схемам осуществляется как к устройствам ввода-вывода по адресам:
Выбор ведущего КП (D9) – по адресу 98-9B
Выбор ведомого КП (D10) – по адресу 9C-9E
Подача сигнала сброса триггеров запросов IR3 – IR5 D6, D7.1, D7.2 … B1, B2, B3.
Формирование импульса запроса прерывания IR2 для КП D9 по адресу … B0
Строб записи данных в регистр D11 … 99
Схема формирования запросов прерываний позволяет подавать на КП запросы прерываний ключами SA1-SA4 со схемами антидребезга. Триггеры D6; D7.1; D7.2 позволяют устанавливать запросы прерываний на входах IR3 – IR5 при нажатии кнопок SA2 – SA4 и снимать их при обращении МПС к триггерам как к ВУ с адресами B1, B2, B3 соответственно.
Схема индикации позволяет отражать команду КИ3 ведущего контроллера прерываний через выходы CAS0 – CAS2 передаваемое к ведомому КП. Передаваемые данные, управляющие слова, состояния можно отражать через регистр D11 на светодиодах HL7 – HL14.
В программе 4.1 реализовано обслуживание прерываний по запросу контроллера прерываний. В основной программе микропроцессор читает состояние датчиков внешнего устройства – ключей SA1-1 – SA1-8 на панели ВМ и выводит данные на светодиоды HL9 – HL16 ВУ. Запросы на прерывания поступают от кнопки SA1на вход IR1 ведущего КП, а от кнопок SA2, SA3, SA4 на входы IR3, IR4; IR5 ведомого КП. Запрос прерывания INT ведомого подключен к IR7 ведущего – ключом SA5 (вправо). В подпрограммах обслуживания прерываний вывести на светодиоды HL9 – HL16 ВУ на панели ВМ код подпрограммы обслуживания, в котором в младшей тетраде указать номер запроса, а в старшей тетраде число 1H при обслуживании ведущего КП и число 2H – для ведомого.
Программа 4.1. Обслуживание прерываний по запросу ПКП.
Положение
ключей:
адр |
код |
ассемблер |
комментарии |
0800
0801 0805 0809 080D 0811
0815 0819 081D 0821 |
F3
3E 10 D3 98 3E 09 D3 99 3E 80 D3 99 3E 10 D3 9C 3E OA D3 9D
3E 07 D3 9D 3E 7D D3 99 3E C7 D3 9D D3B1 D3B2 D3B3 |
D1
MVIA 10 OUT 98 MVIA 09 OUT 99 MVIA 80 OUT 99 MVIA 10 OUT 9C MVIA OA OUT 9D MVIA 07 OUT 99 MVIA 7D OUT 99 MVIA C7 OUT 9D OUT B1, OUT B2, OUT B3 |
Программирование ПКП. Запрет прерываний. Программирование КИ-1 Ведущего КИ-2 КИ-3 Программирование КИ-1 ведомого КИ-2
КИ-3 Маскирование КУ-1 Маскирование КУ-1 Сброс Т запросов |
0834 0835 0839 |
FB DB 05 D3 05 C3 34 08 |
E1 INSA OUTHL JMP 08 34 |
Основная программа: Разрешение пррывания Чтение ВУ. Запись на HL Зацикливание |
0908
0950
0954 0956 095A
|
C3 50 09
3E 11 D3 05
FB 76 3E20 D398 C9 |
JMP 09 50
MVIA 11 OUT 05
EI.HLT MVIA 20 OUT 98 RET |
Запись перехода при обслу-живании запроса IR1 вщ Подпрограмма обслуживания IR1 ведущего ПКП Разреш. прерывания, останов Сброс запроса ком. КУ-2 Возврат к основн. программе |
0A18
0A20 0A28 |
C3 70 OA
C3 80 0A C3 90 0A |
JMP OA 70
JMP 0A 80 JMP 0A 90 |
Запись перехода в начало подпрограммы обслуж. IR3 ПКП D10 (ведомого) Обслуживание IR4.D10 Обслуживание IR5.D10 |
0A70 |
3E 23 D305
FB 76 3E20 D3 9C D3 98 D3B1 C9 |
MVIA 23 OUT HL
EI.HLT.MVIA20 OUT OUT 98 OUT TM RET |
Вывод кода подпр. IR3 ведомого ПКП Стоп. Сброс IR3 ведомого ПКП Сброс IR7 вдщ. ПКП. Возвр. |
0A80 |
3E 24 D3 05
FB 76 3E20 D3 9C D3 98 D3B2 C9 |
MVIA 24 OUT HL
EI MVIA 20 OUT 9C OUT 98 OUT T3 RET |
Вывод кода подпр. IR4 ведомого ПКП Стоп. Сброс IR4 ведомого ПКП Сброс IR7 вдщ. ПКП. Возвр. |
0A90 |
E3 25 D3 05
FB 763E20D3 9C D3 98 D3 B3 C9 |
MVIA 25 OUT HL
EI.HLT MVIA20 OUT 9C OUT 98 OUTT14 RET |
Вывод кода подпр. IR5 ведущего ПКП Сброс IR5
Сброс IR7 вдщ. ПКП. Возвр. |
Программа 4.2. Исследование состояния ПКП по опросу МП при выполнении программы 4.1
адр |
код |
ассемблер |
комментарии |
083C 083D
0841
|
F3 3E 0A D3 98
DB 98 D3 05
|
D1 MVIA 0A OUT 98
IN 98 OUT HL
|
Запрет прерываний Запись команды КУ 3=0A в ведущ. ПКП для чтения регистра запросов Чтение регистра запросов (Р3). Запись состояния на светодиоды |
0845
0849 |
3E 0A D3 9C D3 9C D3 05 |
MVIA 0A D3 9C
IN9C OUT HL |
Запись КУ-3 чтения Р3 в ведомый ПКП. Чтение Р3 и вывод на светодиоды |
084D
0851 |
3E 0B D3 98
DB 98 D3 05 |
MVIA OB OUT 98
IN 98 OUT HL |
Запись КУ-3=0B для чтения регистра состояния (РС) Чтение регистра состояния ведущ. ПКП индикации РС |
0855
0859 |
3E 0B D3 9C DB 9C D3 05 |
MVIA 0B OUT 9C IN 9C OUT HL |
Запись КУ-3 в ведомый ПКП Чтение и индикация РС. |
085D
0861 |
3E 0C D3 98
DB 98 D3 05 |
MVIA 0C OUT 98
IN98 OUT HL |
Запись КУ-3=0C для чтения кода запроса с высшим приоритетом (PSW). Чтение PSW |
0865
0869 |
3E 0C D3 9C
DB 9C D3 05 |
MVIA 0C OUT 9C
IN 9C OUT HL |
Запись КУ-3 – 0C для чтения кода запроса с высшим приор Чтение PSW ведомого |
3. Задания для домашней подготовки
3.1. Изучить устройство, сигналы, принципы программирования ПКП-КР580 ВН 59.
3.2. Изучить программу 4.1 – обслуживания прерывания по запросу ПКП. Дешифровать команды инициализации и управления.
3.3. Нарисовать схему алгоритма программы обслуживания прерываний по запросу ПКП.
3.4. Изучить программу 4.2 исследования состояния ПКП по опросу МП. Дешифровать команды КУ-3 в соответствии с форматом команд.
3.5. Откорректировать программы 4.1 и 4.2 для реализации обслуживания прерываний по опросу состояний ПКП микропроцессором, сократив число запросов до одного в ведущем ПКП.
4. Задание к лабораторной работе
4.1. Ввести программу 4.1. Выполнять ее в автоматическом режиме. При запуске программы при отсутствии запросов на прерывание на выходных светодиодах ВМ80 отражается состояние ключей входного устройства. Проверить это переключением тумблеров SA1.1. – SA1.8. Осуществить запрос прерывания нажатием кнопки SA1. Проверить соответствие слова на светодиодах HL9 – HL16 на панели ВМ коду запроса – 1.1Н. Произвести сброс запроса нажатием кнопок «стоп» и «пуск» при выполнении команды КУ3=20. Выполнить прерывания нажатием кнопок SA2-SA4. Проверить правильность работы системы по индикации результатов на светодиодах. При правильной работе при нажатии кнопки SA1 – выводится число 11, SA2 – 23; SA3 – 24; SA4 – 25.
Проследить путь выполнения программ по шагам команд.
4.2. Проверить последовательность обслуживания прерываний после подачи сигналов на все четыре входа при чередовании последовательности нажатия кнопок.
4.3. Ввести программу 4.2 в программу 4.1. Отключить сигнал INT ключом SA2.3 – вверх на панели ВМ – третьим ключом слева. Выполнять программу по шагам команд. Исследовать состояние регистров: запросов, состояния, кода запроса с высшим приоритетом.
4.4. Вывести самостоятельно откорректированную программу 4.1 и 4.2 для реализации прерываний по опросу в соответствии с заданием 3.5.
Проверить правильность ее функционирования в шаговом и автоматическом режимах.
5. Отчет должен содержать
Форматы команд КИ-1, КИ-2, КИ-3, КУ-1, КУ-2, КУ-3, слова состояния.
Программы 4.1, 4.2 скорректированную по 4.1 и 4.2, в соответствии с заданием 3.5.
Лабораторная работа №5.
Исследование контроллера прямого доступа к памяти KP580BТ57.
Цель работы: ознакомление с работой и программированием прямого доступа к памяти.