beautypg.com

Refer to sec. 2.5.1 for more information – Omega OME-PIO-D144 User Manual

Page 42

background image

outp(wBase+5,0);

/* disable all interrupt */

PIO_DriverClose();

}

/* --------------------------------------------------------------- */

/* Use PC0 as external interrupt signal

*/

WORD init_low()

{

DWORD dwVal;

disable();

outp(wBase+5,0);

/* disable all interrupt */

if (wIrq<8)

{

irqmask=inp(A1_8259+1);

outp(A1_8259+1,irqmask & (0xff ^ (1 << wIrq)));

setvect(wIrq+8, irq_service);

}

else

{

irqmask=inp(A1_8259+1);

outp(A1_8259+1,irqmask & 0xfb); /* IRQ2 */

outp(A1_8259+1,irqmask & (0xff ^ (1 << wIrq)));

irqmask=inp(A2_8259+1);

outp(A2_8259+1,irqmask & (0xff ^ (1 << (wIrq-8))));

setvect(wIrq-8+0x70, irq_service);

}

outp(wBase+0x2a,0);

/* select the non-inverte input */

now_int_state=0;

/* now int_signal is low

*/

outp(wBase+5,1);

/* enable interrupt

*/

enable();

}

void interrupt irq_service()

{

if (now_int_state==0)

{

COUNT++;

/* find a high_pulse */

outp(wBase+0x2a,1); /* select the inverte input */

now_int_state=1;

/* now int_signal is High */

}

else

{

/* find a low_pulse here */

outp(wBase+0x2a,0); /* select the non-inverte input */

now_int_state=0;

/* now int_signal is High

*/

}

if (wIrq>=8) outp(A2_8259,0x20);

outp(A1_8259,0x20);

}

Refer to Sec. 2.5.1 for more information.

OME-PIO-D144 User’s Manual (Ver.2.1, Sep/2001)

---- 40