Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 400211.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
4.09 Mб
Скачать

2.10.2. Программистская модель и система команд кр580вв79

Программистская модель контроллера содержит следующие устройства (рисунок 17):

Регистр управляющего слова (РУС) предназначен только для записи команд управления работой контроллера.

Регистр слова состояния контроллера хранит информацию о состоянии БИС и предназначен только для чтения. Обращение к этим двум регистрам производиться при низком уровне адресного сигнала на входе А0.

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

ОЗУ ввода - регистр FIFO ввода емкостью 8 байт в режимах обслуживания клавиатуры и стробированного ввода работает как регистр FIFO: данные с клавиатуры (порта ввода) последовательно заносятся в него и затем последовательно считываются микропроцессором. Обращение к произвольной строке регистра FIFO невозможно.

Регистр данных служит для организации обмена данными между микропроцессором и ОЗУ дисплея или регистром FIFO. Обращение к регистру данных происходит при высоком уровне адресного сигнала на адресной линии А1. Направление обмена и номер ячейки ОЗУ задаются в команде, предварительно занесенной в РУС.

Система команд управления контроллером [7] содержит восемь команд: три команды общие и используются во всех режимах; три команды управляют работой дисплея; две команды управляют режимами ввода (таблица 16).

Формат команды установки режимов работы БИС приведен на рисунке 18, значения битов - в таблицах 17 и 18.

Рис. 17. Программная модель БИС КР580ВВ79

При задании режима работы дисплея указывается способ отображения данных, вводимых в ОЗУ дисплея:

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

левый ввод – вновь введенный символ занимает крайнюю левую позицию дисплея, вновь вводимый символ занимает следующую крайнюю левую свободную позицию дисплея.

Тип команды

Наименование команды

Код

Общие команды

Установка режимов работы БИС

Программная очистка

Управление частотой сканирования

0 0 0 D D K K K

1 1 0 D D D F 0

0 0 1 P P P P P

Управление работой дисплея

Чтение на ОЗУ дисплея

Запись в ОЗУ дисплея

Бланкирование/запрещение записи

0 1 1 AI A A A A

1 0 0 AI A A A A

1 0 1 X IA IB BA BB

Управление вводом информации

Чтение «ОЗУ ввода- ОЗУ FIFO»

Установка режима ошибки/сброса прерывания

0 1 0 AI X A A A A

1 1 1 E X X X X X

Таблица 16

Таблица 17

Раздел I.1D

Раздел I.2D

Примечания

0

0

Восьмиразрядный дисплей; 8 знакомест

Левый ввод

1

0

Правый ввод

0

1

Восьмиразрядный дисплей; 16 знакомест (четырехразрядный дисплей; 32 знакоместа)

Левый ввод

1

1

Правый ввод

Таблица 18

K

K

K

Примечания

0

0

0

Режим ввода с клавиатуры

Две клавиши блокируются

Кодирование линий SL0-SL3

0

0

1

Декодирование линий SL0-SL3

0

1

0

Нет блокирования клавиш

Кодирование линий SL0-SL3

0

1

1

Декодирование линий SL0-SL3

1

0

0

Опрос восьми восьмиразрядных портов

Кодирование линий SL0-SL3

1

0

1

Декодирование линий SL0-SL3

1

1

0

Режим стробированного ввода

Кодирование линий SL0-SL3

1

1

1

Декодирование линий SL0-SL3

DD – биты, определяющие режим работы дисплея,

KKK – биты, определяющие режим ввода данных.

Рис. 18. Формат команды установки режима

В каждом из режимов ввода информации с клавиатуры (портов ввода/вывода) возможны следующие варианты работы сканирующих линий:

- режим декодирования – информация на линиях SL0-SL3 изменяется в унитарном коде, и при этом возможна работа без внешнего дешифратора;

- режим кодирования – информация на линиях SL0-SL3 изменяется в двоичном коде.

В микролабе используется режим кодирующего сканирования.

В режиме ввода данных с клавиатуры матрицы клавиш сканируются линиями SL0-SL3. При обнаружении нажатой клавиши формируется сигнал запроса прерывания для процессора, и код нажатой клавиши вводится в строку ОЗУ FIFO. Если до очередного нажатия клавиши предыдущая информация не считана из ОЗУ FIFO, то в первую строку ОЗУ FIFO вводится код нажатой клавиши со сдвигом ранее введенной информации на одну строку. Состояние ОЗУ FIFO может быть определено при выполнении операции чтения регистра слова состояния, представленной на рисунке 19.

Возможны следующие варианты ввода данных с клавиатуры:

  1. с запрещением нажатия двух клавиш;

  2. с разрешением нажатия нескольких клавиш.

S/E – флажок установки режима опроса портов/флаг ошибки режима клавиатуры.

Рис. 19. Формат команды чтения регистра слова состояния

В первом случае при одновременном нажатии двух или нескольких клавиш блокируется ввод данных в ОЗУ FIFO, и ввод не производится до тех пор, пока в матрице клавиатуры не останется только одна нажатая клавиша. Во втором случае при одновременном нажатии двух (нескольких) клавиш их коды вводятся в ОЗУ FIFO в порядке их сканирования. При нажатии двух клавиш в течение одного цикла сканирования вводится сигнал запроса прерывания и бит ошибки Е в слове состояния ОЗУ FIFO. При одновременном нажатии двух клавиш, но в разных циклах сканирования клавиатуры, коды нажатых клавиш вводятся в ОЗУ FIFO обычным образом. Формат данных FIFO в режиме сканирования представлен на рисунке 20.

В режиме стробированного ввода информация с линий RL0 – RL7 вводится в ОЗУ FIFO по фронту импульса на линии КОНТР. При выполнении команды программной очистки (рисунок 21) ОЗУ дисплея заполняется определенным кодом, а ОЗУ FIFO очищается. Программирование битов DDD приведено в таблице 19.

Состояние линий КОНТР и СДВ

Состояние сканирующих линий в момент замыкания клавиш замыкания клавиш

Двоичный номер линий RL0 – RL7, с которыми соединяется нажатая клавиша

Рис. 20. Формат данных FIFO в режиме сканирования

DDD – код, управляющий очисткой дисплея,

F – бит, управляющий очисткой FIFO,

0 – бит общей очистки FIFO и дисплея.

Рис. 21. Формат команды программной очистки

Таблица 19

D

D

D

Примечание

0

0

X

Запись в ОЗУ дисплея нулей

0

1

0

Заполнение ОЗУ дисплея кодом пробела

0

1

1

Заполнение ОЗУ дисплея единицами

1

X

X

Заполнение ОЗУ дисплея нулями

В контролере КР 580ВВ79 предусмотрена возможность программного задания частоты на линиях сканирования SL0 – SL3. Управление частотой сканирования выполняется программированием второй ступени делителя частоты сигналов на входе CLK БИС. Коэффициент деления задается специальной командой и может принимать значения от 2 до 31. Формат команды представлен на рисунке 22.

PPPPP – коэффициенты деления второй ступени делителя.

Рис. 22. Формат команды программного задания частоты

Выполнение программной очистки или подачи сигнала сброса на БИС устанавливает коэффициент деления, равный 31. Коэффициент деления первой ступени равен 100. Команда чтения данных из ОЗУ дисплея (рисунок 23) выполняется следующим образом: в регистр управляющего слова заноситься код команды ЧТЕНИЕ ОЗУ ДИСПЛЕЯ, в котором указан адрес ячейки ОЗУ дисплея. После записи этой команды в контроллер информация из данной ячейки записывается в регистр данных БИС. Далее выполняется операция Чтение регистра данных. Для чтения следующей строки ОЗУ дисплея необходимо вновь проделать все операции.

АААА – адрес ячейки ОЗУ дисплея,

AI – бит установки режима автоинкрементной адресации.

Рис. 23. Формат команды чтения из ОЗУ дисплея

В контроллере имеется режим автоинкрементной адресации ОЗУ дисплея. Для этого в команде ЧТЕНИЕ ОЗУ ДИСПЛЕЯ AI устанавливается в 1 и указывается начальный адрес ОЗУ дисплея. После каждого чтения регистра данных в этот регистр будет заносится информация из следующей ячейки ОЗУ дисплея. Команда ЗАПИСЬ В ОЗУ ДИСПЛЕЯ работает аналогично команде ЧТЕНИЕ ОЗУ ДИСПЛЕЯ. Формат команды представлен на рисунке 24.

АААА – адрес ячейки ОЗУ дисплея.

Рис. 24. Формат команды записи в ОЗУ дисплея

Команда ЧТЕНИЕ ОЗУ ВВОДА /FIFO (рисунок 25) работает аналогично команде ЧТЕНИЕ ОЗУ ДИСПЛЕЯ.

АААА – адрес ячейки ОЗУ дисплея,

AI – бит установки режима.

Рис. 25. Формат команды чтения ОЗУ ВВОДА/FIFO

Сигнал о запросе прерывания БИС сбрасывается при первом чтении информации из ОЗУ ввода (случай, если AI=0). Если бит AI установлен, сброс сигнала Запрос прерывания БИС осуществляется специальной командой (рисунок 26).

Е – бит установки специального режима ошибки при вводе данных с клавиатуры

Рис. 26. Формат команды запроса прерывания БИС

Команда УСТАНОВКИ РЕЖИМА ОШИБКИ/СБРОСА ПРЕРЫВАНИЯ применяется в режиме ввода данных с клавиатуры и в режиме опроса портов ввода. При чтении данных из ОЗУ FIFO (рисунок 25) значение битов AAA и AI безразлично, так как обращение к произвольной строке FIFO невозможно. Чтение данных из ОЗУ FIFO всегда автоинкрементно, при этом читается старшая непрочитанная из ОЗУ FIFO строка. При составлении команды УПРАВЛЕНИЕ БЛАНКИРОВАНИЕМ (запрещением записи в ОЗУ дисплея) следует пользоваться рисунком 27.

Установка битов IA, IB запрещает запись соответственно старшей и младшей половин байта при занесении данных в ОЗУ дисплея. При выводе данных на один из индикаторов, если биты BA, BB установлены, линии порта вывода данных дисплея DA0 – DA3 (DB0 – DB3) сбрасываются в нуль, информация в ОЗУ дисплея при этом не разрушается. Отмена режима отображения данных, установленных этой командой, производится при выполнении этой же команды с инверсными значениями требуемых битов.

BA, BB – биты управления запрещением записи в ОЗУ дисплея (соответственно старшей и младшей половин байта),

IA, IB – биты управления бланкированием портов вывода дисплея DA0 – DA3, DB0 – DB3

Рис. 27. Формат команды управления бланкированием