⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t8259-1.c

📁 并行口实验
💻 C
字号:
//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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -