Bueno, no se si será la hora o que, pero mi puerto paralelo ha cobrado vida propia . Estoy armando un pequeño proyecto al cual no tuve la mejor idea que decidir hacerlo usando las interrupciones del puerto paralelo, en version para MS-DOS (en el queridísimo Turbo Pascal 7).
Antes que nada, empecé analizando la forma de trabajo de las interrupciones en dicho puerto. Si bien, según el estado lógico del Bit C4 (Registro de Control -> Bit 4 : este no tiene conexión externa al DB25 que todos vemos en la pc, puesto que es Lógico, es decir conmutando entre 0 y 1, se activa o desactiva la IRQ). Una vez que activamos la IRQ, la interrupción se generara a partir del S6 (Registro de Estado -> Bit 6: de esta forma, funciona de forma Lógica. Para quienes no conocen cual es el Bit, es el pin #10 del conector DB25), es decir, que se ejecutará la interrupción al detectarse un flanco ascendente o descendente (según en que norma se encuentre el LPT).
Todo esto para que, mediante un pulsador entre S6 y GND, genere una interrupción cada ves que se activa. (nada de pullup, todo digital).
Ahora bien, diganme si estoy equivocado, pero el vector de interrupción (para IRQ7) no es la INT 15 ? (INT 13 para IRQ5). En port 0x0020 ingreso mi vector, en 0x0021 lo restablezco (asi como las máscaras con las que modifico el LPT).
Saludos.
Antes que nada, empecé analizando la forma de trabajo de las interrupciones en dicho puerto. Si bien, según el estado lógico del Bit C4 (Registro de Control -> Bit 4 : este no tiene conexión externa al DB25 que todos vemos en la pc, puesto que es Lógico, es decir conmutando entre 0 y 1, se activa o desactiva la IRQ). Una vez que activamos la IRQ, la interrupción se generara a partir del S6 (Registro de Estado -> Bit 6: de esta forma, funciona de forma Lógica. Para quienes no conocen cual es el Bit, es el pin #10 del conector DB25), es decir, que se ejecutará la interrupción al detectarse un flanco ascendente o descendente (según en que norma se encuentre el LPT).
Todo esto para que, mediante un pulsador entre S6 y GND, genere una interrupción cada ves que se activa. (nada de pullup, todo digital).
Ahora bien, diganme si estoy equivocado, pero el vector de interrupción (para IRQ7) no es la INT 15 ? (INT 13 para IRQ5). En port 0x0020 ingreso mi vector, en 0x0021 lo restablezco (asi como las máscaras con las que modifico el LPT).
Saludos.