4.6DEMO5
/* 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 | */ | ||||
. |
|
|
|
| |
. |
|
| /* select card_0 */ | ||
/* step2 : enable all D/I/O port | |||||
/* /RESET | */ | ||||
outportb(wBase,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);
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;
}
outportb(wBase+5,0); | /* disable all interrupt */ | |
PIO_DriverClose(); |
|
|
} |
|
|
/* Use P2C0, P5C0, P8C0 & P11C0 as external interrupt signal | */ | |
WORD init() |
|
|
{ |
|
|
|