![](/images/new-backgrounds/1206877/20687797x1.webp)
4.6DEMO5
/* demo 5 : Four interrupt source | */ | ||||
/* | PC0 | : initial Low | , active High | */ | |
/* | PC1 | : initial High , active Low | */ | ||
/* | PC2 | : initial Low | , active High | */ | |
/* | PC3 | : 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() |
|
|
| ||
{ | i,j; |
|
|
| |
int |
|
|
| ||
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 CON3 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 PC0, PC1, PC2 & PC3 as external interrupt signal | */ | |
WORD init() |
|
|
{ |
|
|
disable(); | /* disable all interrupt */ | |
outportb(wBase+5,0); | ||