
- •Глава 1.
- •1 .1. Понятия организации и архитектуры
- •1.2. Архитектура типовой микросистемы
- •1.3. Структура типовой микросистемы
- •1.4. Регистры микропроцессора
- •1.5. Адресация данных
- •Глава 2.
- •2 .1. Вводные замечания
- •2.2. Архитектура вм80
- •2.3. Система команд вм80
- •2.4. Структурная схема вм80
- •2.5. Базовый комплект бис серии кр580
- •2.6. Центральный процессор на базе бис серии кр580
- •2.7. Организация вм85а
- •Глава 3.
- •3.1. Организация программно-управляемого обмена
- •3.2. Периферийные бис
- •3.3. Средства параллельного ввода-вывода
- •3.4. Средства последовательного ввода-вывода
- •3.5. Система прерываний
- •3.6. Программируемый контроллер прерываний вн59
- •3.7. Средства счета времени
- •Глава 4.
- •4 .1. Вводные замечания
- •4.2. Базовая организация ве48
- •4.3. Набор регистров ве48
- •4.4. Организация памяти ве48
- •4.5. Система ввода-вывода и служба реального времени ве48
- •4.6. Система команд ве48
- •4.7. Физический интерфейс ве48
- •4.8. Расширение внутренних ресурсов ве48
- •4.9. Универсальный периферийный адаптер
- •4.10. Базовая организация ве51
- •4.11. Периферийные средства ве51
- •4.12. Система команд ве51
- •4.13. Функциональное описание ве51
- •Глава 5.
- •5 .1. Одноплатный микроконтроллер мМс1204
- •5.2. Средства ввода-вывода и поддержки режима реального времени
- •5.3. Программирование системы ввода-вывода
- •5.4. Программирование средств поддержки режима реального времени
- •Глава 6.
- •6 .1. Вводные замечания
- •6.2. Организация регистров вм86
- •6.3. Организация памяти вм86
- •6.4. Формат команд вм86
- •6.5. Система команд вм86
- •6.6. Структурная схема вм86
- •6.7. Структурные отличия вм88
- •Глава 7.
- •7 .1. Принцип построения
- •7.2. Генератор тактовых импульсов гф84
- •7.3. Системный контроллер вг88
- •7.4. Центральный процессор на базе бис серии к1810
- •7.5. Программируемый контроллер прерываний вн59а
- •7.6. Одноплатный микроконтроллер мМс1212
- •Глава 1. Организация микросистем ……………………………………………………………………………………..
- •Глава 2. Микропроцессоры кр580вм80/к1821вм85а ………………………………………………………………
- •Глава 3. Подсистема ввода-вывода ………………………………………………………………………………………
- •Глава 4. Организация однокристальных микроконтроллеров ……………………………………………………..
- •Глава 5. Организация одноплатных микроконтроллеров на базе кр580вм80 ………………………………
- •Глава 6. Микропроцессор к1810вм86 …………………………………………………………………………………
- •Глава 7. Организация одноплатных микроконтроллеров на базе к1810вм86 ………………………………
5.3. Программирование системы ввода-вывода
В состав модуля мМС1204 входит несколько программируемых устройств: два связных адаптера КР580ВВ51, периферийный адаптер, построенный на базе КР580ВВ55, интервальный таймер КР580ВИ53 и контроллер прерываний КР580ВН59. Приведем значения и мнемонику базовых адресов этих периферийных кристаллов:
-
PSA1
PSA2
PPA
PIT
PIC
EQU
EQU
EQU
EQU
EQU
18H
1AH
14H
1CH
12H
;ПСА1
;ПСА2
;ППА
;Системный таймер
;Контроллер прерываний
Аппаратное окружение устройства в значительной степени предопределяет их функциональное назначение и режим работы. Доопределение функций выполняется на программном уровне. Удобно ввести стандартный низкоуровневый слой ПО реализующий непосредственное управление аппаратурой МК. Использование такого типового программного слоя, содержащего ряд драйверов физических устройств, освобождает программиста от учета их аппаратных особенностей. Организуется новый, не зависящий от аппаратуры программный интерфейс управления общесистемными функциями МК [52].
Для программиста ПУ представляется в виде набора основных и вспомогательных подпрограмм, поддерживающих процесс обмена с ним. Этот набор называют драйвером ПУ. Драйвер ВВ скрывает от программиста техническую организацию устройства, освобождает его от необходимости учитывать множество мелких деталей, связанных с конкретным протоколом обмена. Вместо этого он предоставляет в распоряжение программиста интерфейс программного уровня.
Основное назначение драйвера состоит в организации нового чисто программного интерфейса, благодаря которому разрывается прямая связь прикладного ПО с конкретным интерфейсом ПУ командного уровня. Удобнее всего программный интерфейс представить в виде набора подпрограмм
-
DRIVER:
JMP
JMP
JMP
INIT
INPUT
OUTPUT
;Процедура инициализации
;Ввод байта
;Вывод байта
Каждая подпрограмма выполняет свою процедуру обмена или обслуживания ПУ, число и сложность которых может изменяться. В общем случае взаимодействие с каждым ПУ осуществляется с помощью программируемого адаптера или контроллера. Поэтому в состав драйвера следует ввести специальную процедуру инициализации INIT контроллера, которая настраивает его для работы в конкретном режиме. Примером простого драйвера ИРПР-адаптера на базе ВВ55 служит набор из трех рассматриваемых в § 3.3 подпрограмм
-
РА:
JMP
JMP
JMP
PAINI
PAI
РАО
;Инициализация
;Условный ввод байта
;Условный вывод байта
По аналогии с драйвером РА был построен и драйвер для управления ИРПС-адаптером на базе ВВ51 (см. § 3.4):
-
SA:
JMP
SAINI
;Инициализация
JMP
SAI
;Условный ввод
JMP
SAO
;Условный вывод
В составе мМС1204 два драйвера типа SA: S1 и S2, которые отличаются лишь базовыми адресами БИС связного адаптера.
Стандартизация интерфейса ВВ делает независимым ПО следующего уровня от типа используемого адаптера, в качестве которого может выступать как ППА, так и любой ПСА. Появляется возможность определить ряд дополнительных виртуальных устройств ВВ, отвечающих данному стандарту.
Во многих случаях может оказаться полезным осуществление операции ввода не с какого-либо внешнего устройства, а непосредственно из памяти МК. Для этого может использоваться драйвер буфера памяти BF:
-
BFINI:
SHLD
BFPTR
;Инициализация указателя
RET
;буфера
BFI:
PUSH
H
LHLD
BFPTR
MVI
A, 0FFH
;Установка признака
ORA
A
;готовности ZF = 1
MOV
A, M
;Чтение данных
INX
H
;Модификация указателя
SHLD
BFPTR
;буфера
POP
H
RET
В драйвере определены процедура инициализации, устанавливающая указатель BFPTR начала буфера, и процедура ввода. Указатель BFPTR размещается в ОЗУ и служит для указания следующего подлежащего выборке байта памяти. При выборке байта содержание указателя увеличивается на единицу. Аналогично может быть определена более редкая операция вывода в память.
Иногда удобно использовать виртуальное устройство фиктивного вывода, позволяющее осуществлять кажущийся вывод, который в действительности отсутствует. Драйвер ВВ такого устройства рассмотрен ниже. Он поддерживает единственную операцию вывода по готовности:
-
ВВО:
PUSH
В
MOV
В, А
MVI
A, 0FFH
;Установка признака
ORA
А
;готовности
MOV
А, В
POP
В
RET
Унификация программного интерфейса создает у программиста иллюзию работы с некоторым стандартным ПУ. Такое устройство будем называть логическим или виртуальным, подчеркивая факт его существования на программном уровне. Замена драйвера со стандартным программным интерфейсом никак не сказывается на ПО, что повышает его мобильность и независимость от аппаратной организации МС.
Драйверы PA, S1, S2, BF и ВВ совместно с адаптерами организуют физическую систему ВВ мМС1204, в составе которой могут быть выделены восемь устройств физического ввода или вывода. Среди них :О1: и :I1: (передатчик и приемник ПСА1), :O2: и :I2 (ПСА2), :О3: и :I3: (ППА), :BF: (буфер памяти) и :ВВ: (устройство фиктивного вывода).
Над системой физического вывода надстраивается аппаратно независимая система логического ВВ (рис. 5.6). Набор виртуальных устройств составляет основу логической системы ВВ. Типичным примером простой логической системы ВВ для бездисковых МС служит система из пяти виртуальных устройств, таких как :СI: (ввод с консоли), :СО: (вывод на консоль), :LP: (вывод на принтер), :RD: (ввод с устройства чтения), :WR: (вывод на устройство записи).
Рис. 5.6. Организация подсистемы ВВ мМС1204
Консоль—это устройство для ведения диалога оператора с МС. В качестве консоли могут выступать различные физические устройства, например дисплей, пишущая машинка, телетайп или перфоленточный фотосчитыватель с заранее заготовленной перфолентой и т.д. Однако с точки зрения программиста обмен информацией с любым из этих устройств на логическом уровне адекватен. Поддержка этой адекватности возлагается на драйверы физических устройств. Аналогичный подход может быть применен и к логическому принтеру, и к дополнительному логическому устройству чтения-записи, выполняющему роль внешнего ОЗУ. В наиболее простых случаях :RD:—физическое устройство чтения с перфоленты или приемник из канала связи с другой МС, а :WR:—устройство записи на перфоленту или передатчик в канал связи. Внутренний интерфейс драйверов логической системы ВВ согласуется со стандартными правилами передачи параметров при вызовах физической системы ВВ, благодаря чему логические устройства могут назначаться и переназначаться на соответствующие физические устройства для реализации той или иной конфигурации ВВ.
Пользователь может самостоятельно расширить систему физического ВВ. Находясь в рамках стандартного интерфейса связи между физической и логической системой ВВ, можно переобозначить логические устройства на соответствующие физические и воспользоваться готовыми ресурсами логической среды ВВ для организации ввода или вывода на конкретное физическое устройство.
Функции логических устройств на рис. 5.6 выполняются с помощью 15-байтовой таблицы связи, располагаемой в области ОЗУ МК:
CIRDY: |
JMP |
S11 |
;:СI: = :I1: |
CORDY: |
JMP |
S10 |
;:СО: = :O1: |
LPRDY: |
JMP |
РАО |
;:LP: = :O3: |
RDRDY: |
JMP |
S21 |
;:RD: = :I2: |
WRRDY: |
JMP |
S20 |
;:WR: = :O2: |
По аналогии с драйверами физических устройств (физических драйверов) могут быть построены и драйверы логических устройств (логические драйверы), которые образуют второй слой логической системы ВВ. Если в функции первого слоя входит прямое управление физическим ПУ и поддержка интерфейса ПУ, то основным назначением второго слоя следует считать расширение набора типовых операций ВВ, облегчающих процесс прикладного программирования. Программист должен лишь подобрать нужную ему стандартную операцию ВВ из числа тех, которые поддерживают драйвер логического уровня.
Драйверы логических устройств могут иметь развитый набор функций ВВ. Так, входящий в состав мМС1204 драйвер консоли и принтера включает 20 процедур ВВ:
СО |
Вывод символа из аккумулятора А на консоль |
СОТХТ |
Вывод текста на консоль. Регистр ВС—указатель текста. Код 00—терминатор текста |
COLF |
Перевод строки |
COTLE |
Вывод текста в соответствии с СОТХТ и перевод строки |
СОН |
Вывод значения младшей тетрады на консоль в шестнадцатевичном (HEX) формате |
СОН2 |
Вывод содержимого А на консоль в НЕХ-формате |
СОН4 |
Вывод содержимого ВС на консоль в НЕХ-формате |
MSGЕR |
Вывод текста «ERROR» с HEX-кодом ошибки, лежащим в А |
CI |
Ввод символа из консоли в А. Символ вводится без дублирования. Бит четности устанавливается равным нулю |
CIO |
Ввод символа из консоли в А с дублированием |
HEXA |
Преобразование лежащего в А НЕХ-символа в его двоичный эквивалент. Если исходный символ—не шестнадцатеричная цифра, то он не преобразуется и флажок CY = 1 |
CIH |
Ввод в А шестнадцатеричной цифры в коде КОИ-7 и ее преобразование в двоичный эквивалент. При обнаружении ошибки флажок CY = 1 |
CIH2 |
Ввод с консоли двух НЕХ-цифр в коде КОИ-7 и их преобразование в двоичный эквивалент, возвращаемый через А. При обнаружении ошибки флажок CY = 1 |
CIH21 |
Ввод с консоли второй НЕХ-цифры в то время, когда в младшей тетраде А уже есть двоичный эквивалент первой. Используется после CI и НЕХА при CY = 0 |
CIH4
|
Ввод четырех НЕХ-цифр в коде КОИ-7 и их преобразование в двоичный эквивалент, возвращаемый через регистровую пару ВС. При обнаружении ошибки флажок CY = 1 |
CIH41 |
Ввод оставшихся трех НЕХ-цифр в то время, когда в младшей тетраде А уже есть двоичный код первой, и их совместное преобразование в двоичную форму, возвращаемую через ВС. При обнаружении ошибки флажок CY = 1. Применяется после CI и НЕХА при CY = 0 |
COLP |
Вывод передаваемого через А символа на консоль с его копированием на принтер |
LP |
Вывод передаваемого через А символа на принтер |
COPY |
Включение копирования |
NCOPY |
Выключение копирования |
Вывод на консоль может сопровождаться копированием диалога на принтер. Управление копированием (его включение и выключение) осуществляется специальными процедурами COPY и NCOPY.