中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。
一、什么是中断
虽然现在win9x已经有了PNP(即插即用)功能,但是中断冲突仍然是不可避免的,其中最为容易发生冲突的就是IRQ、DMA和I/O。首先我们先了解一下IRQ、DMA和I/O的概念:
1、IRQ(Interrupt Request)
IRQ英文全称Interrupt Request,中文翻译为中断请求线。计算机中有许多设备(例如声卡、硬盘等)他们都能在没有CPU介入的情况下完成一定的工作。但是这些设备还是需要定期中断CPU,让CPU为其做一些特定的工作。如果这些设备要中断CPU的运行,就必需在中断请求线上把CPU中断的信号发给CPU。所以每个设备只能使用自己独立的中断请求线。一般来说在80286以上计算机中,共有16个中断请求线与各种需要用中断的不同外设相连接,(每个中断线有一个标号也就是中断号)。
中断号的分配情况如下:
IRQ 说明
0 定时器
1 键盘
2 串行设备控制器
3 COM2
4 COM1
5 LPT2
6 软盘控制器
7 LPT1
8 实时时钟
9 PC网络
10 可用(Available)
11 可用(Available)
12 PS/2 鼠标
13 数学协处理器
14 硬盘控制器
15 可用(Available)
NM1 奇偶校验
大家现在就可以清楚的看到,IRQ3、4、5、10、11、12、15可供用使用。
2、DMA(Direct Memory Access)
计算机与外设之间的联系一般通过两种方法:一是通过CPU控制来进行数据的传送;二是在专门的芯片控制下进行数据的传送。我们所说的DMA,就是不用CPU控制,外设同内存之间相互传送数据的通道,在这种方式下,外设利用DMA通道直接将数据写入存储器或将数据从存储器中读出,而不用CPU参与,系统的速度会大大增加。
DMA通道分配情况表
DMA 0 可用
DMA 1 EPC打印口
DMA 2 软盘控制器
DMA 3 8位数据传送
DMA 4 DMA控制器
DMA 5 可用
DMA 6 可用
DMA 7 可用
3、I/O(INPUT/OUTPUT)
输入/输出端口,也就是计算机配件与CPU连接的接口。每个端口都有自己唯一的一个端口号,这个端口号称为地址。每一个想和CPU通信的外设或配件都有不同的I/O地址,通常在PC机内部一共有1024个地址。
二、中断冲突的解决
现在我们已经基本知道了IRQ、DMA和I/O的概念,下面我就要说一下如何解决常见的中断冲突问题。
众所周知,现在的win9x已经运用PNP技术,它可以将中断进行自动分配,这种“即插即用”的功能可以说是大大简化了用户的操作。不过任何事物都有好与不好两方面,这种PNP技术也有它的弱点,那就是如果不能认出要安装的新设备,那么自动分配中断时就会产生冲突。现在新的硬件产品层出不穷,各种产品又相互兼容,功能类似,这就导致了win9x常常不能正确检测出新设备,中断冲突也就不可避免了。
知道了冲突产生的原因,那我们如果解决冲突呢?在此我就详细的谈一谈在win9x下中断冲突的解决。首先我们要知道系统中冲突的设备,做法是在控制面板中双击“系统”图标,查看设备管理器中的各设备。一般有“?”和“!”的设备要注意了,有问题的设备就是它们了。解决方法有分两步做:
第一步、先删去有“?”和“!”的设备,然后重新启动,让计算机自己再认一遍这些设备。这样做是因为部分有“?”和“!”的设备可能是驱动程序安装有误,再重装一遍可解决问题。
第二步、如果上面一步还是不能解决问题,现在多半是中断冲突了,那我们只能手动调整来解决中断冲突。在系统=>设备管理器=>属性 中我们可以看到系统资源分配的情况,通过查看此项就可从中了解到哪些系统资源被占用,哪些系统资源还没有用,用户做相应的调整即可。
三、如何防止中断冲突
要防止中断冲突,其实就是要知道什么设备容易产生中断冲突,只要知道了这点,在使用这些设备时稍微注意一下就可以了。下面我列出一些容易冲突的设备,希望对读者有用。
1、声卡:一些早期的ISA型声卡,系统很有可能不认,就需要用户手动设置(一般为5)
2、内置调制解调器和鼠标:一般鼠标用COM1,内置调制解调器使用COM2的中断(一般为3),这时要注意此时COM2上不应有其它设备
3、网卡和鼠标:此问题一般发生在鼠标在COM1口,使用中断为3,这时要注意通常网卡的默认中断为3,两者极有可能发成冲突。
4、打印机和EPP扫描仪:在安装扫描仪驱动程序时应将打印机打开,因为两个设备中串联,所以为了防止以后扫描仪驱动程序设置有误,一定要将打印机打开再安装扫描仪驱动程序。
5、操作系统和BIOS:如果计算机使用了“即插即用”操作系统(例如win98),应将BIOS中PNP OS Installed设置为Yes这样可让操作系统重新设置中断。
6、PS/2鼠标和BIOS:在使用PS/2鼠标时应将BIOS中PS/2 Mouse Function Control打开或设置为Auto,只有这样BIOS才能将IRQ12分配给PS/2鼠标用。