Разработка пульта оператора базовой микропроцессорной системы, страница 3

Генератор тактовых импульсов КР1810ГФ84 (DD1) предназначен для управления МП КР1810ВМ86 и периферийными устройствами.

Сигналы: CLK – тактовой частоты для МП КР1810ВМ86, PCLK – тактовой частоты для управления периферийными БИС формируются из колебаний основной частоты кварцевого резонатора ZQ1, равной 15 МГц, который подключается к входам Х1 и Х2. Тактовый сигнал CLK, подаваемый на вход CLK МП, в три раза меньше частоты опорного генератора и составляет 5 МГц. Внутренний делитель частоты формирует выходные импульсы PCLK с частотой, равной 1/2 частоты сигнала CLK и обеспечивает управление ВУ.

Входной сигнал READY МП используется для подтверждения готовности к обмену. Высокий уровень напряжения на входе указывает на наличие данных на ШД. Сигналы RDY свидетельствуют о готовности к обмену, сигналы AEN разрешают формирование сигнала READY по сигналам RDY.

Выходной сигнал RESET вырабатывается при поступлении входного сигнала RES и используется для установки МП и ВУ в исходное состояние. Ко входу RES подключена RC-цепь, обеспечивающая автоматическое формирование сигнала при включении источника питания.

Питание всех устройств осуществляется от источника питания, напряжением 5 В ± 5%.

Оценка затрат машинного времени

Спроектированное устройство работает с тактовой частотой МП 5 МГц и с тактовой частотой ВУ – 100 кГц, т.е. с максимальной для данных устройств частотой.

Команда, занимающая 2-3 байта, в среднем выполняется за 10 тактов. Время обработки одной команды примерно составляет 2 мкс. Программа управления МПС содержит около 50 команд, по 2-3 байта каждая. Таким образом, время необходимое для выполнения одного цикла (от нажатия клавиши до вывода символа на индикатор) программы составляет 100-150 мкс (6-10 кГц).

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

контроллера клавиатуры и дисплея

Для программирования режимов работы контроллера К580ВВ79 используется восемь команд (см. табл. 3.4 в [3] на стр. 78, [2] на стр. 294).

Команда 0 устанавливает режимы работы клавиатуры и дисплея. В КП на индикаторы необходимо выводить 6 знаков, поэтому задаем режим работы ПККД с 8-знаковым дисплеем (8 бит на знак); ввод слева. Программируем кодирование сигналов сканирования матрицы клавиатуры, блокировку ввода при нажатии двух и более клавиш. Тогда формат команды будет иметь следующий вид: 00000000b (00h).

Команда 1 служит для согласования цикла синхронизации МП с внутренним циклом синхронизации ПККД и для обеспечения требуемой скорости сканирования клавиатуры и дисплея. Частота внутренней синхронизации контроллера равна 100 кГц, коэффициент деления, как отмечалось выше, равен 25. Таким образом, команда запишется в формате: 00111001b (39h).

В режиме сканирования контактной клавиатуры по команде 2 (01000000b или 40h) ПККД автоматически выдаёт на ШД биты из ОЗУ клавиатуры (типа FIFO) в том порядке, в каком они были записаны.

При нажатии клавиши и его подтверждении ПККД формирует байт D0–D7, содержащий информацию о позиции нажатой клавиши: биты D0–D2 содержат номер линии RL0–RL3 (номер строки), а разряды D3–D5 – номер столбца, выбранного сигналами SL0–SL2.

По команде 4 ПККД выполняет запись в ОЗУ отображения. Так как ввод знаков в дисплей происходит слева без сдвига, формат команды выглядит следующим образом: 10000000b (90h).


Граф-схема алгоритма работы

микропроцессорной системы

Программа

;Таблица символов шестнадцатеричной системы для вывода на семисегментные индикаторы.

;С контроллера ВВ79 на индикаторы подаются 8 бит информации (два канала A и B).

;Каждый бит соответствует одному сегменту индикатора. Набор нулей и единиц позволяет

;высветить необходимый символ. Подробнее в [2] на стр. 299.

                                                ORG    1800h                          ;Начальный адрес таблицы

            TBCR:                         DB       00111111b                  ;Ноль

                                                DB       00000110b                  ;Один

                                                DB       01011011b                  ;Два

                                                DB       01001111b                  ;Три

                                                DB       01100110b                  ;Четыре

                                                DB       01101101b                  ;Пять

                                                DB       01111101b                  ;Шесть

                                                DB       00000111b                  ;Семь

                                                DB       01111111b                  ;Восемь

                                                DB       01101111b                  ;Девять

                                                DB       00110111b                  ;«A»

                                                DB       01111100b                  ;«B»

                                                DB       01011000b                  ;«C»

                                                DB       01011111b                  ;«D»

                                                DB       01111001b                  ;«E»

                                                DB       01110001b                  ;«F»

            END    TBCR                                                              ;Конец таблицы символов

            180Fh:             MOV    AX, 180Fh                   ;Настраиваем кодовый сегмент

                                                MOV    CS, AX                        ;

                                                JMP     18D8h                         ;Пропускаем подпрограмму

;Подпрограмма обработки запросов на прерывание от контроллера ВВ79.

;Здесь производится считывание символа из ОЗУ клавиатуры ПККД,

;преобразование его в шестнадцатеричную цифру.

;Так как написание программы обработки прерываний – процесс трудоемкий,

;текст ее не приводится. Примеры программ даны в [2] на стр. 299

            1815h:                         STI                                                      ;Разрешение прерывания

                                                HLT                                                     ;Ожидание прерывания

                                                CLI                                                      ;Запрещение прерывания