Гайворонский Д. В., Новосельцева Т. Я. 3 страница

Интерфейсные схемы шифратора клавиатуры подключают к системной шине данных 4-разрядный код нажатой клавиши помощью буфера данных, показанного на рис. 3.19, в. Перепадом сигнала IR с 0 на 1 D-триггер

Рис. 3.17. Схема шифратора клавиатуры

Рис. 3.18. Временные диаграммы работы шифратора клавиатуры

устанавливается в состояние 1 (рис. 3.19, б). С выхода триггера флаг клавиатуры FKB = DO4 = 1 подается на буфер данных 74244b вместе с 4-разрядным кодом клавиатуры DO3DO2DO1DO0. При выполнении команды IN CSKB с дешифратора адреса поступает значение сигнала = 0 (chip select keyboard), а с шины управления – значение = 0, что приводит к появлению значения сигнала = Ú = 0, разрешающего передачу по шине данных 5-разрядного кода в аккумулятор CPU.

а б
в Гайворонский Д. В., Новосельцева Т. Я. 3 страница г
Рис. 3.19.Интерфейсные схемы клавиатуры: а – формирователь X2; б – флаг клавиатуры; в – формирователь шины данных для ввода; г – расположение клавиш

Анализ назначения нажатой клавиши. Функциональное назначение клавиш показано на рис. 3.19, г: клавиши k = 0, 1, ¼ , 7 задают скорость движения цели vj (j = k), k = 8 и 9 – направление движения цели (клавиши 10 и 11 не используются), k = 12, 13, 14, 15 – период Ti сигнала G (i = 1, 2, 3, 4).

Коды этих трех групп клавиш различаются значением двух старших разрядов DO3DO2: 10 – направление движения; 00 и 01 – значение скорости vj; 11 – значение периода Ti. Для принятия решения маской 00001100 выделяются разряды DO3DO2, и содержимое аккумулятора сравнивается с числом 8: содержимое равно 8, если нажатая клавиша имеет коды 10´´ Гайворонский Д. В., Новосельцева Т. Я. 3 страница; (клавиши направления движения); содержимое больше 8, если нажатая клавиша имеет коды 11´´ (клавиши значений периода Ti); содержимое меньше 8, если нажатая клавиша имеет коды 0´´´ (клавиши значений скорости vj). Программа обслуживания клавиатуры при использовании МЭ (два 16-разрядных счетчика для задания периода и один 16-разрядный счетчик для задания скорости движения vj и программного ввода данных с квитированием имеет вид (заданы адреса клавиатуры – 28h, триггера направления – 68h).

L1: IN port_KB ; А = ´´´ DO4DO3DO2DO1DO0
MOV C,A ; запоминание кода в регистре C
ANI 10h ; A = 0 0 0 D4 0 0 0 0 (квитирование)
JZ L1 ; если D4 = IR = 0, повторный Гайворонский Д. В., Новосельцева Т. Я. 3 страница ввод
OUT port_KB ; сброс флага клавиатуры DO4 (см. рис. 3.19, б)
MVI A,0Fh ; A = 0 0 0 0 1 1 1 1
ANA C ; 0 0 0 D3D2D1D0 – код нажатой клавиши
MOV C,A ; запоминание в регистре C кода нажатой клавиши
ANI 0Ch ; A = 0 0 0 0 D3D2 0 0
CPI ; сравнение старших разрядов кода с числом 8
JZ L2 ; переход к заданию направления движения
JC L3 ; переход к заданию скорости движения
CALL TAB ; подпрограмма чтения таблицы данных
OUT port_dLT ; запись dML в регистр младшего байта счетчика M1i
INX H ; адрес старшего байта dMM данных
MOV A,M ; пересылка dMM в аккумулятор
OUT port_dMT ; запись dMM в регистр старшего Гайворонский Д. В., Новосельцева Т. Я. 3 страница байта счетчика M1i
JMP L1 ; переход на ввод кода клавиши
L2: MOV A,C ; A = 0 0 0 0 D3D2D1D0 – код нажатой клавиши
OUT port_X2 ; запись D0 = DAL0 в триггер знака (см. рис. 3.19, а)
JMP L1
L3: CALL TAB ; подпрограмма чтения таблицы данных
OUT port_dLV ; запись dML в регистр младшего байта счетчика M1j
INX H
MOV A,M ; A = dMM
OUT port_dMV ; запись dMM в регистр старшего байта счетчика M1j
JMP L1
TAB: LXI H,700h ; rp H = 0700h
MOV A,C ; A = 0 0 0 0 D3D2D1D0 – код нажатой клавиши
ADD A ; A Гайворонский Д. В., Новосельцева Т. Я. 3 страница = A + A = 2C
MOV C,A ; формирование в rp B числа, равного
MVI B,0 ; удвоенному коду клавиши
DAD B ; HL = HL + BC = 0700h + 2C – адрес памяти
MOV A,M ; A = dML – младший байт данных
RET



Для таблицы данных отведена область ПЗУ, начинается с адреса 0700h. Для хранения двухбайтовых чисел используются две соседние ячейки памяти с адресами A и A + 1. Подпрограмма TAB определяет адрес младшего байта данных и читает его из ПЗУ. Для определения адреса A по коду нажатой клавиши к начальному адресу 0700h прибавляется удвоенный код клавиши. Таким образом, по коду клавиши, например, с номером k = 2, задающей в Гайворонский Д. В., Новосельцева Т. Я. 3 страница соответствии с рис. 3.19, г скорость v2, определяются адреса двух ячеек памяти 0704h и 0705h, где хранятся соответственно младший и старший байты числа . При выполнении команды OUT port_KB на ЛЭ ИЛИ (см. рис. 3.19, б) поступают сигналы = 0 и = 0, на выходе ЛЭ вырабатывается сигнал = 0, устанавливающий триггер флага клавиатуры в состояние Q = 0, что приводит к сбросу флага клавиатуры (сигнал DO4 = 0). При выполнении команды OUT CSX2 по сигналам =0 и = 0 вырабатывается сигнал a = 0 (см. рис. 3.19, а), перепадом с 0 на 1 которого в триггер знака x2 записывается значение разряда BD0 = DO0.

Если ввод данных с клавиатуры производится по прерыванию (сигнал IR подается на вход RST7.5), тогда программа обработки прерываний Гайворонский Д. В., Новосельцева Т. Я. 3 страница должна начаться с запоминания содержимого регистровых пар, аккумулятора и регистра признаков. Затем следует ввод данных и их анализ.

PUSH H
PUSH B
PUSH PSW
IN CSKB ; А = ´´´ DO4DO3DO2DO1DO0
MOV C,A ; запоминание кода в регистре C
MVI A,0Fh ; A = 0 0 0 0 1 1 1 1
ANA C ; 0 0 0 D3D2D1D0 – код нажатой клавиши
MOV C,A ; запоминание в регистре C кода нажатой клавиши
ANI 0Ch ; A = 0 0 0 0 D3D2 0 0
CPI ; сравнение старших разрядов кода с числом 8
JZ L2 ; переход к заданию направления движения
JC L3 ; переход к заданию скорости движения
CALL TAB ; подпрограмма чтения таблицы данных
OUT Гайворонский Д. В., Новосельцева Т. Я. 3 страница port_dLT ; запись dML в регистр младшего байта (см. рис. 3.12)
INX H ; адрес старшего байта dMM данных
MOV A,M ; пересылка dMM в аккумулятор
OUT port_dMT ; запись dMM в регистр старшего байта (см. рис. 3.12)
JMP L1
L2: MOV A,C ; A = 0 00 0 D3D2D1D0 – код нажатой клавиши
OUT port_X2 ; запись D0 = DAL0 в триггер знака (см. рис. 3.19, а)
JMP L1
L3: CALL TAB ; подпрограмма чтения таблицы данных
OUT port_dLV ; запись dML в регистр младшего байта счетчика ; M1j, рис. 3.16
INX H
MOV A,M ; A = dMM
OUT port_dMV ; запись dMM в регистр Гайворонский Д. В., Новосельцева Т. Я. 3 страница старшего байта счетчика ; M1j, рис. 3.16
JMP L1
TAB: LXI H,700h ; rp H = 0700h
MOV A,C ; A = 0 0 0 0 D3D2D1D0 – код нажатой клавиши
ADD A ; A = A + A = 2C
MOV C,A ; формирование в rp B числа, равного
MVI B,0 ; удвоенному коду клавиши
DAD B ; HL = HL + BC = 0700h + 2C – адрес памяти
MOV A,M ; A = dML – младший байт данных
RET
L1: POP PSW
POP B
POP H
EI ; разрешение всех прерываний (после следующей ; команды)
RET ; возврат из подпрограммы обработки прерываний ; RST 7.5

3.7. Приемопередатчик, обслуживающий внешние устройства схемы

Через этот приемопередатчик осуществляется связь системной шины данных с Гайворонский Д. В., Новосельцева Т. Я. 3 страница внешними устройствами. На рис. 3.20 представлена схема приемопередатчика, в котором шина DB[7..0] подключена к локальной шине DAL[7..0], а шина DA[7..0] – к системной шине DBS[7..0]. При T = 1 обеспечивается передача от шины DA приемопередатчика к шине DB. Сигнал T = = , поэтому при выполнении команды IN port сигнал = 0 и приемопередатчик передает данные от внешнего устройства через локальную шину DB к системной шине DA, а далее от системной шины процессора через приемопередатчик процессора к локальной шине и в процессор. При выполнении

Рис. 3.20. Приемопередатчик внешних устройств

команды OUT port сигнал = 1, происходит передача данных от DA к DB в приемопередатчике процессора, т. е. на системную шину данных, а затем Гайворонский Д. В., Новосельцева Т. Я. 3 страница от DA к DB в приемопередатчике внешних устройств, т. е. от системной шины данных к локальной и далее во внешнее устройство.

3.8. Дешифратор адресов

При работе имитатора CPU обращается к следующим устройствам:

две схемы памяти (ПЗУ и ОЗУ):

Рис. 3.21. Дешифратор адресов схем памяти

○ ПЗУ 573РФ2 объемом 2K ´ 8 бит (для хранения программного обеспечения и таблицы данных);

○ ОЗУ 537РУ10 объемом 2K ´ 8 бит (для стека и хранения данных).

Поэтому необходимо использовать два дешифратора адресов – адресов схем памяти и адресов внешних устройств. Дешифратор адресов схем памяти выполнен на МЭ 74138 (рис. 3.21). Назначение выходных сигналов дешифратора, значения начальных ABEG и конечных AEND адресов представлены в табл Гайворонский Д. В., Новосельцева Т. Я. 3 страница. 3.12.

При построении схемы на макроэлементах, в состав которой входят два 16-разрядных счетчика, число внешних устройств увеличивается до восьми:

○ регистр младшего байта данных в делителе на

○ регистр старшего байта данных в делителе на

○ регистр младшего байта данных в делителе на

○ регистр старшего байта данных в делителе на

○ триггер знака ;

○ контроллер клавиатуры;

○ дисплей.

Таблица 3.12 Адреса схем памяти
Адрес A15– A14 A13–A11 A10 – A8 A7 – A0 A15–0
ПЗУ AB 0000h
AE 07FFh
ОЗУ AB 0800h
AE 0FFFh
SP = AE + 1 1000h

Таблица 3.13 Адресация внешних устройств
Сигнал Адрес Селектируемое устройство
20h–27h Дисплей
28h–2Fh Клавиатура
2Ch/2Dh Регистр мл. байта счетчика M1i Гайворонский Д. В., Новосельцева Т. Я. 3 страница
38h–3Fh Регистр ст. байта счетчика M1i
68h–6Fh Триггер X2
70h–77h Регистр мл. байта счетчика M1j
78h–7Fh Регистр ст. байта счетчика M1j
Рис. 3.22. Дешифратор адресов внешних устройств

Для создания схемы дешифратора адресов внешних устройств, обязанной обеспечить заданный адрес 28h, выбираем значения разрешающих адресных сигналов BA7 = 0, BA5 = 1, а на адресные входы С, B и A подаем сигналы BA6, BA4 и BA3 (сигналы BA2–0 не поступают на схему). Таблица 3.13 показывает адреса и названия внешних устройств, селектируемых дешифратором. На рис. 3.22показана схема дешифратора адресов внешних устройств.

3.9. Организация памяти

Принципиальная схема памяти изображена на рис. 3.23: 573РФ2 – ПЗУ объемом Гайворонский Д. В., Новосельцева Т. Я. 3 страница 2 K ´ 8 бит, 537РУ10 – ОЗУ объемом 2K ´ 8 бит. Выбор ПЗУ производится значением сигнала = 0, а выбор ОЗУ – значением сигнала = 0. Адресные сигналы BA10–0 подаются непосредственно на адресные входы БИС и обеспечивают адресацию 2K 8-разрядных ячеек памяти от адреса 0000h до адреса 07FFh для ПЗУ и от адреса 0800h до адреса 0FFFh для ОЗУ (см. табл. 3.12). Чтение ПЗУ и ОЗУ производится значением сигнала = 0, а запись данных в ОЗУ – сигналом = 0. Обычно под стек

Рис. 3.23. Схема подключения памяти

отводится часть ОЗУ, занимающая старшие адреса, поэтому инициализацию стека следует производить командой LXI SP,1000h.

Данные D7–0 должны подаваться с системной шины данных BD7–0 через приемопередатчик Гайворонский Д. В., Новосельцева Т. Я. 3 страница (см. рис. 1.3). При обращении CPU к другим устройствам (пульт управления, плата расширения системы) этот приемопередатчик должен быть выключен, поэтому следует правильно определить управляющий приемопередатчиком сигнал .

3.10. Дисплей

Пульт управления (ПУ) состоит из клавиатуры и дисплея. Значения параметров Ti и vj задаются с клавиатуры. Дисплей выполняется на базе 5-разрядного 7-сегментного светодиодного индикатора АЛС328В (рис. 3.24, а–г). Cхема контроллера дисплея приведена на рис. 3.24, д.

разряд 1 – индикация числа (период Ti),

разряды 2 и 3 – индикация направления b/F («–» – back, «+» – Forward) и числа (скорость vj* ),

разряды 4 и 5 – индикация направления b/F и числа (скорость vj),

где vj*– предыдущее значение скорости цели, vj – текущее значение скорости. Постоянный Гайворонский Д. В., Новосельцева Т. Я. 3 страница прямой ток через сегмент Imax = 10 мА.

Таблица 3.14
Функции управляющих сигналов
Вход Значение
MODE 1 – HEX код Z-состояние – код B 0 – дисплей погашен
0 – загрузка 1 – нет загрузки

Принципиальная схема и схема подключения дисплея изображены на рис. 3.24. Управление дисплеем производится при помощи специализированной микросхемы ICM7218C [4] как обычным внешним устройством. Для конфигурации схемы драйвера необходимо на вход MODE подать одно из трех логических состояний (см. табл. 3.14).

Таблица 3.15
Коды управляющих катодов светоизлучающих диодов
Порт внешнего устройства Линии данных Унитарный код Номер разряда
20h D1
21h D2
22h D3
23h D4
24h D5
25h D6
26h D7
27h D8

Управление драйвером дисплея происходит согласно Гайворонский Д. В., Новосельцева Т. Я. 3 страница сигналам кода данных ID и адреса разряда DA (см. табл. 3.15–3.16).

Например, на пятый разряд необходимо вывести число 3. Для этого на шину записывается код пятого разряда 100, а на шину код числа «3» – 0011.

MVI A, 0011b
OUT 24h

Переменные: TN = 1, 2, 3, 4 (период зондирующих импульсов);

– VS1 = (знак предыдущей скорости);

– VN1 = 0, 1, .., 7 (модуль предыдущей скорости);

– VS2 = (знак текущей скорости);

– VN2 = 0, 1, ..., 7 (модуль текущей скорости);

– DN = 0, 1, 2, 3, 4 (номер разряда дисплея).

Для хранения значений кодов предыдущего направления и скорости в

ОЗУ резервируются 2 ячейки памяти. Первая ячейка (с адресом 0803h) соответствует предыдущему направлению, вторая (с адресом 0804h) – предыдущей скорости.

Рис. 3.24. Контроллер 5-разрядного 7-сегментного дисплея

DN1 DN2 DN3 DN4 DN5
TN Гайворонский Д. В., Новосельцева Т. Я. 3 страница VS1 VN1 VS2 VN2
20h 21h 22h 23h 24h – катоды (OUT port)
803h 804h – адрес ячейки памяти

Процесс вычисления значения разряда дисплея происходит следующим образом: если нажата клавиша скорости, значение которой лежит в пределах 0…7, то код нажатой клавиши отправляется непосредственно по адресу требуемого разряда дисплея.


documentapebroz.html
documentapebyzh.html
documentapecgjp.html
documentapecntx.html
documentapecvef.html
Документ Гайворонский Д. В., Новосельцева Т. Я. 3 страница