t8259-1.c

来自「并行口实验」· C语言 代码 · 共 72 行

C
72
字号
//T8259-1.c
//8259中断查询方式应用实验

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <bios.h>
#include <ctype.h>
#include <process.h>

void key(void);
void IR0Isr(void);
void IR1Isr(void);

//****************根据查看配置信息修改下列符号值*******************
#define  IOY0         0x9C00
//*****************************************************************
#define  MY8259_ICW1     IOY0 + 0x00*4
#define  MY8259_ICW2     IOY0 + 0x01*4
#define  MY8259_ICW3     IOY0 + 0x01*4
#define  MY8259_ICW4     IOY0 + 0x01*4
#define  MY8259_OCW1     IOY0 + 0x01*4
#define  MY8259_OCW2     IOY0 + 0x00*4
#define  MY8259_OCW3     IOY0 + 0x00*4

void main()
{
	int i,j;

	outp(MY8259_ICW1, 0x13);
	outp(MY8259_ICW2, 0x08);
	outp(MY8259_ICW4, 0x01);
	outp(MY8259_OCW1, 0xFC);
	
	while(1)
	{
		key();
		outp(MY8259_OCW3, 0x0C);
		i = j = inp(MY8259_OCW3);
		
		if((i & 0x80) == 0x80)
		{
			j &= 0x03;
			if(j == 0x00)
				IR0Isr();
			else
				IR1Isr();   
		} 
	}
}

void IR0Isr(void)
{
	printf("0 ");
	outp(MY8259_OCW2, 0x20);
}

void IR1Isr(void)
{
	printf("1 ");
	outp(MY8259_OCW2, 0x20);
}

void key(void)
{
	if (bioskey(1) != 0)
	{
		exit(0);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?