{
irqmask=inportb(A1_8259+1);
outportb(A1_8259+1,irqmask & 0xfb);/* IRQ2 */ irqmask=inportb(A2_8259+1);
outportb(A2_8259+1,irqmask & 0xff ^
}
outportb(wBase+5,1); | /* enable interrupt (P2C0) */ | |
now_int_state=0; | /* now ini_signal is low | */ |
outportb(wBase+0x2a,1); | /* select the | */ |
enable(); |
|
|
} |
|
|
void interrupt irq_service() |
|
|
{ | /* now P2C0 change to low | */ |
if (now_int_state==1) | ||
{ | /* INT_CHAN_0 = !P2C0 | */ |
COUNT_L++; | /* find a low pulse (P2C0) | */ |
if ((inportb(wBase+7)&1)==0) | /* P2C0 still fixed in low | */ |
{ | /* need to generate a high pulse */ | |
outportb(wBase+0x2a,1); | /* INV0 select noninverted input */ | |
now_int_state=0; | /* now P2C0=low | */ |
} | /* now P2C0=High | */ |
else now_int_state=1; | ||
} | /* now P2C0 change to high | */ |
else | ||
{ | /* INT_CHAN_0 = P2C0 | */ |
COUNT_H++; | /* find a high pulse (P2C0) | */ |
if ((inportb(wBase+7)&1)==1) | /* P2C0 still fixed in high | */ |
{ | /* need to generate a high pulse */ | |
outportb(wBase+0x2a,0); | /* INV0 select inverted input | */ |
now_int_state=1; | /* now P2C0=high | */ |
} | /* now P2C0=low | */ |
else now_int_state=0; | ||
} |
|
|
if (wIrq>=8) outportb(A2_8259,0x20); outportb(A1_8259,0x20);
}