В системе имеются так же аппаратные прерывания, в результате которых должны выполнятся какие-либо действия, после чего основная программа продолжает свое выполнение. Такие прерывания обслуживают подпрограммы обработки прерываний (в системе их две: подпрограмма обработки прерываний от таймера и подпрограмма обработки прерывания от последовательного интерфейса).
Программу функционирования условно можно разделить на две части: инициализацию и рабочий цикл.
Инициализация представляет собой запись в определенные регистры некоторых констант, определяющих режимы работы процессора и отдельных частей системы.
Рабочий цикл – это набор процедур и операторов, выполняемых в бесконечном цикле, и обеспечивающих выполнение возложенных на систему функций. Граф-схема алгоритма работы и подпрограмм, приведенные на листе 4 графической части.
В разработке использован ПККИ типа КР580ВВ79. Его настройка осуществляется загрузкой управляющего слова «установка режима работы контроллера клавиатуры и индикации» в соответствующий регистр блока управления. Режим работы блока интерфейса клавиатуры: последовательный опрос матрицы клавиш с дешифрированием состояния счетчика сканирования и запрещением 2-х или более нажатых клавиш. Режим работы блока индикации: вывод символов на 8-разрядную индикацию с размещением их слева направо.
7 6 5 4 3 2 1 0
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Рисунок 6.1 – Формат управляющего слова ПККИ.
Разряды D4 и D3 – определяют режим работы интерфейса индикации;
Разряды D2-D0 – определяют режим работы интерфейса клавиатуры.
7 6 5 4 3 2 1 0
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Рисунок 6.2 – Формат управляющего слова «программный сброс»
Разряды D7 – D5 – адрес управляющего слова «программный сброс»;
Разряды D4 = 0 – коды находящиеся во внутреннем ОЗУ индикации выдаются на выходы OUT; D1 = 1 – обнуление регистра состояния ОЗУ клавиатуры и на выходе IRQ – сигнал низкого уровня; D0 ºD4.
Загрузка управляющего слова «программирование синхронизацией» выполняется каждый раз перед функционированием ПККИ для согласования внешней синхросерии с внутренней частотой ПККИ.
7 6 5 4 3 2 1 0
0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
Рисунок 6.3 – Формат управляющего слова «программирование синхронизацией»
Разряды D4-D0 – коэффициент пересчета.
После загрузки управляющего слово «запись в ОЗУ индикации» микропроцессор может записывать информацию в ОЗУ индикации по адресу указанному в разрядах D3-D0. при D4 = 1 адрес ячейки ОЗУ после каждой операции будет увеличиваться на единицу.
7 6 5 4 3 2 1 0
1 | 0 | 0 | 1 | х | х | х | х |
Рисунок 6.4 – Формат управляющего слова «запись в ОЗУ индикации»
Разряды D7-D5 – адрес управляющего слова; D3-D0 – адрес ячейки ОЗУ индикации.
Формат управляющего слова «Чтение многорежимного ОЗУ клавиатуры» аналогичен формату управляющего слова «Чтение из ОЗУ индикации», за исключением содержимого битов D7-D5.
7 6 5 4 3 2 1 0
0 | 1 | 0 | 1 | х | х | х | х |
Рисунок 6.5 – Формат регистра управляющего слова клавиатуры
Разряды D7-D5 – адрес управляющего слова; D4 – признак автоинкремента; D3-D0 – адрес ячейки ОЗУ клавиатуры.
Настройка ППИ осуществляется загрузкой управляющего слова в регистр управляющего слова. Настройка производится следующим образом: порт А работает в режиме ввода информации с датчиков через АЦП, а порт В работает в режиме вывода информации на ЦАП. Порт С будет управлять процессами приема и выдачи информации.
В разработанной системе ППИ работает в 0 режиме. Функции этого режима:
1) Два 8-ми разрядных и два 4-х разрядных порта.
2) Все порты могут быть как входными, так и выходными.
3) Выходные порты защелкиваются, входные – нет.
Формат регистра управляющего слова ППИ представлен на рис. 6.6.
7 6 5 4 3 2 1 0
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Рисунок 6.6 – Формат управляющего слова ППИ.
Разряды D0 = 0 – C0-C3 работают на вывод; D1 = 0 – порт В работает на вывод;
D2 – выбор режима; D3 = 0 – C4-C7 работают на вывод; D4 = 1 – порт А работает на ввод; D5 и D6 – определяют режим работы; D7 – управляющее слово.
Управление режимом работы УАПП осуществляется через специальный регистр с символическим именем SCON.
7 6 5 4 3 2 1 0
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Рисунок 6.7 – Формат регистра SCON.
SM1 и SM0 (D7, D6) – определяют режим работы последовательного порта (Режим 2: 9-ти разрядный асинхронный приемопередатчик, фиксированная скорость приемопередачи);
SM2 (D5) = 0;
REN (D4) – флаг управления разрешением приема;
TB8 (D3) – установка состояния 9-го бита принимаемых данных;
RB8 (D2) – анализ состояния 9-го бита принимаемых данных;
TI (D1) – бит прерывания по передачи;
RI (D0) – бит готовности.
Подпрограмма опроса клавиатуры
Программируемый контроллер клавиатуры и индикации настраивается на режим чтения многорежимного ОЗУ клавиатуры с автоинкрементом, в счетчик заносим количество ячеек ОЗУ клавиатуры. Происходит последовательный опрос клавиатуры, после чего данные о нажатых функциональных клавишах записываются в ОЗУ клавиатуры.
При обращении в данную подпрограмму сначала происходит обнуление счетчика, а затем наращивание его до заданного количества индикаторов. Программируемый контроллер клавиатуры и индикации настраивается на режим записи в ОЗУ индикации и происходит последовательный вывод информации на индикаторы. Выход из подпрограммы произойдет после выдачи всех кодов символов на индикаторы.
Опрос датчиков и выдача выходных сигналов
Опрос датчиков и выдача выходных сигналов происходит по следующему алгоритму:
1) в счетчик заносится количество опрашиваемых датчиков;
2) информация считывается с датчиков в порт А, который ранее был проинициализирован на прием данных;
3) принятая информация переписывается через аккумулятор в специально отведенную для информации с датчиков ячейку ОЗУ;
4) уменьшение счётчика количества датчиков на 1;
5) если произошел опрос всех датчиков, то ППИ перестраивается на выдачу информации из порта В;
6) в счетчик заносится количество выходных сигналов;
7) информация из ячейки ОЗУ через аккумулятор заносится в порт В;
8) производится вывод информации.
В этой подпрограмме вначале производится чтение регистра состояния УАПП. После этого выполняется проверка: установлен ли пятый бит регистра в 1. Если установлен, то это означает, что УАПП готов к передаче информации и происходит побитная передача данных в линию связи до тех пор, пока счетчик передаваемых информационных разрядов не будет равен нулю. Как только все информационные разряды передадутся в линию связи, произведутся новые начальные установки (начальный адрес ОЗУ, количество информационных разрядов) и подпрограмма закончит свое выполнение. Если же еще на первом этапе пятый бит регистра не будет установлен в 1, следовательно произойдет выход из подпрограммы, т. к. УАПП в этом случае не готов передавать информацию.
Для управления режимами работы таймера / счетчика и для организации взаимодействия таймеров с системой прерывания используют два специальных регистра: TCON и TMOD.
7 6 5 4 3 2 1 0
а | 1 | а | 0 | а | 0 | а | 0 |
Рисунок 6.8 – Формат регистра TCON
7-й бит регистра TCON – флаг переполнения таймера 1. Устанавливается аппаратно при переполнении Т/С.
6-й бит – бит управления таймера 1. Устанавливается/ сбрасывается программой для пуска / останова.
4-й бит – флаг запроса внешнего прерывания (бит управления таймера 0).
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Т/С1 Т/С0
Рисунок 6.9 – Формат регистра TMOD.
Регистр TMOD задает режимы работы Т/С0 и Т/С1. Устанавливаем для Т/С1 первый режим работы: 16-битный таймер / счетчик. TH1 и TL1 включены последовательно. При переходе из состояния» все единицы» в состояние «все нули» устанавливается флаг прерывания от таймера TF1. Входной синхросигнал таймера 1 разрешен (поступает на вход Т/С), когда управляющий бит TR1 установлен в 1 и либо управляющий бит GATE (блокировка) равен 0, либо выход запроса прерывания
поступает уровень 1.), блокировка отключена, таймер работает от внутреннего источника сигналов синхронизации.