Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > ASM y Microcontroladores
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-02-2009
candia candia is offline
Miembro
 
Registrado: abr 2008
Posts: 15
Poder: 0
candia Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 17-02-2009
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 21
cHackAll Va por buen camino
Cita:
Empezado por candia Ver Mensaje
...cuando se ve el tema de las interrupciones, existe una que es para el puerto paralelo.. pero como la utilizo?...
No es posible acceder a una IRQ con Delphi. El concepto de "interrupciones" en güindos ha sido desechado. Creo que debes buscar algo asi;

Código Delphi [-]
hDevice := CreateFile('\\.\COM1', GENERIC_READ or //...
ReadFile(hDevice, Buffer, SizeOf(Buffer), Count, @Overlapped);
//...

y el manejo de Overlapped.hEvent (talvez en un hilo) con WaitForSingleObject

Suerte
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #3  
Antiguo 03-04-2009
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por candia Ver Mensaje
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.
Si, es facil, pero en Pascal (TB7 por ejemplo)


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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 20:00:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi