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

In al, 0000h ; ввод младшего байта

MOV BL, AL ; сохранение младшего байта

In al, 0001h ; ввод старшего байта

MOV BH, AL ; сохранение старшего байта

Значение, введенное с датчика, помещается в результате в регистр BX.

Рассмотрим процесс ввода во временной области. Для ввода данных в данном случае необходимо выполнить два цикла обмена. Каждый цикл занимает определенное время (несколько тактов синхронизации процессора). Между циклами имеется некоторый промежуток за счет выполнения команды сохранения введенного значения в регистре BL. Таким образом, между моментами ввода в МП младшего и старшего байтов существует интервал времени , имеющий конечное, пусть даже малое, значение (рис. 7).

Рис. 7.  

В течение этого интервала времени, значение, поступающее с датчика, может измениться. Например, в момент ввода младшего байта имелось значение 00FFh (младший байт — FFh, старший байт — 00h). Ввели младший байт (FFh). Затем, в течение интервала , датчик изменяет свои показания на 1 отсчет — с 00FFh на 0100h (младший байт — 00h, старший байт — 01h). Вводим старший байт (01h). В результате, в МП будет введен младший байт FFh и старший байт 01h, и по окончании ввода мы получим в регистреBX значение 01FFh, которое значительно отличается от обоих реально выдаваемых датчиком значений. То есть будет иметь место грубая ошибка при вводе данных. Очевидно, что для исключения данной ошибки, перед собственно вводом данных необходимо зафиксировать значение, поступающее с датчика, в буферном регистре, для того, чтобы обеспечить его неизменность во время всего процесса ввода. Количество буферных регистров зависит от разрядности вводимых данных. На рис. 8. представлен вариант для ввода данных с 16-разрядного датчика.

Рис. 8.  

Младшие и старшие восемь линий, идущие с датчика, подключены через соответствующие буферные регистры к портам А и В ППИ. Буферные регистры работают в режиме усилителей с возможностью фиксации данных по заднему срезу сигнала STB. Для формирования строба на линии STB используется линия 0 порта С ППИ. При установке младшего разряда порта С в "1" сигнал на линии STB переходит из "0" в "1" (начало строба), при сбросе младшего разряда порта С в "0" сигнал на линии STB переходит из "1" в "0" (окончание строба). Процесс иллюстрирует рис. 9.

Рис. 9.  

В момент времени происходит фиксация значений в буферных регистрах.

Так как адрес порта С ППИ при указанной на рис. 8. схеме подключения равен 0002h, начало строба формируется командами

MOV AL, 0001h

OUT 0002h, AL

Окончание строба — командами

MOV AL, 0000h

OUT 0002h, AL

Так как фиксация данных в БР происходит по заднему фронту сигнала STB, установка и сброс должны быть произведены перед процедурой ввода данных. При этом длительность импульса (на рис. 9) должна быть достаточной для завершения всех переходных процессов в БР. Длительность строба может быть рассчитана по известной тактовой частоте МП и известному количеству тактов на выполнение каждой команды. При необходимости между командами установки и сброса строба может быть введена программная задержка.

В результате, фрагмент программы, выполняющей ввод данных с 16-разрядного цифрового датчика, будет выглядеть следующим образом:

MOV AL, 0001h ;

OUT 0002h, AL ;Установка сигнала STB

MOV AL, 0000h ;

OUT 0002h, AL ;Сброс сигнала STB- фиксация данных