Лекция 14. Организация введения и выведения информации в микропроцессорных системах

advertisement
Лекция 14.
Организация введения и
выведения информации в
микропроцессорных системах
Подсистемы ввода/вывода
Подсистемы ввода/вывода (ПВВ) осуществляют передачу
данных между микроЭВМ и внешними (периферийными)
устройствами.
Для построения подсистем ввода/вывода используют
различные интерфейсы. Рассмотрим пример реализации
подсистемы ввода/вывода с помощью микросхемы параллельного
программируемого интерфейса КР580ВВ55.
Внешнее устройство, передающее данные в микроЭВМ,
представим в виде регистра тумблеров. Замкнутое положение
тумблера
соответствует
подаче
логического
нуля
на
соответствующий вход, разомкнутое – логической единицы.
Программирование микросхемы КР580ВВ55
Ввод данных в микроЭВМ
PPI
DIO
PA
PC
1
A1
A0
RD
WR
CS
RESET
+5 В
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
Для организации передачи, выставленных внешним устройством
данных,
в
микроЭВМ
с
помощью
микросхемы
параллельного
программируемого интерфейса КР580ВВ55 порт B микросхемы необходимо
запрограммировать на чтение.
Для приведения микросхемы в исходное состояние, необходимо на вход
RESET подать высокий уровень сигнала – произойдет установка режима 0 и все
порты установятся в режим ввода.
Загрузка слова управления микросхемы КР580ВВ55
PPI
1XXXX01X
DIO
PA
PC
1
1
1
0
0
0
A1
A0
RD
WR
CS
RESET
+5 В
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
Далее в микросхему необходимо загрузить слово
управления. Для этого в соответствии с форматом слова
управления микросхемы на шину данных необходимо выставить
код 1XXXX01X, в соответствии с таблицей истинности на входы
A1, A0, RD подать логическую единицу, а на входы CS и WR –
логический нуль.
Теперь если подать команду чтения из порта B ( RD = A1 =
0, WR = A0 = 1), то выставленные на входе порта B данные будут
переданы на шину данных микроЭВМ.
Вывод данных из микроЭВМ
В качестве устройства, принимающего данные от
микроЭВМ, возьмем алфавитно-цифровой индикатор, состоящий
из двух семисегментных индикаторов и двух микросхем ПЗУ. В
микросхемах ПЗУ запрограммированы коды, необходимые для
отображения шестнадцатеричных цифр.
Выход микросхем ПЗУ построен по схеме с открытым
коллектором, поэтому, если выходной транзистор открыт, на
выходе соответствующего разряда ПЗУ будет низкий уровень
сигнала. При этом через светодиод (сегмент) индикатора будет
проходить ток, и он будет светиться.
Организация вывода данных на внешнее устройство
A ROM
PPI
1000XXXX
1
1
1
0
0
0
DIO
A1
A0
RD
WR
CS
RESET
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
DO
CS
A ROM
DO
PC
CS
PB
Для программирования порта A на вывод информации в
микросхему необходимо загрузить слово управления 1000XXXX
(A1 = A0 = RD = 1, CS и WR = 0).
Вывод данных на внешнее устройство
A ROM
PPI
01010011
0
0
1
0
0
0
DIO
A1
A0
RD
WR
CS
RESET
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
DO
CS
A ROM
DO
PC
CS
PB
Теперь если выдать команду записи в порт A
(WR = A1 = A0 = 0, RD = 1), то данные с шины данных микроЭВМ
будут переданы через порт A и в шестнадцатеричном формате
высвечены на алфавитно-цифровом индикаторе.
Ввод данных в микроЭВМ с клавиатуры
Для организации ввода данных в микроЭВМ с клавиатуры
также можно использовать параллельный интерфейс.
PPI
1XXX10X0
1
1
1
0
0
0
DIO
A1
A0
RD
WR
CS
RESET
PA
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
C
D
E
F
8
9
A
B
4
5
6
7
0
1
2
3
PB
Строки подсоединяют к старшей части порта С, столбцы –
к младшей. Для распознавания нажатой клавиши используется
процедура сканирования клавиатуры. Младшую половину порта C
настраивают на вывод, а старшую – на ввод. Для чего в
микросхему загружают слово управления 1XXX10X0 (A1 = A0 =
RD = 1, CS и WR = 0).
Опрос клавиатуры
PPI
ХXXX0001
ХXXX0010
ХXXX0100
ХXXX1000
1
0
1
0
0
0
DIO
A1
A0
RD
WR
CS
RESET
PA
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
C D E F
8
9
A B
4
5
6
7
0
1
2
3
PB
Через младшую половину порта С с определенной частотой
поочередно выводятся 4-разрядные двоичные слова, такие, что
только один разряд равен логической единице, а остальные –
логическому нулю. Причем в каждом следующем слове
логическая единица смещается в следующий разряд.
Опрос клавиатуры
PPI
0000XXXX
0100XXXX
0000XXXX
0000XXXX
1
0
0
1
0
0
DIO
A1
A0
RD
WR
CS
RESET
PA
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
C
D
E
F
8
9
A
B
4
5
6
7
0
1
2
3
PB
После каждого вывода кода через младшую половину порта С
осуществляется считывание данных со старшей половины (опрос) порта C.
Опрос клавиатуры
Так как строки через резисторы присоединены к общему
проводу, то, если в момент опроса не будет нажата ни одна
клавиша, считывание данных даст код 0000.
В связи с тем что период опроса в несколько десятков раз
меньше времени нажатия на клавишу, при нажатии на клавишу
опрос приведет к появлению логической единицы в
соответствующем нажатой клавише разряде кода.
Например, нажатие клавиши 3 приведет к считыванию
старшей половиной порта С кода 0001. Зная этот код и текущий
код младшей половиной порта C, программно нетрудно
определить нажатую клавишу и выполнить соответствующее
действие.
Download