Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. A) жүректіктік ісінулерде 1 страница
  2. A) жүректіктік ісінулерде 2 страница
  3. A) жүректіктік ісінулерде 3 страница
  4. A) жүректіктік ісінулерде 4 страница
  5. A) жүректіктік ісінулерде 5 страница
  6. A) жүректіктік ісінулерде 6 страница
  7. A) жүректіктік ісінулерде 7 страница

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

 

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

 

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

 

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

 

а б
   
в г
Рис. 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).

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

 

L1: IN port_KB ; А = ´´´ DO 4 DO 3 DO 2 DO 1 DO 0
  MOV C,A ; запоминание кода в регистре C
  ANI 10 h ; A = 0 0 0 D 4 0 0 0 0 (квитирование)
  JZ L1 ; если D 4 = IR = 0, повторный ввод
  OUT port_KB ; сброс флага клавиатуры DO 4 (см. рис. 3.19, б)
  MVI A,0F h ; A = 0 0 0 0 1 1 1 1
  ANA C ; 0 0 0 D 3 D 2 D 1 D 0 – код нажатой клавиши
  MOV C,A ; запоминание в регистре C кода нажатой клавиши
  ANI 0C h ; A = 0 0 0 0 D 3 D 2 0 0
  CPI   ; сравнение старших разрядов кода с числом 8
  JZ L2 ; переход к заданию направления движения
  JC L3 ; переход к заданию скорости движения
  CALL TAB ; подпрограмма чтения таблицы данных
  OUT port_dLT ; запись d ML в регистр младшего байта счетчика M 1 i
  INX H ; адрес старшего байта dMM данных
  MOV A,M ; пересылка dMM в аккумулятор
  OUT port_dMT ; запись d MM в регистр старшего байта счетчика M 1 i
  JMP L1 ; переход на ввод кода клавиши
L2: MOV A,C ; A = 0 0 0 0 D 3 D 2 D 1 D 0 – код нажатой клавиши
  OUT port_ X 2 ; запись D 0 = DAL0 в триггер знака (см. рис. 3.19, а)
  JMP L1  
L3: CALL TAB ; подпрограмма чтения таблицы данных
  OUT port_dLV ; запись d ML в регистр младшего байта счетчика M 1 j
  INX H  
  MOV A,M ; A = dMM
  OUT port_dMV ; запись d MM в регистр старшего байта счетчика M 1 j
  JMP L1  
TAB: LXI H,700 h ; rp H = 0700 h
  MOV A,C ; A = 0 0 0 0 D 3 D 2 D 1 D 0 – код нажатой клавиши
  ADD A ; A = A + A = 2C
  MOV C,A ; формирование в rp B числа, равного
  MVI B,0 ; удвоенному коду клавиши
  DAD B ; HL = HL + BC = 0700 h + 2C – адрес памяти
  MOV A,M ; A = dML – младший байт данных
  RET    

 

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

Если ввод данных с клавиатуры производится по прерыванию (сигнал IR подается на вход RST 7.5), тогда программа обработки прерываний должна начаться с запоминания содержимого регистровых пар, аккумулятора и регистра признаков. Затем следует ввод данных и их анализ.

  PUSH H  
  PUSH B  
  PUSH PSW  
  IN CSKB ; А = ´´´ DO 4 DO 3 DO 2 DO 1 DO 0
  MOV C,A ; запоминание кода в регистре C
  MVI A,0F h ; A = 0 0 0 0 1 1 1 1
  ANA C ; 0 0 0 D 3 D 2 D 1 D 0 – код нажатой клавиши
  MOV C,A ; запоминание в регистре C кода нажатой клавиши
  ANI 0C h ; A = 0 0 0 0 D 3 D 2 0 0
  CPI   ; сравнение старших разрядов кода с числом 8
  JZ L2 ; переход к заданию направления движения
  JC L3 ; переход к заданию скорости движения
  CALL TAB ; подпрограмма чтения таблицы данных
  OUT port_dLT ; запись dML в регистр младшего байта (см. рис. 3.12)
  INX H ; адрес старшего байта dMM данных
  MOV A,M ; пересылка d MM в аккумулятор
  OUT port_dMT ; запись dMM в регистр старшего байта (см. рис. 3.12)
  JMP L1  
L2: MOV A,C ; A = 0 00 0 D 3 D 2 D 1 D 0 – код нажатой клавиши
  OUT port_ X 2 ; запись D 0 = DAL0 в триггер знака (см. рис. 3.19, а)
  JMP L1  
L3: CALL TAB ; подпрограмма чтения таблицы данных
  OUT port_dLV ; запись d ML в регистр младшего байта счетчика ; M 1 j , рис. 3.16
  INX H  
  MOV A,M ; A = dMM
  OUT port_dMV ; запись d MM в регистр старшего байта счетчика ; M 1 j , рис. 3.16
  JMP L1  
TAB: LXI H,700 h ; rp H = 0700 h
  MOV A,C ; A = 0 0 0 0 D 3 D 2 D 1 D 0 – код нажатой клавиши
  ADD A ; A = A + A = 2C
  MOV C,A ; формирование в rp B числа, равного
  MVI B,0 ; удвоенному коду клавиши
  DAD B ; HL = HL + BC = 0700 h + 2C – адрес памяти
  MOV A,M ; A = d ML – младший байт данных
  RET    
L1: POP PSW  
  POP B  
  POP H  
  EI   ; разрешение всех прерываний (после следующей ; команды)
  RET   ; возврат из подпрограммы обработки прерываний ; RST 7.5

 

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

Через этот приемопередатчик осуществляется связь системной шины данных с внешними устройствами. На рис. 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 в приемопередатчике процессора, т. е. на системную шину данных, а затем от DA к DB в приемопередатчике внешних устройств, т. е. от системной шины данных к локальной и далее во внешнее устройство.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

○ дисплей.

 

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

 

Таблица 3.13 Адресация внешних устройств
Сигнал Адрес Селектируемое устройство
20 h –27 h Дисплей
28 h –2F h Клавиатура
2C h /2D h Регистр мл. байта счетчика M 1 i
38 h –3F h Регистр ст. байта счетчика M 1 i
68 h –6F h Триггер X2
70 h –77 h Регистр мл. байта счетчика M 1 j
78 h –7F h Регистр ст. байта счетчика M 1 j
     
Рис. 3.22. Дешифратор адресов внешних устройств

 

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

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

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

 

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

 

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

Данные D 7–0 должны подаваться с системной шины данных BD 7–0 через приемопередатчик (см. рис. 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),

где v j*– предыдущее значение скорости цели, vj – текущее значение скорости. Постоянный прямой ток через сегмент I max = 10 мА.

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

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

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

Управление драйвером дисплея происходит согласно сигналам кода данных ID и адреса разряда DA (см. табл. 3.15–3.16).

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

  MVI A, 0011 b  
  OUT 24 h  

 

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

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

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

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

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

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

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

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

 

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

 

 

DN1 DN2 DN3 DN4 DN5  
TN VS1 VN1 VS2 VN2  
20 h 21 h 22 h 23 h 24 h – катоды (OUT port)
      803 h 804 h – адрес ячейки памяти

 

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


Дата добавления: 2015-12-08; просмотров: 70 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.018 сек.)