4.5DEMO4
/* demo 4 | : Count high pulse of PC0 | */ | |
/* | (initial High & active Low) | */ | |
/* step 1 | : run DEMO4.EXE | */ | |
/* |
| */ | |
#include "PIO.H" |
|
| |
#define A1_8259 | 0x20 |
| |
#define A2_8259 | 0xA0 |
| |
#define EOI | 0x20 |
|
WORD init_high();
WORD wBase,wIrq;
static void interrupt irq_service(); int COUNT,irqmask,now_int_state;
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 CON3 as D/I ports */ | ||
COUNT=0; |
|
| |
init_high(); |
|
| |
printf("\n\n***** show the count of Low_pulse *****\n"); |
| ||
for (;;) |
|
| |
{ |
|
| |
gotoxy(1,7); |
|
| |
printf("\nCOUNT=%d",COUNT); |
|
| |
if (kbhit()!=0) break; |
|
| |
} | /* disable all interrupt */ | ||
outportb(wBase+5,0); | |||
PIO_DriverClose(); |
|
| |
} |
|
| |
/* Use PC0 as external interrupt signal |
| */ | |
WORD init_high() |
|
| |
{ |
|
| |
disable(); | /* disable all interrupt */ | ||
outportb(wBase+5,0); | |||
if (wIrq<8) |
|
| |
{ |
|
| |
irqmask=inportb(A1_8259+1); |
|
| |
outportb(A1_8259+1,irqmask & 0xff ^ (1<<wIrq)); |
| ||
setvect(wIrq+8,irq_service); |
|
| |