Надо мне программку, которая читает данные из LPT со status контактов ACK(10) ;6 BUSY(11) ;7 PE(12) ;5 SLCT(13) ;4 ERROR(15) ;3 Но как-то они странно читаются: Код (Text): без всего 01111b 7 - 00000000 6 - 11000000 5 - 10100000 4 - 10010000 3- 10001000 замыкаю по одному с землей, control значения ставлю в 255. (если читать из data шины, то все нормально- всегда 11111111b, при замыкании контакта на землю, соответственно в том бите 0) Кто-нибудь знает в чем дело?
пока постил, понял что значение всегда xor %1000000 но почему так, и почему при подаче 0 на контакт значение инвертированное?
ТАк точно. Сигнал(ы) инверсны(е). [url=http://www.csu.ru/faculties....ru/faculties/phys/maelab/_frames/_lpt_1.htm [/url]
Я уже сделал, мож кому пригодится Код (Text): ;--- thread_lpt_prc proc par1:DWORD pushad invoke sleep, 2000 @@1: invoke sleep, 5 CP [thread_exit], 0, NZ, @@kon inv_win Out32, 037Ah, 255 ;выставили control- готовы читать inva_win Inp32, 0379h ;читаем данные status and eax, 11111000b xor eax, 01111000b ;сигнал инверсный, кроме 7 бита CP eax, [last_eax], Z, @@1 ;ACK(10) ;6 ;BUSY(11) ;7 ;PE(12) ;5 ;SLCT(13) ;4 ;ERROR(15) ;3 mov [last_eax], eax mov ebx, eax mov ecx, eax and ebx, 10000000b and ecx, 01000000b shr ebx, 1 shl ecx, 1 and eax, 00111111b or eax, ebx or eax, ecx shr eax, 3 mov ebx, eax ;в ebx 4-0 бит по порядку контактов, биты Status 76543 ... ... ... jmp @@1 @@kon: popad ret thread_lpt_prc endp Для работы использовал библиотеку Inpout32.dll