Главная страница
Навигация по странице:

  • Контрольные вопросы для самопроверки

  • 5 Организация ввода и отображения данных в мпс


    Скачать 0.52 Mb.
    Название5 Организация ввода и отображения данных в мпс
    АнкорP5d-i79.doc
    Дата15.08.2018
    Размер0.52 Mb.
    Формат файлаdoc
    Имя файлаP5d-i79.doc
    ТипДокументы
    #22978
    страница3 из 3
    1   2   3


    5.4 Применение ПККИ К580ВВ79
    Программируемый контроллер клавиатуры и индикации широко применяется для организации ввода информации с клавиатуры или матрицы датчиков, а также для отображения результатов ввода и вычислений на дисплее, построенном на линейках индикаторов до 32 разрядов, при проектировании микроконтроллерных систем управления объектами.

    В зависимости от запрограммированного режима работы клавиатуры и индикации можно получить большое число структур и типов матрицы клавиатуры или датчиков с различными характеристиками времени сканирования и индикации. На рисунке 5.15 приведен пример устройства ввода с матрицы клавиатуры 8 х 8 и клавиш “управления” C0/

    STB и верхний/нижний регистр SH с 16-разрядной линейкой индикаторов, с записью кодов символов в ОЗУИ в семисегментном коде. Выполним настройку ПККИ на режим “игровой” клавиатуры с подключением средств обнаружения ошибок с кодированным выходом счетчика сканирования, а блок интерфейса индикации - на режим вывода символов на 16-разрядный дисплей с размещением цифр слева направо.





    Частота синхронизации в МПС Fclk = 2 МГц. Адрес порта ПККИ равен 40h. Составить программу настройки ПККИ на заданный режим и текст ППОП для ввода кодов клавиш с выработкой звукового сигнала при нажатии двух и более одновременно нажатых клавиш и отображения введенных символов на индикатор. Адрес порта программируемого контроллера прерываний ВН59А равен 30h, таймера - 20h.

    Настройка ПККИ:

    MOV AL, 00001010b ; CW0

    OUT 41h, AL ; загрузка CW0 - игровая клавиатура

    MOV AL, 00110100b ; CW1

    OUT 41h, AL ; загрузка CW1: K = 20 (2000/K <= 100 кГц)

    MOV AL, 11010000b ; CW6

    OUT 41h, AL ; загрузка CW6: сброс ОЗУИ константа = 00h

    M1: IN AL, 41h ; чтение слова состояния ПККИ

    AND AL, 80h ; формирование флага в PSW микропроцессора

    JNZ M1 ; ожидание записи в ОЗУИ константы гашения

    MOV AL, 10010000b ; CW4

    OUT 41h, AL ; загрузка CW4 - запись ОЗУИ с автоинкрементом

    MOV AL, 11110000b ; AL := CW7

    OUT 41h, AL ; загрузка CW7 - подключение средств обна-

    ; ружения ошибок

    RET ; возврат из подпрограммы настройки ПККИ

    Текст ППОП:

    PROG: PUSH AX ; сохранение в стеке AX и BX

    PUSH BX

    IN AL, 41h ; чтение в AL слова состояния ПККИ

    AND AL, 40h ; выделение бита D6 в PSW

    JZ M2 ; если D6=0 - переход на ввод кода клавиши в МПр

    MOV AL, 00010000b ; загрузка CW в 0-ой канал таймера

    OUT 23h, AL ;

    MOV AL, 10h ; загрузка начальных данных в канал 0 для вы-

    OUT 20h, AL ; работки звукового сигнала и запуск счета

    MOV AL, 11000010b ; загрузка CW6 для сброса интерфейса

    OUT 41h, AL ; клавиатуры: разрешения записи в М-ОЗУ

    JMP M3 ; на возврат из ППОП

    M2: MOV AL, 01000000b ; загрузка CW2 “Чтение М-ОЗУ” в ПККИ

    OUT 41h, AL ;

    IN AL, 40h ; чтение кода клавиши из М-ОЗУ типа FIFO

    LEA BX, TABLE ; загрузка в ВХ начального адреса таблицы

    XLAT ; программного знакогенератора и преобразо-

    ; вание кода клавиши в 7-сегментный код

    OUT 40h, AL ; запись кода символа в ОЗУИ

    М3: MOV AL, 00100000b ; загрузка OCW2 в ПКП ВН59А

    OUT 30h, AL ;

    POP BX ; восстановление из стека ВХ и АХ

    POP AX ;

    IRET ; возврат из ППОП
    Заметим, что команду XLAT можно заменить двумя эквивалентными командами для обращения к таблице программного знакогенератора:

    ADD BX, AX ; нахождение адреса 7-сегментного кода в TABLE

    MOV AX, [BX] ; загрузка кода символа в АХ
    В программе необходимо зарезервировать массив из 256 байт с начальным адресом TABLE и выполнить прошивку программного знакогенератора для преобразования кода клавиши в семисегментный код символа. Если в ОЗУИ код символа записывается в коде КОИ-8, то в массиве TABLE необходимо заменить 7-сегментные коды символов на коды КОИ-8, а на выходах OUTA, OUTB ПККИ поставить ПЗУ знакогенератора емкостью 256 байт с прошивкой преобразования кода КОИ-8 в 7-сегментный код:

    Адрес ячейки ПЗУ ЗГ Код прошивки Символ на дисплее

    в 8сс (код КОИ-8)

    60 00111111 0

    61 00000110 1

    62 01011011 2

    63 01001111 3

    64 01100110 4

    и т.д.

    При записи в ОЗУИ считанного кода клавиши из М-ОЗУ в ППОП не требуется выполнять никаких преобразований, а только изменить прошивку в знакогенераторе на выходах OUTA, OUTB ПККИ.

    На рисунках 5.11-5.13 приведены примеры подключения дисплея к контроллеру. Из рассмотренного примера видно, что функции кодогенератора и знакогенератора может выполнять либо МПр путем программного преобразования кодов клавиш в 7-сегментный код или код представления символа в памяти микропроцессора (КОИ-8), либо на основе ПЗУ или ПЛМ. На рисунке 5.10 представлен пример подключения восьми портов ввода для режима анализа матрицы датчиков, а на рисунке 5.16 пример работы дисплея для вывода на 8-разрядный индикатор со старших и младших разрядов индикатора двух трехразрядных чисел с позиций 0 и 5.

    Как видно из рисунка, попытка вывода второго числа в режиме вывода начиная с младших разрядов индикатора приводит к непредсказуемым последствиям, так как нет соответствия между адресом записи в ОЗУИ и номером знакоместа на линейке индикаторов.

    Рассмотрим пример программного опроса ПККИ, когда прерывания в МПр запрещены для ввода кодов клавиш (режим работы - из предыдущего примера, но без подключения средств обнаружения ошибок) (программу настройки необходимо дополнить командой запрета прерываний в МПр CLI и убрать загрузку CW7):



    PO: PUSH AX ; сохранение в стеке AX, BX, CX

    PUSH BX

    PUSH CX

    IN AL, 41h ; чтение слова состояния ПККИ

    AND AL, 0Fh ; выделение четырех младших разрядов PSW

    MOV CL, AL ; организация счетчика циклов кодов клавиш М-ОЗУ

    JZ M4 ; нет введенных в М-ОЗУ кодов клавиш

    MOV AL, 01000000b ; загрузка CW2 “Чтение М-ОЗУ” в ПККИ

    OUT 41h, AL ;

    M5: IN AL, 40h ; чтение кода клавиши из М-ОЗУ типа FIFO

    LEA BX, TABLE ; загрузка в ВХ начального адреса таблицы прог-

    XLAT ; раммного знакогенератора и преобразование

    ; кода клавиши в 7-сегментный код

    OUT 40h, AL ; запись кода символа в ОЗУИ

    DEC CL ; изменение счетчика циклов

    JNZ M5 ; возврат на ввод кодов клавиш в МПр пока CL  0

    M4: POP CX ; восстановление из стека CX, ВХ, АХ

    POP BX ;

    POP AX ;

    RET ; возврат из подпрограммы
    Если код символа из МПр поступает в ОЗУИ в виде 4-разрядного двоично-десятичного или 16-ричного кода, то при выводе информации на нижнюю линейку индикаторов необходимо предварительно запретить запись в ОЗУИ по старшим разрядам байта путем загрузки CW5:

    MOV AL, 10101000b ; загрузка CW5 с запретом записи по каналу А

    OUT 41h, AL ;

    А для вывода на верхний дисплей установить в CW5 запрет записи по каналу В, при этом код символа в байте должен находиться в старших разрядах байта.

    При использовании режима “Анализ матрицы датчиков” необходимо учитывать, что в М-ОЗУ хранится бит-карта состояний матрицы датчиков, а выработка сигнала запроса на прерывание INT при обнаружении изменения состояния хотя бы одного из датчиков сопровождается запретом записи в М-ОЗУ. Отсюда на ППОП возлагаются следующие функции:

    • в памяти микропроцессора необходимо хранить состояние матрицы датчиков из 8 байт до выработки сигнала запроса на прерывание INT (при настройке ПККИ на режим анализа матрицы датчиков этот массив должен быть обнулен);

    • в ППОП необходимо считать в МПр новый массив состояния матрицы датчиков и выполнить сравнение одноименных строк матрицы с целью определения номера строки, в которой датчик изменил свое состояние на противоположное, и номеров сработавших датчиков в строке (сравнение можно выполнять последовательно по мере считывания строк состояния датчиков), а также в каком состоянии находится датчик (включено или выключено);

    • при необходимости можно подсчитать число сработавших датчиков и вывести на индикатор или вывести номера сработавших датчиков, если их одновременное срабатывание не превышает 16 (по два индикатора на номер датчика при 32-разрядном дисплее);

    • при считывании состояния матрицы датчиков из М-ОЗУ в режиме автоинкрементирования необходимо учитывать, что множественное срабатывание датчиков в нулевой строке плюс количество строк с 1-ой по 7-ую, в которых сработало произвольное число датчиков, вызывает выработку такого же количества сигналов INT и запретов записи в М-ОЗУ и при считывании восьми строк из М-ОЗУ сигнал INT может остаться активным, а запись новых состояний матрицы датчиков на последующих циклах сканирования будет блокирована. Поэтому возможны следующие варианты для снятия сигнала запроса на прерывание INT и разрешения записи в М-ОЗУ:

    1. в ППОП выполнить загрузку CW7, которое сразу снимает сигнал INT и разрешает запись в М-ОЗУ;

    2. выполнить не 8, а 15 чтений из М-ОЗУ, после чего даже в самом худшем случае, когда одновременно сработают все датчики, сигнал INT будет снят. То есть для снятия сигнала запроса на прерывание INT в режиме автоинкрементирования необходимо выполнить столько чтений М-ОЗУ, сколько сигналов INT было выработано при сканировании и вводе состояний матрицы датчиков в М-ОЗУ (минимум одно чтение, максимум - 15 чтений М-ОЗУ);

    с) сначала выполнить чтение состояний всей матрицы датчиков в режиме автоикрементирования, а затем загрузить CW2 без автоинкрементирования, и по первой же команде чтения из М-ОЗУ сигнал запроса на прерывание будет снят (или наоборот, сначала загрузить CW2 без автоинкрементирования и выполнить чтение М-ОЗУ, а затем CW2 с автоинкрементированием и считать оставшуюся часть строк М-ОЗУ).

    Разрешение записи в М-ОЗУ по описанной методике можно выполнять с первых команд ППОП или перед командой IRET в зависимости от решаемой задачи, так как для быстродействующих систем реального времени могут быть потеряны состояния сработавших датчиков (за время выполнения ППОП датчик может переключиться дважды: включиться и выключиться).

    На рисунке 5.17 приведен алгоритм работы клавиатурного интерфейса в различных режимах работы.

    Многообразие режимов работы программируемого контроллера ВВ79 открывает широкие возможности его применения в зависимости от задач пользователя.
    Контрольные вопросы для самопроверки


    1. Перечислите режимы работы ПККИ ВВ79.

    2. Какие типы индикаторов могут использоваться для вывода данных при применении БИС К580ВВ79 ?

    3. Какую организацию имеет ОЗУ индикации и какие данные по форме представления в него могут записываться ?

    4. Назначение слова состояния ПККИ и области его использования при организации процедур ввода с клавиатуры (датчиков) и вывода на дисплей ?

    5. Перечислите управляющие слова, загружаемые в ПККИ, области и особенности их использования.

    6. Объясните назначение управляющего слова CW7 “Снятие запроса на прерывание - подключение средств обнаружения ошибки”.

    7. Как осуществляется ввод кода клавиши в режиме стандартной, “игровой” клавиатуры и ввода по стробу ?

    8. Какие действия выполняются в интерфейсе контроллера индикации при загрузке управляющего слова CW6 формата с битом D4=1 или D0=1?

    9. Чем отличается режим стандартной клавиатуры от режима "игровой" клавиатуры с подключением средств обнаружения ошибок?



    1   2   3


    написать администратору сайта