4.3Demo2: Use D/O of CN1~CN6
/* | */ |
/* demo 2 : D/O demo for CN1 ~ CN6 | */ |
/* step 1 : connect a | */ |
/* step 2 : run DEMO2.EXE | */ |
/* step 3 : check the LED's of | */ |
/* | */ |
#include "PIO.H" |
|
int main()
{
int i,j,k,jj;
WORD wBoards,wRetVal;
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); | ||
/* step 1: make sure which ports are D/O ports |
| */ | |
/* in this demo | */ | ||
/* step 2: enable all D/I/O port | */ | */ | |
outp(wBase,1); | /* enable D/I/O |
| |
/* step 3: select the active port |
| */ |
/* step 4: send
/* step 5: repeat for all D/O ports | */ |
| |
for (i=0; i<18; i++) |
|
|
|
{ |
|
| */ |
outp(wBase+0xc4,i); /* select CN1 to CN6 port |
| ||
outp(wBase+0xc0,0); /* set | */ | ||
} |
|
|
|
/* step 6: configure all I/O port */ |
| */ | |
outp(wBase+0xc8,0x00); | /* CN1 to CN2 port are all output | ||
outp(wBase+0xcc,0x00); | /* CN3 to CN4 port are all output | */ | |
outp(wBase+0xd0,0x00); | /* CN5 to CN6 port are all output | */ | |
/* K=PA/PB/PC | */ |
|
|
|
|
| |
|
|