4.2 Demo1: Use D/O of CN1
/* | */ | |
/* demo 1 : D/O demo | */ | |
/* step 1 : connect a | */ | |
/* step 2 | : run DEMO1.EXE | */ |
/* step 3 | : check the LEDs of | */ |
/* | */ |
#include "PIO.H"
int main()
{
int i;
WORD wBoards;
WORD wBase,wIrq,wSubVendor,wSubDevice,wSubAux,wSlotBus,wSlotDevice; char c;
clrscr();
PIO_DriverInit(&wBoards,0x80,0x01,0x00); /* for
{
putch(0x07); putch(0x07); putch(0x07);
printf("(1) There are no
exit(0);
}
printf("\n(2) The Configuration Space
{
PIO_GetConfigAddressSpace(i,&wBase,&wIrq,&wSubVendor,&wSubDevice, &wSubAux,&wSlotBus,&wSlotDevice);
printf("\nCard_%d:wBase=%x,wIrq=%x,subID=[%x,%x,%x],SlotID=[%x,%x]" ,i,wBase,wIrq,wSubVendor,wSubDevice,wSubAux,wSlotBus,wSlotDevice);
}
/* select card_0 */
PIO_GetConfigAddressSpace(0,&wBase,&wIrq,&wSubVendor,&wSubDevice, &wSubAux,&wSlotBus,&wSlotDevice);
printf("\n(3) *** Card_0 D/O test, wBase=%x ***",wBase);
/* step 1: make sure which ports | are D/O | ports | */ | |
/* in this demo | CN1_PC are D/O port */ | |||
/* step 2: enable all D/I/O port |
|
| */ | |
outp(wBase,1); | /* enable D/I/O |
| */ | |
/* step 3: select the active port |
|
| */ | |
outp(wBase+0xc4,0); | /* select CN1_PA |
| */ |
/* step 4: send | active port */ | |
outp(wBase+0xc0,0); | /* set CN1_PA0 to CN1_PA7 to 0 | */ |
/* step 5: repeat for all D/O ports | */ | |
outp(wBase+0xc4,1); | /* select CN1_PB | */ |
outp(wBase+0xc0,0); | /* set CN1_PB0 to CN1_PB7 to 0 | */ |
outp(wBase+0xc4,2); | /* select CN1_PC | */ |
outp(wBase+0xc0,0); | /* set CN1_PC0 to CN1_PC7 to 0 | */ |
/* step 6: configure all | I/O port | */ |
outp(wBase+0xc8,0x00); | /* CN1 to CN2 port are all output */ | |
|