FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
interrupcion del puerto paralelo
hola amigos.. tengo una duda..
cuando se ve el tema de las interrupciones, existe una que es para el puerto paralelo.. pero como la utilizo? quiero hacer una aplicasion en la cual cualdo active (con un 0 o 1) un bit del puerto paralelo se genere una interrupcion, y que de como un evento que pueda programar.. ¿es esto posible?, yo se que si... solo diganme como. |
#2
|
||||
|
||||
Cita:
y el manejo de Overlapped.hEvent (talvez en un hilo) con WaitForSingleObject Suerte |
#3
|
||||
|
||||
Cita:
Manejo de la interrupción del puerto paralelo. El bit 4 del puerto de control, según la tabla 5, se denomina IRQEN. Este bit habilita o permite que se produzca la interrupción asociada a la entrada ACK#. Cuando este bit está a 1 y la señal ACK# pasa del nivel lógico 1 al nivel 0 se produce una petición de interrupción, que es la IRQ7. En el diseño original del PC, IBM reservó 8 interrupciones hardware, comenzando por la interrupción 08h, para expansión de interrupciones, que son comúnmente conocidas como IRQ0 a IRQ7. Así la IRQ0 se corresponde con la interrupción 08h, la IRQ1 con la 09h, etc. La IRQ7 se corresponde pues con la 0Fh, estando sus vectores a partir de la dirección 0000:003Ch. Para que una petición de una IRQ llegue a la CPU, ésta debe estar permitida, no enmascarada. El puerto 021h está asociado con la máscara de interrupciones de las IRQ. Para habilitar una determinada interrupción se deberá escribir un cero en la posición correspondiente, sin modificar el resto. Así, si lo que se quiere es permitir la IRQ7 habrá que poner a cero el bit más significativo del puerto 021h, como muestra el código siguiente: in al,021h ; lee la máscara de las IRQ and al, 01111111b ; impone un 0 en el bit más significativo, IRQ7. No modifica el resto out 021h, al ; escribe la máscara Con estas operaciones quedará habilitada la IRQ7. Una vez atendida de la forma que se haya previsto, el programa debe indicar a la CPU que la interrupción ya ha sido procesada, para ello debe escribir un 1 en el bit 5 del puerto 020h, es decir: mov al, 020h ; carga en al 0010 0000 b out 020h, al ; lo escribe en al puerto 020h Finalmente, tan sólo queda por activar el bit que permite que la señal ACK# genere una petición de IRQ7. Para ello se deberá poner a 1 el bit 4 del puerto de control , sin modificar el resto. Cuando no se quiera que se produzca una IRQ7, basta con poner a cero este bit. Al finalizar el programa, no sólo se deben restablecer los vectores de interrupción modificados, sino que también se debe inhibir la IRQ7, dejando la máscara del puerto 021h como estaba. Un programa que utilice la interrupción del puerto paralelo puede tener esta estructura, en lo que se refiere al manejo de dicha interrupción: Al comienzo: modificar vectores de la interrupción 0Fh (IRQ7) permitir la interrupción IRQ7, poner a 0 el bit 7 del puerto 021h Durante la ejecución, siempre que haga falta: habilitar la interrupción en el puerto de control, bit 4 repetir procesar la interrupción escribir 020h en el puerto 020h hasta que se deba inhibir inhibir la interrupción, poniendo un cero en el bit 4 del puerto de control Al terminar inhabilitar la IRQ7, poner a 1 el bit 7 del puerto 021h recuperar los vectores de interrupción anteriores Saludos
__________________
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Puerto paralelo | bactering | Varios | 8 | 15-09-2011 08:55:09 |
Puerto Paralelo | axel77 | API de Windows | 1 | 23-08-2007 05:45:56 |
Puerto paralelo en C | Chase | C++ Builder | 0 | 04-07-2005 13:29:37 |
Puerto Paralelo | jorge | Lazarus, FreePascal, Kylix, etc. | 1 | 20-04-2005 04:25:42 |
Puerto Paralelo | solovaer | Impresión | 0 | 08-03-2005 03:54:54 |
|