Omega Engineering OME-PIO-D96 manual DEMO5

Models: OME-PIO-D96

1 51
Download 51 pages 21.71 Kb
Page 47
Image 47

4.6DEMO5

/* demo 5 : Four interrupt sources

*/

/*

P2C0

: initial Low

, active High

*/

/*

P5C0

: initial High , active Low

*/

/*

P8C0

: initial Low

, active High

*/

/*

P11C0 : initial High , active Low

*/

/* step 1 : run DEMO5.EXE

 

*/

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

 

 

*/

#include "PIO.H"

 

 

 

#define A1_8259 0x20

 

 

#define A2_8259 0xA0

 

 

#define EOI

 

0x20

 

 

WORD init();

 

 

 

 

WORD wBase,wIrq;

 

 

 

static void interrupt irq_service();

 

int irqmask,now_int_state,new_int_state,invert,int_c,int_num;

 

int CNT_L1,CNT_L2,CNT_L3,CNT_L4;

 

 

int CNT_H1,CNT_H2,CNT_H3,CNT_H4;

 

 

int main()

 

 

 

 

{

 

 

 

 

int i,j;

 

 

 

 

WORD wBoards,wRetVal,t1,t2,t3,t4,t5,t6;

 

WORD wSubVendor,wSubDevice,wSubAux,wSlotBus,wSlotDevice;

 

char c;

 

 

 

 

clrscr();

 

 

 

 

/* step1 : find address-mapping of PIO/PISO cards

*/

.

 

 

 

 

.

 

 

/* select card_0 */

/* step2 : enable all D/I/O port

/* /RESET -> 1

*/

outportb(wBase,1);

*/

/* step3 : configure I/O direction

*/

outportb(wBase+0xcc,0x00);

/* set CN1 as D/I ports */

outportb(wBase+0xdc,0x00);

/* set CN2 as D/I ports */

outportb(wBase+0xec,0x00);

/* set CN3 as D/I ports */

outportb(wBase+0xfc,0x00);

/* set CN4 as D/I ports */

init();

printf("\n***** show the count of pulse *****\n");

for (;;)

{

gotoxy(1,7);

printf("\n(CNT_L,CNT_H)=(%d,%d) (%d,%d) (%d,%d) (%d,%d) %x",CNT_L1,CNT_H1,CNT_L2,CNT_H2,CNT_L3,CNT_H3,CNT_L4,CNT_H4,int_num);

if (kbhit()!=0) break;

}

outportb(wBase+5,0);

/* disable all interrupt */

PIO_DriverClose();

 

 

}

 

 

/* Use P2C0, P5C0, P8C0 & P11C0 as external interrupt signal

*/

WORD init()

 

 

{

 

 

OME-PIO-D96 User Manual (Ver.1.1, Mar/2003)

 

---- 45

Page 47
Image 47
Omega Engineering OME-PIO-D96 manual DEMO5