4.6 DEMO5
/* 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 */
outportb(wBase,1); /* /RESET -> 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);
tportb(wBase+5,0); /* disable all interrupt */
Use P2C0, P5C0, P8C0 & P11C0 as external interrupt signal */
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;
}
ou
PIO_DriverClose();
}
/*
WORD init()
OME-PIO-D96 User Manual (Ver.1.1, Mar/2003) ---- 45
{