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

Ваш аккаунт

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

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

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

LPT порт

1.2K
03 февраля 2007 года
piroman17
175 / / 20.07.2006
Каким макаром можно передать в LPT порт данные(число), и на каких "ножках" физического порта его можно будет считать внешим усторйством?
391
04 февраля 2007 года
Archie
562 / / 03.02.2005
http://www.sdteam.com/?tid=495
P.S. А что, пользоваться гуглем религия запрещает?
1.2K
04 февраля 2007 года
piroman17
175 / / 20.07.2006
Цитата: Archie
http://www.sdteam.com/?tid=495
P.S. А что, пользоваться гуглем религия запрещает?



Про то как считать устройством с порта я понял, а вот прогу вникнуть не могу - BAsic, можно сказать, первый раз вижу. Да и там какая то библиотека юзается, а мне этого не надо, мне надо от начала и до конца самому (чтоб научиться).

P.S. И вообще, лучше всего на C или на ASM'e чтоб код был....

252
05 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
base+0 -порт данных
base+1 -порт состояния
читаеш биты 7,6 порта состояния
если =01b то пишеш в порт данных
базовый порт можно в биосе посмотреть .
на порту ноги 2-9 байт данных.
нога 14 - строб .
1.2K
05 февраля 2007 года
piroman17
175 / / 20.07.2006
Спасибо!!! :)

А как мне вычислить BASE для порта LPT1?
Я понимаю что в BIOS'e, но где?
252
05 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
программно ?
область данных биоса
0040h:0008h - первый
0040h:000ah - второй
0040h:000ch - третий
0040h:000eh - четвёртый
252
05 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
или усторойство с кодом класса 07h:01h: (0h,1h,2h) на pci шине .
1.2K
06 февраля 2007 года
piroman17
175 / / 20.07.2006
Вот написал код, а он не работает. т.е. на "ноге" №2 порта LPT-1 всё равно остаётся ноль.
Код:
masm
model small
.code
org 100h
begin:
mov ah,00h
mov al,03h
int 10h


mov ax,cs
mov ds,ax

mov bx,offset Hello
mov si,00h
call Write

jmp data_end
BASE1 dw 00h
DATA_END:

;поиск BASE
mov ax,40h
mov es,ax
mov ax,word ptr ES:[08h]
mov BASE1,ax

;выводим число 1
mov al,01h
mov ax,dx
in ax,01h

mov bx,offset Wait1
mov si,160
call Write

;ожидаие клавиши
mov ah,00h
int 16h

;восстановим значение =0
mov ax,dx
in ax,00h


mov bx,offset End01
mov si,320
call Write

sd:
jmp sd

Hello db "LPT-1 PIN2 = 1",0
End01 db "End of work",0
wait1 db "Press any key",0



;si - смещение на экране
;bx - смещение в DATA
Write:
mov ax,0B800h
mov es,ax

WriteRun:
mov al,byte ptr DS:[bx]
mov es:[si],byte ptr al
inc bx
add si,02h
mov al,byte ptr ds:[bx]
cmp al,0
 jne WriteRun

ret

end begin


Прога компилируется в COM и запускается под winXP. Может это винда ей работать мешает?
391
06 февраля 2007 года
Archie
562 / / 03.02.2005
in - это инструкция чтения из порта. Для записи в порт - out.
Еще, формат инструкций x86 следующий:
инструкция <приемник> <источник>
Т.е., то, что у Вас написано in ax, 01h означает прочитать слово из порта 01h и положить его в ax
1.2K
06 февраля 2007 года
piroman17
175 / / 20.07.2006
Вот до чего еевнимательность доводит...

Поменял. Всё равно не работает :)
3.3K
07 февраля 2007 года
GENA_DJ
123 / / 08.03.2005
В винде лучше делать так
Коротко.
1. открываешь файл с именем "LPT1"
2. пишешь в него байт через WriteFile


Чтобы все работало корректно - соединить линию BUSY(11) и Paper End(12) с общим проводим(напр., 20), а Strobe(1) соединить с Acknowledge(10).

Распайка разъема

Примечание. При передаче потока считаем данные действительными, если на линии Strobe высокий уровень.
1.2K
07 февраля 2007 года
piroman17
175 / / 20.07.2006
Мне нужна двухсторняя связь с устройством. Работа с файлом LPT1 резко понижает скорость обмена данными.
Да и помоему в обратную сторну через этот файл данные не передать...
3.3K
07 февраля 2007 года
GENA_DJ
123 / / 08.03.2005
Цитата: piroman17
Мне нужна двухсторняя связь с устройством. Работа с файлом LPT1 резко понижает скорость обмена данными.
Да и помоему в обратную сторну через этот файл данные не передать...



В Windows XP не получится получить доступ к портам без написания/использования драйвера. По поводу понижения скорости - неправда.

1.2K
07 февраля 2007 года
piroman17
175 / / 20.07.2006
Цитата:
В Windows XP не получится получить доступ к портам без написания/использования драйвера.



Тогда можете дать ссылочку на какую русскоязычную литературу по написанию дрйверов...

P.S. А по поводу скорости: А по вашему что быстрее - команда OUT или запись в файл?

1.2K
08 февраля 2007 года
piroman17
175 / / 20.07.2006
Цитата: koderAlex
программно ?
область данных биоса
0040h:0008h - первый
0040h:000ah - второй
0040h:000ch - третий
0040h:000eh - четвёртый



Пишу драйвер и вот задумался под виндами как мне этот BASE вытащить? Режим то защищённый, и в область данных BIOS'a особо не влезешь...

391
08 февраля 2007 года
Archie
562 / / 03.02.2005
А на кой тебе этот драйвер? Поищи в инете, уже куча решений есть. На худой конец возьми из того же LabView.
1.2K
08 февраля 2007 года
piroman17
175 / / 20.07.2006
Цитата: Archie
А на кой тебе этот драйвер? Поищи в инете, уже куча решений есть. На худой конец возьми из того же LabView.



На всём готовеньком не научишься...

Кстати а этот BASE на всех компах одинаковый или могут быть варианты?
У меня напимер BASE = 03BCh...

252
09 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
стандартные адреса - 3bch,378h,278h
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог