El problema esta en que estas leyendo la misma direccion a la que envias el dato, supongo que la direccion que mencionas es la direccion base, por lo tanto para obtener las direcciones de los otros registros del puerto se incrementa en uno:
Dir base (en mi caso): 0x378h
Esta direccion corresponde al registro de Datos.
Si sumo 1 a esta direccion obtengo el registro de Estado (0x379h)
Si sumo una vez mas 1 obtengo la direccion del registro de Control (0x37Ah), todos estos registros pertenecientes al puerto paralelo...
Los bits de entrada estan dentro del registro de Control, al leerlo obtenemos un dato de 1 byte, por lo que hay que hacer las operaciones necesarias como enmascaramiento para obtener los 4 bits de entrada que podemos tener esto almenos en el modo ECP...
aunque no sea el modo que utlizas del puerto espero te de una idea, los demas modos del puerto son similares solo que te brindan otras opciones...(intenta probar con este modo)...
filtrar rebotes??
saludos...