Здравствуйте, Demon, Вы писали:
D>Здравствуйте, CH3COOH, Вы писали:
D>>>Вот кусок ТЗ
D>>>"Алгоритм записи:
D>>>CLK 2 нога разъёма LPT – порта.
D>>>DATA 3 нога разъёма LPT – порта.
D>>>Исходно состояние выводов CLK и DATA высокое. Падение фронта CLK означает начало передачи информации в прибор. Низкий уровень CLK держится 0.1 мсек. В течение этого времени надо установить старший бит байта данных на выводе DATA. Далее (по истечении 0.1 мсек) состояние CLK переводится в высокое и ждём ещё 0.1 мсек. Затем процесс повторяется для остальных битов."
D>>>Вопросы:
D>>>1. Что мне писать в 378-ой порт? (или в другой?)
CHC>>2 нога это D0 регистра адреса, а 3 нога — D1. Следовательно, чтобы выставить CLK-->1, надо ставить в выводимом байте разряд 0, соотв., DATA разряд 1.
D>Т.е. вот так?
D>D> mov dx,378h
D>//запись бита '0' из потока данных
D> mov al,0
D> out dx,al
D> // sleep 0.1 msec
D> mov al,80h
D> out dx,al
D> // sleep 0.1 msec
mov al,1
out dx,al
D>//запись бита '1' из потока данных
D> mov al,40h
D> out dx,al
D> // sleep 0.1 msec
D> mov al,C0h
D> out dx,al
mov al,1
out dx,al
D>
Судя по ТЗ, ты должен вернуть CLK в высокое состояние после передачи каждого бита(выделено болдом).
Странно, что разработчики не посадили CLK на 1-ю ногу LPT порта(Strobe) — было бы очень удобно, не надо его сбрасывать в исходное состояние — это производится автоматически. Да и время импульса на ноге 1 отмеряется самим контроллером LPT и является величиной постоянной и известной
Хотя, если это все только в учебных целях, то другое дело.