Работа с LPT
Работа с LPT
Работа с LPT Написание этой статьи началось с того, что недавно на форуме (dengiforum.com) я набрел на вопрос о работе с lpt портами, появилась тема для новой статьи. Тема эта довольно простая и интересная. Через lpt к компу подключаются принтеры, сканеры и прочие устройства, уже догадываешься, что можно замутить свое устройство и подключить к lpt. Можно напаять светодиодов, малость накодить, получится светомузыка. Можно пошевелить мозгами и включать свет в соседней комнате одним щелчком мышки. В общем можно подключить все или почти все. В надежде на обустройство интеллектуальной квартиры, кторой можно будет управлять не вставая с кресла, приступаем к разбору того, как всетаки управлять lpt портом. У правлять им не сложно, ногу порта можно подключить или отключить. На каждую ногу приходятся две процедуры: одна посылает на ногу единицу, другая ноль. Еденица - это 5 вольт, а ноль - почти 0 вольт. Вот и все, что знать надо. Соответственно если разбирать тему на примере свето-музыки, то одна процедура включает светодиод, а вторая выключает. Включаем вторую ногу (шлем на нее единицу): procedure s_reset; begin s:=port[888]; {Порт lpt1} asm mov al,1 {В регистр al загружаем маску 00000001} mov bl,s {b bl загружаем данные из lpt1} or bl.al {Устанавливаем младший разряд в единицу, остальные не меняем, результат в bl} mov s,bl {Результат сохраняем в s} end; port[888]:=s {Выдаем в порт байт из s} end; Устанавливаем ногу 2 в ноль: procedure c_reset; begin s:=port[888]; asm mov al,254 {Маска 11111110} mov bl,s and bl,al {Устанавливаем младший разряд в ноль, остальные не меняем} mov s,bl end; port[888]:=s; end; Аналогично все остальные проводки, меняется только маска. Для третьей ноги - mov al,2{Маска 00000010}, mov al,253 {Маска 11111101}и т.д. пишем чистим соответственно. Вот и все дальше лампочки припаивай или удлинитель на лазерных указках делай, все зависит от тебя.