Omega Vehicle Security OME-PIO-D56 User Manual

Page 46

Advertising
background image

irqmask=inportb(A1_8259+1);

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

setvect(wIrq+8,irq_service);

}

else

{

irqmask=inportb(A1_8259+1);

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

irqmask=inportb(A2_8259+1);

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

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

}

outportb(wBase+5,1); /* enable interrupt (PC0) */

now_int_state=0; /* now ini_signal is low */

outportb(wBase+0x2a,1); /* select the non-inverte */

enable();

}

void interrupt irq_service()

{

if (now_int_state==1) /* now PC0 change to low */

{ /* INT_CHAN_0 = !PC0 */

if ((inportb(wBase+7)&1)==0) /* PC0 still fixed in low */

{ /* need to generate a high pulse */

outportb(wBase+0x2a,1); /* INV0 select noninverted input */

now_int_state=0; /* now PC0=low */

}

else now_int_state=1; /* now PC0=High */

}

else /* now PC0 change to high */

{ /* INT_CHAN_0 = PC0 */

COUNT++;

if ((inportb(wBase+7)&1)==1) /* PC0 still fixed in high */

{ /* need to generate a high pulse */

outportb(wBase+0x2a,0); /* INV0 select inverted input */

now_int_state=1; /* now PC0=high */

}

else now_int_state=0; /* now PC0=low */

}

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

outportb(A1_8259,0x20);

}








OME-PIO-D56/PIO-D24 User Manual (Ver.2.1, Oct/2003, PPH-005-21) ---- 44

Advertising