// Demo 2 : PIO-D168 D/I/O demo // // step 1 : connect a CN2 to CN3 // // step 2 : run DEMO2.EXE // // -------------------------------------------------------------- // #include "PIO.H" WORD wBase,wIrq; int main() { int i1,i2,i3,j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14,j15,j16,j17; int i; 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 // wRetVal=PIO_DriverInit(&wBoards,0x80,0x01,0x50); // for PIO-D168 printf("\n(1) There are %d PIO-D168 Cards in this PC",wBoards); if ( wBoards==0 ) exit(0); printf("\n\n-------------- The Configuration Space --------------"); for(i=0;i "); ShowPioPiso(wSubVendor,wSubDevice,wSubAux); } PIO_GetConfigAddressSpace(0,&wBase,&wIrq,&t1,&t2,&t3,&t4,&t5); // select card_0 // step2 : enable all D/I/O port // outportb(wBase,1); // /RESET -> 1 // step3 : configuration & initial value setting // outportb(wBase+0xc4,3); // I/O Port3 is active now outportb(wBase+0xc0,0); // sent initial value to Port3 outportb(wBase+0xc4,4); // I/O Port4 is active now outportb(wBase+0xc0,0); // sent initial value to Port4 outportb(wBase+0xc4,5); // I/O Port5 is active now outportb(wBase+0xc0,0); // sent initial value to Port5 outportb(wBase+0xc8,0x07); // set Port0 to Port2 as DI port // Port3 to Port5 as DO port outportb(wBase+0xcc,0x3f); // set Port6 to Port11 as DI port outportb(wBase+0xd0,0x3f); // set Port12 to Port17 as DI port i=1; for (;;) { i1=i&0xff; i2=(i>>8)&0xff; i3=(i>>16)&0xff; // Port3 to Port5 outportb(wBase+0xc4,3); outportb(wBase+0xc0,i1); outportb(wBase+0xc4,4); outportb(wBase+0xc0,i2); outportb(wBase+0xc4,5); outportb(wBase+0xc0,i3); // Port6 to Port8 outportb(wBase+0xc4,6); j3=inportb(wBase+0xc0)&0xff; outportb(wBase+0xc4,7); j4=inportb(wBase+0xc0)&0xff; outportb(wBase+0xc4,8); j5=inportb(wBase+0xc0)&0xff; gotoxy(1,8); printf("\n CN2 [PA,PB,PC] => CN3 [PA,PB,PC]"); printf("\nOutput=[%2x,%2x,%2x] => Input=[%2x,%2x,%2x]",i3,i2,i1,j5,j4,j3); delay(500); i=(i<<1)&0xffffff; if (i==0) i=1; if (kbhit()!=0) return; } PIO_DriverClose(); }