Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзамен Мпп.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
3.57 Mб
Скачать

Аналоговий компаратор.

Самая простая задача микропроцессорной системы – это слежение за уровнем аналогового сигнала на предмет нахождения его в некотором диапазоне значений. Самый простой технологически изготавливаемый блок аналогового ввода это аналоговый компаратор. Принцип работы показан на рис. 5.1

Рисунок 5.1

Аналоговый компаратор имеет два входа – прямой (Вход+) и инверсный (Вход-). Когда напряжение на Входе+ больше чем на Входе-, то на выходе компаратора присутствует низкий уровень, а если наоборот – то высокий. Компаратор так же может обладать гистерезисом – областью в которой его выходное состояние не меняется. Для некоторых применений нужно минимизировать эту область, а для других – расширить. В МПУ аналоговые компараторы обладают минимальным гистерезисом.

Для того, что бы сравнивать сигнал с эталоном служит встроенный источник опорного напряжения (ИОН). Он обладает собственной стабильностью параметров, оговариваемых в описании конкретного МПУ. Для удобства использования встроенных ИОН их часто соединяют с внутренним делителем, который позволяет управлять выходным напряжением источника.

Команди обміну даними. Приклади використання.

Одна из наиболее часто используемых команд - МОV позволяет в защищенном режиме переслать байт или слово из регистра в регистр, из памяти в регистр или из регистра в память. Тип пересылаемых данных (байт или слово) определяется регистром, участвующим в пересылке. Ниже приводятся примеры использования команды:

mov ах,Table {Пересылка слова из памяти в АХ}

mov Table,ah {Пересылка байта из АН в память}

mov ds,ax {Пересылка в сегмент данных}

mov es:[bx],ax {Пересылка слова в память: базовая адресация с заменой сегмента}

mov ch,-17 {Переслать константу в регистр}

mov Table,$FF {Переслать константу в память}

С помощью MOV нельзя пересылать:

из памяти в память, например, вместо

mov Mem1,Mem2

следует использовать

mov ax,Mem2

mov Mem1,ax

константу или переменную в DS, например, нельзя

mov DS,Data_Seg

нужно:

mov ax,Data_Seg

mov ds,ax

один сегментный регистр в другой, например, нельзя

mov es, ds

но можно

mov ax,ds

mov es,ax

в регистр CS; значение этого регистра (сегмента кода) автоматически меняется при выполнении дальних команд CALL и JMP; кроме того, он загружается из стека при выполнении команды RETF (выход из дальней процедуры).

Для временного сохранения регистров и данных, а также для обмена значениями между регистрами широко используются стековые команды PUSH и POP. Каждая из них работает со словом, т.е. в стек нельзя поместить или извлечь из него одиночный байт. При выполнении PUSH вначале уменьшается на 2 содержимое указателя SP, а затем операнд помещается по адресу SS: SP. При извлечении из стека сначала читается память по адресу SS: SP, а затем SP увеличивается на 2. Таким образом, при заполнении указатель вершины стека SP смещается к младшим адресам, а при освобождении -к старшим. При работе со стеком следует помнить о специфике использования стековой памяти («последним пришел - первым ушел»), а также о том, что эта память интенсивно используется при вызове процедур, т.е. состояние стека к моменту выхода из процедуры должно быть строго согласовано с дальнейшей работой программы. Первое условие определяет порядок извлечения данных из стека - он должен быть обратным порядку, в котором эти данные помещались в стек. Второе условие фактически означает, что после выхода из процедуры указатель SP должен содержать то же смещение, что и к моменту входа в нее. Иными словами, процедура не должна «забыть» в стеке лишнее слово или взять из него больше нужного.

Команда загрузки адреса LEA загружает в регистр адрес (смещение) нужного участка памяти. Этого же можно достичь с помощью зарезервированного слова OFFSET, стоящего перед именем переменной. Например:

mov ax, OFFSET X {Загружаем смещение X в АХ}

lea ax,X {To же действие}

Разница состоит в том, что в случае команды LEA разрешается использовать индексную адресацию, что особенно удобно при пересылке массивов данных.

Две другие команды адресной загрузки - LDS и LES загружают первое 16-разрядное слово из источника в регистр-приемник, а затем следующее слово - в регистр DS или ES, т.е. они рассчитаны на загрузку полного адреса операнда (сегмента и смещения).