/* ----------------------------------------------------------- */ /* demo 4 : delay 1 ms Using CH-1 */ /* step 1 : CLK-1 select clock1=8M */ /* step 2 : run demo4.exe */ /* ----------------------------------------------------------- */ #include "PCITMC12.H" WORD pci_tmc12_select8254(char cChip); WORD pci_tmc12_c0(char cConfig, char cLow, char cHigh); WORD pci_tmc12_c1(char cConfig, char cLow, char cHigh); WORD pci_tmc12_c2(char cConfig, char cLow, char cHigh); WORD wBaseAddr,wIrq,wPLX; int main() { int i,j; WORD wBoards,wRetVal; char c; clrscr(); wRetVal=PTMC12_DriverInit(&wBoards); printf("\n(1) Threr are %d PCI-TMC12 Cards in this PC",wBoards); if ( wBoards==0 ) { putch(0x07); putch(0x07); putch(0x07); printf("(1) There are no PCI-TMC12 card in this PC !!!\n"); exit(0); } printf("\n(2) Show the Configuration Space of all PCI-TMC12:"); for(i=0; i count 0x1f40 = count 8000 = 1 ms */ /* down count from 8000 --> 7999 --> ..... --> 1 --> 0 --> 0xfff */ delay_one_ms() { int low,high; pci_tmc12_select8254(0); /* select 8254-chip-0 */ pci_tmc12_c0(0x30,0x40,0x1f); /* CH-1,mode-0 down count 8000 */ for (;;) { outportb(wBaseAddr+0x0C,0x00); /* latch counter_0 */ low=inportb(wBaseAddr); high=inportb(wBaseAddr); if (high>0x20) return; } } /* -------------------------------------------------------------------- */ WORD pci_tmc12_select8254(char cChip) { outportb(wBaseAddr+0x10,cChip); return(NoError); } WORD pci_tmc12_c0(char cConfig, char cLow, char cHigh) { outportb(wBaseAddr+0x0C,cConfig); outportb(wBaseAddr ,cLow); outportb(wBaseAddr ,cHigh); return(NoError); } WORD pci_tmc12_c1(char cConfig, char cLow, char cHigh) { outportb(wBaseAddr+0x0C,cConfig); outportb(wBaseAddr+4 ,cLow); outportb(wBaseAddr+4 ,cHigh); return(NoError); } WORD pci_tmc12_c2(char cConfig, char cLow, char cHigh) { outportb(wBaseAddr+0x0C,cConfig); outportb(wBaseAddr+8 ,cLow); outportb(wBaseAddr+8 ,cHigh); return(NoError); }