Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Фишка с портом


Автор: Georg4 4.2.2004, 15:48
Аналоговые входы считываются путем отслеживания времени,в
течениe которого соответствующий бит установлен в единицу, после
команды OUT 201h,XXX. Пример чтения координаты X устройства А:

mov dx,201h
out dx,al ;инициировать обмен, AL-любой байт
mov cx,-1 ;счетчик для цикла
Again:
in al,dx
inc cx ;увеличить счетчик
test al,1 ;бит AX сброшен?
jne Again ;нет, ждем

Результат в СX указывает координаты Х.

Как считать координаты Y?
И вообще остальные координаты

Автор: Serzh 4.2.2004, 16:59
это ты наверное про midi порт?
если да, то проверяешь другой бит.

Код
mov dx,201h
out dx,al;инициировать обмен, AL-любой байт
mov cx,-1;счетчик для цикла
Again:
in al,dx
inc cx;увеличить счетчик
test al,2;бит AX сброшен?
jne Again;нет, ждем

Автор: Georg4 5.2.2004, 00:36
Спасибо. Вроде работает будут глюки, скажуsmile.gif

Автор: Georg4 6.2.2004, 01:17
Вроде работает, только огда написал там тройку она все равно начала считывать со второго бита. т.е. когда я параллельно считываю 2-мя функциями 2-й и 3-й биты то показания абсолютно идентичны.

Вкратце: я делаю прогу которая считывет координату джойстика и соответственно сопротивление на всех его аналоговых входах. Вот по первому входу все путем, по второму (с двойкой) все тоже нормально, а вот дальше что-то нечто!!!

Автор: Georg4 6.2.2004, 17:15
ТАкая проблема!

1-ю,2-ю и 3-ю линии могу считать написав соответственно test al,1 test al,2 и как ни страно test al,4; интерестно почему.
А вот четвертая линия не считывается!

Автор: Serzh 9.2.2004, 01:46
дык эта...
в test указываеться не номер бита, а маска битов -
1 - 0ой бит
2 - 1ый бит
4 - 2ой бит
8 - 3ий бит
16 - 4ый бит
и т.д.
из чего следует, что для 4ой линии проверяй так: test al, 8

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)