Операция ввода или вывода включает в себя передачу данных из (или) требуемой периферии. Микропроцессор является ядром всех операций. Ввод соответствует потоку данных в МП, вывод — из МП. Ячейки, куда данные входят или выходят, называются обычно портами ввода или вывода.
Согласно табл. 1 оказывается, что наш МП использует команды IN или OUT для передачи данных посредством портов ВВ. Реализация этих команд показана на рис. 1, а.
Рис. 1. Ввод/вывод данных и сигналы МП:
а – при изолированном ВВ; б – при ВВ по принципу доступа в память
Мнемониками являются IN и OUT для вводов и выводов соответственно; рис. 1, а дает форматы и КОП этих команд, которые соответствуют номеру периферии или адресу порта. Адрес порта (1 байт) позволяет выбрать одни из 256 (28) портов, и адрес передается восемью адресными линиями младших разрядов (А0 —А7). На рис. 1, а представлены также два дополнительных выхода сигналов управления. При операции OUT используется особый сигнал ВВ запись, т. е. ; в случае операции IN — ВВ считывание, т. е. . Это два L-активных сигнала. Использование специального управления, такого, как и , соответствует изолированному ВВ или вводу/выводу через аккумулятор.
Передача данных, выполняемая на основе команд IN и OUT, классифицируется как программно-контролируемый ВВ, т. е. ею управляют команды программы. Передача данных может быть вызвана периферией, выдающей сообщение типа «Я готова выдать (или принять) данные». Чтобы вовлечь МП, периферия использует прерывания (вспомним, что когда МП получает запрос на прерывание, он завершает выполнение текущей команды, затем ветвится на подпрограмму обслуживания прерывания, эта подпрограмма может содержать или не содержать операции ВВ).
Программно-управляемый ВВ может быть выполнен двумя способами: первый — изолированный ВВ (см. рис. 1, а) выполняется посредством команд IN и OUT; по второму — положение входов и выходов определяется как адреса обычной памяти. Второй способ ВВ реализуется по принципу доступа в память, и тогда используются обычные команды. Обратимся к рис. 1, б, где мы использовали команду прямого размещения содержимого аккумулятора STA при выводе данных в порт вывода; на том же рисунке тот же тип команды использован затем и для ввода данных (команда LDA). Мы видим здесь, что адресные линии должны быть декодированы и служат для выбора адреса порта ввода или порта вывода.
Используются также обычные сигналы управления и . Таким образом, для ввода и вывода данных по принципу доступа в память могут быть использованы все команды обращения.
Последний способ, очевидно, наиболее распространен и может быть применим в любом МП. Метод изолированного ВВ применим только в МП, снабженных как командами IV и OUT, так и специальными выводами управления ВВ при записи и считывании.
Обычно под выводом подразумевают вывод па периферию. Однако па практике выводы попадают не сразу на периферию, а в устройство памяти, где помещаются данные для периферии (см. рис. 1 главы "Интерфейс микропроцессора", где мы ввели адаптеры интерфейса ввода и вывода, которые являются ни чем иным, как устройствами памяти, и которые обладают всеми их свойствами).
Таблица 1 – Команды передачи данных типового микропроцессора
На рисунке 2, а изображен интерфейс МП с периферией.
Рисунок – 2. Интерфейс:
а — периферии с отдельным битом; б — с семисегментным индикатором
Отметим, что в качестве индикатора выхода здесь стоит фотодиод, а адаптер интерфейса вывода содержит 1)-триггер. Предположим, что МП выполняет команду прямого размещения содержимого аккумулятора (А) =0000 0001. Если предположить также адрес 8000Н, то линия А15 будет находиться в Н-активном состоянии и активизирует нижний вход элемента И. Некоторое время спустя Н-активный сигнал появляется на линии D0 шины данных. Сигнал управления записью переходит к L-уровню и активизирует элемент И, который запирает 1 в D-триггере. На выходе D-триггера Н-сигналом зажигается фотодиод (или индикатор бита). В качестве примера на рис. 2, а показан процесс индикации единственного бита данных.
Интерфейс вывода на рис. 2, 6 несколько сложнее. Он передает 8 бит данных МП в адаптер интерфейса вывода через шину данных. Адаптер помещает данные в 8-разрядную защелку обычным способом. Заметим, что адресная линия А15 должна быть в Н-состоянии, тогда как вывод управления записью должен быть в L-состоянии в течение времени, необходимого для того, чтобы запереть данные в семисегментном индикаторе. Каждый сегмент индикатора (а — g и десятичная точка) работает так же, как отдельный диод на рис. 2, а. Запертый в любом выводе защелки Н-сигнал вызывает свечение соответствующего сегмента.
На рисунке 3, а представлено другое периферийное устройство и его интерфейс с МП.
Рисунок 3 - Интерфейс:
а — при вводе единичной коммутации; б — при вводе с клавиатуры
Здесь речь идет о простом коммутаторе, позволяющем выбрать логический L- или Н-уровень. Отдельная линия данных соединена с вводом D-триггера внутри адаптера. Когда МП выполняет команду типа ЗАГРУЗИТЬ А прямо из ячейки памяти 8000Н, элемент И активизируется, захватывая входные данные. Буфер вывода становится разрешенным, что позволяет данным расположиться вдоль отдельной линии Do шины данных. Микропроцессор принимает бит HIGH с шины данных и передает его в аккумулятор. Интервал спустя элемент И сбрасывается. Выход адаптера интерфейса ввода затем запрещается и переводится в состояние высокого сопротивления, он не оказывает больше влияния на другие передачи на шину данных.
На рис. 3 мы используем способ ВВ по принципу доступа в память. Обычно несколько адресных линий декодируются одним адресным дешифратором для того, чтобы активизировать линию выбора устройства. На рис. 3, б приведена расширенная система ввода одного отдельного бита. Здесь параллельные данные объемом 8 бит вводятся с клавишного устройства. Управление считыванием и простая адресация те же, что и в предыдущем примере.
Организация ВВ по принципу доступа в память используется очень распространенными микропроцессорами, такими, как Motorola 6800 и МОП-технологии 6502. Изолированный ВВ (иногда называемый канальным ВВ данных) используется таким семейством микропроцессоров, как Intel 8080/8085 и Zilog 80.