Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

LPT и 1 мкс задержки!

28K
04 апреля 2009 года
MadGest
45 / / 04.04.2009
Доброго всем времени суток. Пришел на форум с вопросом. Столкнулся с поблемой реализации такой программы. Нужно подавать на LPT поочередно 0 и 1 с паузой в 1 мкс в течении 1 минуты. Пробовал много различных вариантов. Уже опускаются руки. Я не так давно работаю с assembler поэтому для меня это составило большую сложность. Помогите кто сможет. (Программа должна быть на чистом асме) Заранее спасибо!
551
04 апреля 2009 года
Pavia
357 / / 22.04.2004
Задержка

Задержка делается следующим образом.
out 0EBh,al ; Задержка около 250 нс

Порт 0EBh, ничего не делает, поэтому и происходит задержка. Возможно это связанно с тем что шина ISA имела наименьшую частоту 4МГц.

В исходных кодах БИОСа она обозначается как
NEWIODELAY , мы и не будем отходить от традиций.

NEWIODELAY EQU OUT 0EBh, AL

Или более класический вариант.
for i:=0 to n do a:=a+5; где n зависит от скорости процессора.

Стандартная частота передачи LPT это 500кб/с, протокол SPP.
если более дитально расматривать диаграмму.
То мы получаем. 1мс задержку.
0.5 перед подачей стробирующего сигнала 0.5 на сам сигнал. И 0.5 после снятия стробирующего сигнала.

Еще надо учесть что обращение к портам эта медленная операция.

Так что я бы с этим не заморачивался бы и сразу выбал бы FIFO mode там уже аппаратно реализованна нужная тебе задержка. И разумеется что бы комп не простаивал в ожидании отправки данных все это сделать через DMA.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог