实验题目
- 单中断请求实验:利用系统总线上中断请求信号MIR7,设计一个单一中断请求实验
- 双中断优先级实验:利用系统总线上中断请求信号MIR6和MIR7,设计一个双中断优先级应用实验,观察8253对中断优先级的控制
实验要求
- (1)单中断请求实验:单脉冲KK1+与主片8259的IR7相连。每按KK1+,进入一次中断,输出7;
(2)双中断优先级实验:单脉冲KK1+连主片8259的IR7,KK2+连其IR6。每当KK1+按下时显示“7”,每当KK2+按下显示“6”;
了解8259
中断控制器8259简介
在Intel 386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。从片的INT连接到主片的IR2信号上构成两片8259的级联。
在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。8259的内部连接及外部管脚引出如图:
操作命令字1寄存器(OCW1)说明:
注:这里就简单的提下OCW1控制命令字的格式,ICW1–ICW4一般电脑都默认初始化了的,只不过我们自己在实验过程中需要自己编写代码初始化的,但是格式是一样的,记住模板就行了,OCW1却是会变换的,所以学习下OCW1的写法。
- OCW1简单说来就是,需要哪个中断(8259有7个,IR0-IR7),我们就把哪个中断置0,这是提醒一下,IR4都是会使用的,供系统串口使用,所以IR4那位一直是0,比如这里我们需要7号中断(IR7),那么格式就是01101111,也就是6F。
- 在这里,海轰其实一直有个疑问?为什么要设置操作命令字?操作命令字是干什么的? emmmm,说说海轰的理解:8259作为一款芯片,可以做的事情很多,但是一般来说,我们产品只需要一个功能,比如在这里就是需要7号中断。那么事先我们就需要通过程序来使得该芯片的功能确定下来。简单说来就是:确定芯片的工作方式(它要工作,首先它得知道需要干什么吧)
单中断请求流程
这个理解记住,代码就会写了!
单中断请求实验代码
解释
为什么上面几行代码中地址是003C和003E?
首先我们知道子程序入口是中断类型号*4,那么IR7的中断类型号是多少呢?
从下图可以看出,IR7的中断类型号是F(0F),0F×4=003C
003E=0F×4+2
现在知道入口地址怎么来了吧 O(∩_∩)O哈哈~
为什么ICW1送入20H,而ICW2-ICW3,OCW1都送入21H呢?
这也比较好理解:首先我们需要初始化ICW、OCW,就是给他们赋初值。那么第一步肯定得知道他们在哪吧,然后再赋值。8088规定的是ICW1送入地址在20H,其他在21H(别问为什么,我也不知道,按照规则办事就行)。
双中断优先级实验代码(前一个代码懂了,这一个就简单了 )