Example 2: assume initial level=High, PC0 is used as interrupt source:

Initial=High Inverted=Low

Iniaial_sub()

{ now_int_state=1

_outpd(wBase+0x2a,1) /*(select the inverted signal)*/

ISR_sub()

{

If (now_int_state==0) /* old state=low Æ change to high now */

{

 

 

 

 

now_int_state=1;

/* now int_signal is High

*/

 

/*** application codes are given here ***/

 

 

_outpd(wBase+0x2a,1);

/* select the inverted signal

*/

}

 

 

 

 

else

/* old state=highÆ change to low now

*/

{

 

 

 

 

now_int_state=0;

 

/* now int_signal is Low

 

*/

/*** application codes are given here ***/

_outpd(wBase+0x2a,0);

/* select the non-inverted signal */

}

 

 

 

 

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

/*

EOI

*/

outp(A1_8259,0x20);

 

/*

EOI

*/

}

Refer to DEMO4.C for source code.

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

---- 10

Page 12
Image 12
Omega OME-PIO-D144 manual Refer to DEMO4.C for source code