Разработка микропроцессорной системы на базе микропроцессора I-8088, содержащей: RAM – 4 кб; ROM –2 кб; периферия – I-8255, I-8279, страница 8

ПЗУ AT28C17 имеет возможность записи. Эта возможность не используется, поэтому ~WE подключен к питанию. Поэтому же не требуется выход RDY/~BUSY. ~OE также как и для ОЗУ заземлен. На ~CEL подается ноль, когда IO/~M низкий, а A12 высокий. Для адресации используются A0-A10.

Карта памяти в итоге выглядит следующим образом:

00000h – 00FFFh – RAM

01000h – 017FFh – ROM

01800h – FFFFFh – свободно

Теперь рассмотрим периферию. У ППИ (I-8255) есть четыре внутренних регистра: порт A, порт B, порт C и регистр команд. С каким регистром работать определяется входами A0 и  A1. Вход ~CS получает ноль только если A5, A6 и IO/~M имеют высокий уровень. Из этого следует, что ППИ подключается на порты 60h-63h (специально отведенные для него в процессоре): порт A – 60h, порт B – 61h, порт C – 62h, регистр команд – 63h. Порт определяется значением, которое необходимо выставить на шину данных, чтобы получить доступ к нужному регистру. Тип операции чтение или запись определяется парой сигналов: ~RD и ~WR, получаемых с процессора.

ПККИ (I-8279) также получает с процессора сигналы ~RD и ~WR. Насчет нагрузочной способности на выходы процессора хотелось бы сказать, что на каждый выход процессора 8088 можно подключать до 10 КМОП устройств или до 5 устройств серии 74ls, т.е ни ~RD, ни ~WR, ни IO/~M не перегружены. ~CS имеет активный уровень при высоких IO/~M и A4. Вход A0 используется либо для доступа к регистру команд/регистру состояния (РК/РС)(A0 = 1), либо для доступа к ОЗУ дисплея/буферу клавиатуры (A0 = 0). Т.е. РК/РС подключен на порт 11h, а ОЗУ/буфер на порт 10h. Прерывания не используются, потому что предполагается программный опрос клавиатуры, поэтому выход IRQ не использован. ~BD в данной ситуации не понадобилась. К ПККИ подключается дисплей из 6 семисегментных индикаторов с общим анодом TDSR0750 и клавиатура на 16 кнопок (CNTL и SHIFT отсутствуют). Клавиатура представляет собой матрицу ключей 4x4. Каждая “строка” подключается к одному RL входу, а каждый “столбец” к декодированному SL выходу. Для клавиатуры можно было обойтись и без дешифратора 74ALS138, но для дисплея он нужен, так выбрать по очереди 6 индикаторов с помощью 4 линий можно только с помощью дешифратора. Максимальный размер подключаемой клавиатуры: 8x8 плюс контрол и шифт. Нагрузочные резисторы для каждой “строки” не нужны, так как они встроены в каждый RL вход. Сканирование клавиатуры происходит следующим образом: с частотой 100кГц на выходы SL0-SL3 поступают числа от 0000 до 1111 с инкрементом 1 (так происходит в кодированном режиме, который выбирается программно). Затем эти числа дешифруются и, на один из четырех столбцов подается ноль. Если какая-то кнопка в этом столбце нажата, то на соответствующий вход RL подается ноль. Если это не дребезг (в 8279 встроено устранение дребезга), то в FIFO буфер клавиатуры записывается байт определяющий нажатую клавишу: CNTL.SHIFT. столбец (закодированный SL).строка (закодированный RL). Дисплей подключается немного по другому. Каждый из выходов дешифратора подключается через резистор в 1 кОм к анодному ключу 2N2907. Это делается для создания подходящей для индикаторов токовой нагрузки. Индикаторы по очереди выбираются дешифрованными сигналами SL. Нужные сегменты на индикаторе выбираются сигналами OUTA0-OUTA3 (e – g, dp), OUTB0-OUTB3 (a - d), которые берут свои значения из ОЗУ дисплея, причем активным сигналом для возбуждения сегмента индикатора является ноль. Для работы с 6 индикаторами сигналы OUTA0-OUTA3, OUTB0-OUTB3 усиливаются буфером, в роли которого выступает I-8286 с заземленными управляющими входами (т.е. он всегда включен и передаёт из B в A). Максимально возможно подключить до 16 индикаторов (за счет дешифрации всех 4 линий SL). Важно заметить, что крайний правый дисплей имеет адрес (в пространстве SL3-SL0) 000h, а крайний левый – 101h.


5. Программирование I-8279

Программирование микросхемы осуществляется с помощью восьми команд.

Общий формат команды: