精华内容
下载资源
问答
  • 2021-06-24 09:10:50

    微机原理实验---中断控制实验

    深 圳 大 学 实 验 报 告

    课程名称: 微机计算机设计

    实验项目名称: 8259 中断控制实验

    学院: 信息工程学院

    专业: 电子信息工程

    指导教师:

    报告人: 学号: 2009100000班级: <1>班

    实验时间: 2011. 05.19

    实验报告提交时间: 2011. 05. 26

    教务处制

    一、实验目的

    1. 掌握8259 中断控制器的工作原理。

    2. 学习8259 的应用编程方法。

    3. 掌握8259 级联方式的使用方法。

    二、实验要求

    1、8259 单中断实验,由单次脉冲输出与主片8259 的IR7 相连可以实现每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。

    2、8259 级联实验,由KK1+连接到主片8259 的IR7 上,KK2+连接到从片8259 的IR1 上,可实现当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。

    三、实验设备

    PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。

    四、实验原理

    1、在Intel 386EX 芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A 是一致的,操作方法也相同。从片的INT 连接到主片的IR2 信号上构成两片8259 的级联。在TD-PITE 实验系统中,将主控制器的IR6、IR7 以及从控制器的IR1 开放出来供实验使用,主片8259 的IR4 供系统串口使用。8259 的内部连接及外部管脚引出如图:

    2、在对8259 进行编程时,首先必须进行初始化。一般先使用CLI 指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259 有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片8259 时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259 的顺序与初始化主片8259 的顺序是相同的。系统启动时,主片8259 已被初始化,且4 号中断源(IR4)提供给与PC 联机的串口通信使用,其它中断源被屏蔽。

    五、实验过程

    1、8259 单中断实验

    (1)按图接线好电路。

    (2)编写实验程序,经编译、链接无误后装入系统。(代码如下):

    SSTACK SEGMENT STACK

    DW 32 DUP(?)

    SSTACK ENDS

    CODE SEGMENT

    ASSUME CS:CODE

    START: PUSH DS

    MOV AX, 0000H

    MOV DS, AX

    MOV AX, OFFSET MIR7 ;取中断入口地址

    MOV SI, 003CH ;中断矢量地址

    MOV [SI], AX ;填IRQ7 的偏移矢量

    MOV AX, CS ;段地址

    MOV SI, 003EH

    MOV [SI], AX ;填IRQ7 的段地址矢量

    CLI

    POP DS

    ;初始化主片8259

    MOV AL, 11H

    OUT 20H, AL ;ICW1

    MOV AL, 08H

    OUT 21H, AL ;ICW2

    MOV AL, 04H

    OUT 21H, AL ;ICW3

    MOV AL, 01H

    OUT 21H, AL ;ICW4

    MOV AL, 6FH ;OCW1

    OUT 21H, AL

    STI

    AA1: NOP

    JMP AA1

    MIR7: STI

    CALL DELAY

    MOV AX, 0137H

    INT 10H ;显示字符7

    MOV AX, 0120H

    INT 10H

    MOV AL, 20H

    OUT 20H, AL ;中断结束命令

    IRET

    DELAY: PUSH CX

    MOV CX, 0F00H

    AA0: PUSH AX

    POP AX

    LOOP AA0

    POP CX

    RET

    CODE ENDS

    END START

    (3)运行程

    更多相关内容
  • arm gic 中断控制工作原理概述

    千次阅读 2018-07-21 19:46:08
    linux pinctrl 里面有个gpio抽象的中断控制器与系统的gic中断控制器级联cascade 阅读arm generic interrupter controller architecture specification,总结下 支持的中断类型 平常工作接触到的是ppi,sgi和spi...

    linux pinctrl 里面有个gpio抽象的中断控制器与系统的gic中断控制器级联cascade

    阅读arm generic interrupter controller architecture specification,总结下

    支持的中断类型

    平常工作接触到的是ppi,sgi和spi,ppi和sgi是对某一个核的,spi是对所有核的,sgi一般是用来核间通信

    gic 的hw 分为简单两部分distributor和cpu interface(实际上还有int service 和 redistributor),下图以是gic工作原理的简化图,distributor是只有一个,cpu interface 每个核有一个,每个核可以通过一个private bus去访问gic的寄存器

    distributor 的功能包括(针对不同类型中断可能支持的功能不同,如下只描述spi):

    .中断的优先级控制(group0  group1)

    .中断的security 配置(secure  non-secure)

    .中断的affinity配置(亲核性 )

    .中断的level-edge sensitive

    .对中断active或者pending(state machine)

    cpu interface的功能包括:

    .中断的ACK

    .中断的priority drop

    .中断在对应的security状态执行(secure  non-secure)

    .中断的deavtive

    gic state machine

    一般的中断处理流程: 中断的初始状态是inactive,device assert 中断后状态变为pending如果这个时候priority security 条件都满足的话cpu interface会ack to this interrupter,中断的状态变为active,系统读取中断号然后执行中断,如果之后该device没有再assert中断的话,中断的状态就变为了inactive

    device assert 中断对于level-edge sensitive(配置在distributor)的中断是不一样的,这次想翻看gic文档的目的是想知道level sensitive的中断gic会不会有device已经关掉中断,gic还记录着该中断是pending的状态,答案是不会

    展开全文
  • 中断实现的基本原理

    万次阅读 2018-08-14 19:23:31
    中断原理篇 前言: 中断是计算机发展中一个重要的技术,它的出现很大程度上解放了CPU,提高了CPU的执行效率。 在中断出现之前,CPU对IO采用的是轮询的方式进行服务,这使的CPU纠结在某一个IO上,一直在等待它的...

    中断之原理篇

    前言:

    中断是计算机发展中一个重要的技术,它的出现很大程度上解放了CPU,提高了CPU的执行效率。

    在中断出现之前,CPU对IO采用的是轮询的方式进行服务,这使的CPU纠结在某一个IO上,一直在等待它的响应,如果它不响应,CPU就在原地一直的等下去。这样就导致了其他IO口也在等待CPU的服务,如果某个IO出现了important or emergency affairs,CPU也抽不出身去响应这个IO。

    为了解决这个纠结的问题就——>出现了中断

    中断控制的主要优点是只有在IO接口需要服务时才去响应它,使得CPU很淡定的做它自己的事情,只有IO口有需求的时候才去响应它。同时中断中也设计了中断优先级,来处理一些很紧急的事件。

    一.中断的基本知识

    1.中断的概念:

    所谓中断,是指CPU在正常运行程序时,由于程序的预先安排或内外部事件,引起CPU中断正在运行的程序,而转到发生中断事件程序中。这些引起程序中断的事件称为中断源。

    其实从物理学的角度看,中断是一种电信号,由硬件设备产生,并直接送入中断控制器(如 8259A)的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知 OS 已经产生中断。这样,OS 就可以对这个中断进行适当的处理。不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识,这些值通常被称为中断请求线。

    2.那么当产生一个中断时,CPU是如何识别的呢?

    在Intel X86中可以支持256中向量中断,为了使处理器能使别每种中断源,给它们进行了编号—–>叫做中断向量

    3.这些中断向量在Linux中是如何分配的:

    编号0~31的向量对应于异常和非屏蔽中断

    编号32~47的向量(即由IO设备引起的中断)分配给屏蔽中断。

    编号48~255的向量用来标示软中断。Linux用其中的128或0x80来实现系统调用

    非屏蔽中断的向量和异常的向量是固定的。

    4.异常和中断的区别:

    1>异常:是指CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况。同时异常也称为同步中断,因此只有在一条指令执行后才会发出中断 ,不可能在指令执行期间发生异常。

    a.产生的原因:

    程序的错误产生的(eg:除数为0)

    内核必须处理的异常条件产生的(eg:缺页)

    b.异常又分为故障和陷阱,它们都不使用中断控制器,也不能被屏蔽

    C.X86处理处理器中大约有20中异常。Linux内核必须为每种异常提供一个专门的异常处理程序。

    2>中断:也称为异步中断。因此它是由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能在指令之间发生。

    a.中断又分为外部可屏蔽中断(INTR)和外部非屏蔽中断(NMI)

    所用I0设备产生的中断请求均引起可屏蔽中断

    硬件故障引起的故障则产生非屏蔽中断。

    John说明:

    在CPU执行一个异常处理程序时,就不再响应其他异常和中断请求服务.那么如果此时发生了一个异常,CPU不能去响应它,又不能把它的信息丢失该怎么办呢?

    这是就用到了堆栈,把所有的信息压入栈。等当前异常处理后,才从堆栈中取出信息再响应刚才的异常。(当产生多个非屏蔽中断时,CPU的处理方法同上)

    二APIC和8259A

    中断的实现也需要硬件上的支持的,那么硬件上是如何支持中断的?

    1.在X86计算机的 CPU 为中断只提供了两条外接引脚:NMI 和 INTR。

    NMI 是不可屏蔽中断,它通常用于电源掉电和物理存储器奇偶校验;

    INTR是可屏蔽中断,可以通过设置中断屏蔽位来进行中断屏蔽,它主要用于接受外部硬件的中断信号,这些信号由中断控制器传递给 CPU。

    2.中断控制器

    目前常见的中断控制器有可编程中断控制器8259A和高级可编程中断控制器(APIC)

    1>8259A

    PIC(Programmable Interrupt Controller)是由两片 8259A 的外部芯片以“级联”的方式连接在一起。每个芯片可处理多达 8 个不同的 IRQ。因为从 PIC 的 INT 输出线连接到主 PIC 的 IRQ2 引脚,所以可用 IRQ 线的个数达到 15 个。

    我们来看一个图:(进行看图说明)

    a.第一级8259A是主中断控制器,它的第二个中断请求输入端与第二级8259A的中断输出端INT相连。

    b.与中断控制器相连的每条线叫做中断线。要使用中断线,就要进行中断线的申请,即IRQ。

    那么这条线的名字是啥勒----》中断号。

    IRQ线是从0开始顺序编号的,所以第一条IRQ线就是IRQ0。

    C.那么该中断号于我们上面所说的中断向量有什么关系呢

    中断向量=中断号+32。

    从此等式可以看出,第一个中断线(IR0)所对应的中中断向量是32.

    由此可以得出:

    (1)异常和非屏蔽向量是CPU 内部引起的中断

    (2)向量32-47对应的是外部中断。

    d.并不是每个设备都可以向中断线上发中断信号,只有对某一条确定的中断线拥有了控制权后,才可以向这条中断线上发送信号。

    e.8259A中还有一个很重要的寄存器->8位的中断屏蔽寄存器->这个寄存器的作用是屏蔽中断。

    8位的中断屏蔽寄存每一位对应8259A中的一条中断线,如果要禁用某条中断线,则把中断屏蔽寄存器的相应位置1,要启用则置0。

    John哥说明:

    屏蔽中断也可以从CPU的角度考虑,即清除eflag的中断标志位(IF),当IF位为0时禁止任何外部IO的中断请求,即关中断;

    f.共享中断(一个很重要的概念,后面程序中会涉及到它)

    由于计算机的外部设备越来越多,所以15条中断线已经不够用了。中断线是很宝贵的资源,为了更好的利用它,只有当设备需要中断的时候才申请占用一个IRQ,并且为了让更多的设备使用中断采取了在申请IRQ时采用共享中断的方式。

    2>高级可编程中断控制器(APIC)

    先看图再说:

    1.8259A 只适合单 CPU 的情况,为了充分挖掘 SMP 体系结构的并行性,能够把中断传递给系统中的每个 CPU 至关重要。基于此理由,Intel 引入了一种名为 I/O 高级可编程控制器的新组件,来替代老式的 8259A 可编程中断控制器。该组件包含两大组成部分:一是“本地 APIC”,主要负责传递中断信号到指定的处理器;举例来说,一台具有三个处理器的机器,则它必须相对的要有三个本地 APIC。另外一个重要的部分是 I/O APIC,主要是收集来自 I/O 装置的 Interrupt 信号且在当那些装置需要中断时发送信号到本地 APIC,系统中最多可拥有 8 个 I/O APIC。

    2.每个本地 APIC 都有 32 位的寄存器,一个内部时钟,一个本地定时设备以及为本地中断保留的两条额外的 IRQ 线 LINT0 和 LINT1。所有本地 APIC 都连接到 I/O APIC,形成一个多级 APIC 系统。

    那么我们如何知道我们机子上使用的是那种中断控制器呢?

    我们可以通过在终端出入命令:cat /proc/interrupts来查看

    a.若看到列表中有IO-APIC,说明您的系统正在使用 APIC。

    若看到 XT-PIC,意味着您的系统正在使用 8259A 芯片。

    16位实地址模式的中断机制和32位保护模式的中断机制的最本质差别就是在保护模式心爱引入了中断描述表

    在单处理器的系统中,第一列是中断号,第二列是CPU产生该中断的次数。最后一列是于这个中断相关的俄设备名字。这个名字是通过参数devname提供给函数request_irq()(下篇文章会对它讲解)

    三.中断描述表

    1.为什么引入

    在实地址模式中,CPU把内存中从0开始的1kb空间作为一个中断向量表。表中的每个表项占四个字节,由两个字节的段地址和两个字节的偏移量组成,这样构成的地址就是相应中断处理程序的入口地址。

    但是在保护模式下,由4个字节的表项构成的中断向量表已经不能满足要求了。在保护模式下,中断向量表中的表项由8个字节组成。此时他也有了新的名字—->中断描述表(Interrupt Descriptor Table,IDT),其中的每个表项叫做一个门描述符(great descriptor)

    先来看图在说明:

    1>DPL:段描述符的特权级

    2>偏移量:入口函数地址的偏移量

    3>P:表示段是否在内存中的标志

    4>段选择符:入口函数所处代码段的选择符

    5>D:标志位,1表示32位,0标示16位

    6>xxx:3位门类型码

    门类型符主要分为

    a.中断门(interrupt gate):其类型码为110,中断门包含了一个中断或异常处理程序所在段的选择符和段内偏移量。

    当控制权通过中断门进入中断处理程序时,处理器清IF标志即关中断这样就避免了中断嵌套的发生。

    中断门中的DPL(请求特权级)为0,因此用户态中的进程不能访问中断门。所用的中断处理程序都由中断门激活,并全部限制在内核态。

    b..陷阱门(tap gate)其类型码为111。它与中断门类似,唯一的区别是控制权通过陷阱门进入处理程序时保持IF标志位不变,即不关中断。

    c.系统门(system gate):Linux内核特别设置的,用来让用户态的进程访问Intel的陷阱门。

    系统门的DPL为3。系统调用就是通过系统门进入内核的。

    2.在保护模式下,中断描述符表在内存的位置不再局限于从地址0开始的位置,而是可以放在内存的任何位置。

    1>为了实现这个功能—>CPU中设计了一个中断描述符表寄存器IDTR,用来存放中断描述符表在内存的起始位置。

    2>中断描述表寄存器是一个48位的寄存器。它的低16为保存中断描述符表的大小,高32位保存中断描述表的基址。

    3>看下图:

    我们知道了中断描述表的功能和基本设置后,那么系统是是在何时给它初始化以及是如何给它初始化的呢?

    首先Linux内核在系统的初始化阶段对中断进行初始化,其中包括有:初始化可编程控制器8259A;将中断描述符表的起始地址装入IDTR中,并初始化表中的每一项。

    3.中断的初始化

    1>用户进程可以通过INT指令发出一个中断请求,其中断请求向量在0~255之间。

    那么如何防止用户使用INT指令模拟非法的中断和异常?

    此时DPL就起作用了->将DPL置为0就可以了。

    2>但是,有时候必须让用户进程能够使用内核所提供的功能(比如系统调用)也就是从用户态进入内核态,此时就可以通过把中断门或陷阱门的DPL置为3来实现。

    3>当计算机在实模式时,中断描述符表被初始化,并由BIOS使用。

    but,在进入了Linux内核时,中断描述符表就被移到内存的另一个区域,并为进入保护模式进行预初始化:

    用汇编指令LIDT对中断描述符表寄存器IDTR进行初始化,即把IDTR置为0,然后把中断描述符表IDT的起始地址装入IDTR。

    4>中断描述表的初始化

    a.第一次初始化:用setup_idt()函数填充中断描述符表中的256个表项,填充时使用一个空的中断处理程序。因为现在还是在初始化阶段,还没有任何中断处理程序,因此,用这个空的中断处理程序来填充每个表项。

    b.第二此初始化:内核在启用分页功能后对IDT进行第二此初始化。

    此时,使用实际的陷阱和中断处理程序替换这个空的处理程序。一旦这个过程完成后,对于每个异常,IDT都包含一个专门的陷阱门或系统门,而对每个外部中断,IDT都包含专门的中断门。

    上面提到了对IDT的初始化,那么我们就递归深入下来看看系统是如何对IDT表项进行设置的

    4.IDT表项的设置

    IDT表项的设置是通过_set_gate()函数来实现的。

    1>插入一个中断门

    调用 set_intr_gate(n,addr)函数来实现

    此函数的功能是在IDT的第n个表项插入一个中断门。门中的段选择符设置成内核代码的段选择符,偏移量设置为中断处理程序的地址addr,DPL字段设置为0.

    分析下的形参:

    n:表示在第几个表项中插入一个中断门。

    addr:表示偏移量,此处偏移量设置为中断处理程序的地址addr.

    现在我们迭代深入,看下它的内部是如何实现的

    [cpp] view plain copy
    330static inline void set_intr_gate(unsigned int n, void *addr)
    331{
    332 BUG_ON((unsigned)n > 0xFF);
    333 _set_gate(n, GATE_INTERRUPT, addr, 0, 0, __KERNEL_CS);
    334}

    我们可以看到它里面有封装了两个函数:我门继续迭代深入。

    a.我们先来看看第一个函数的原型和功能:

    [c-sharp] view plain copy
    19#if (_MIPS_ISA > _MIPS_ISA_MIPS1)
    20
    21static inline void __BUG_ON(unsigned long condition)
    22{
    23 if (__builtin_constant_p(condition)) {
    24 if (condition)
    25 BUG();
    26 else
    27 return;
    28 }
    29 asm volatile(“tne $0, %0, %1”
    30 : : “r” (condition), “i” (BRK_BUG));
    31}
    32
    33#define BUG_ON(C) __BUG_ON((unsigned long)(C))
    34

    (1)我们可以看到BUG_ON()函数是一函数宏,系统最终调用的是__BUG_ON((unsigned long)(C))

    函数:

    __BUG_ON((unsigned long)(C))它的作用是判断n是否大于255,若大于255则出错。

    此处的n表示在第n个表项中插入一个中断门(因为表项总共有255个,所以当n大于255时出错)。

    (2) _set_gate(n, GATE_INTERRUPT, addr, 0, 0, __KERNEL_CS);

    我们来分析下它的形参:

    第一个形参 n:表示在那个表项中插入一个中断门。

    第二个形参 表示门描述符的类型,此处是插入一个中断门,所以它的形参是GATE_INTERRUPT。

    第三个形参表示偏移量,设置为中断处理程序的地址addr。

    第四个形参表示DPL,我们可以看到给它传递的是0,即避免中断嵌套的发生。

    第五个形参表示IST(Interrupt Stack Table)共 3 位,表达 IST1 - IST7 共 7 个 Stack pointer
    第六个形参表示门中的段选择符。此处设置成内核代码的段选择符。

    我们还可以继续深入到 _set_gate(n, GATE_INTERRUPT, addr, 0, 0, __KERNEL_CS)函数中看它到底是如何实现功能的,但由于篇幅有限。占时不在继续深入。

    2.插入一个陷阱门

    调用 set_trap_gate(n,addr)函数来实现。

    此函数的功能是:在IDT的第n个表项中插入一个陷阱门。门中的段选择符设置成内核代码的段选择符,偏移量设置为异常处理程序的地址addr,DPL字段设置为0。

    分析下的形参:

    n:表示在第几个表项中插入一个中断门。

    addr:表示偏移量,此处偏移量设置异常处理程序的地址addr.

    现在我们迭代深入,看下它的内部是如何实现的
    [c-sharp] view plain copy
    371static inline void set_trap_gate(unsigned int n, void *addr)
    372{
    373 BUG_ON((unsigned)n > 0xFF);
    374 _set_gate(n, GATE_TRAP, addr, 0, 0, __KERNEL_CS);
    375}

    我们可以看到它内部同样封装了两个函数BUG_ON()和_set_gate()函数,它们的功能和实现方法都在上面具体分析过,再次不在分析。

    3.插入一个系统门

    调用 set_system_gate(n,addr)函数来实现。

    此函数的功能是在IDT的第n个表项插入一个系统门。门中的段选择符设置成内核代码的段选择符,偏移量设置为异常理程序的地址addr,DPL字段设置为3.(所以,系统调用在用户态下可以通过INT 0X80顺利通过系统门。从而进入内核态)

    分析形参:

    n:表示在第几个表项中插入一个中断门。

    addr:表示偏移量,此处偏移量设置为异常处理程序的地址addr.

    现在我们迭代深入,看下它的内部是如何实现的

    [c-sharp] view plain copy
    365static inline void set_system_trap_gate(unsigned int n, void *addr)
    366{
    367 BUG_ON((unsigned)n > 0xFF);
    368 _set_gate(n, GATE_TRAP, addr, 0x3, 0, __KERNEL_CS);
    369}
    370

    我们可以看到它的内部实现还是和上面类似。唯一不同的是在_set_gate()函数中的两个参数不同。

    一个参数是DPL被设置为03,还有一个是门类型的类型是GATE_TRAP

    转自 http://blog.csdn.net/tigerjb/article/details/6067258

    展开全文
  • 计算机组成原理中断方式

    千次阅读 多人点赞 2019-10-18 16:33:58
    首先要了解非门和与非门: 非门: ...1. 配置中断请求触发器和中断屏蔽触发器 INTR:中断请求触发器 INTR = 1 时发出中断请求 MASK:中断屏蔽触发器 MASK 的Q端 = 1 时被屏蔽 D:完成触发器...

    首先要了解非门和与非门:

    非门:

    在这里插入图片描述

    到达非门前(即A)通过非门后(即B)
    10
    01

    与非门:
    在这里插入图片描述

    ABY
    001
    011
    101
    110

    1. 配置中断请求触发器和中断屏蔽触发器

    在这里插入图片描述

    INTR:中断请求触发器

    INTR = 1 时发出中断请求

    MASK:中断屏蔽触发器

    MASK 的Q端 = 1 时被屏蔽

    D:完成触发器(功能:设备发出中断请求信号)

    设备发出中断信号且未被屏蔽时:

    MASK 的Q非端(即MSK的上方带横线的Q处):当Q端=0时,Q非端=1;当Q端=1时,Q非端=0

    D的Q端输出 1 (即设备发出中断请求信号),MASK 的Q端=0(即不屏蔽该中断请求信号)的时候,则 MASK 的Q非端输出 1 ,两条输入到 与非门 的线都为1,则 与非门 输出 0 ,然后传送到与非门上面的 非门 输出 1 ,同时CPU发出中断查询信号,两者传送到 INTR ,INTR 输出 1 (即发出中断请求)

    2.排队器(链式排队器)

    在这里插入图片描述

    每一个INTP‘都有一个非门(左)和一个与非门(右)

    每一个 INTR 都没有发出中断信号,即每一个 INTR = 0 的时候:

    INTR1 : 非门 左边为 0 ,经 非门 后在右边输出1,则向上的线输出 1 ,然后因为 INTR1 = 0 ,则 INTR1非(即上方带横线的INTR1)= 1,这个1和非门输出的1经过 与非门 输出 0 ,并将0传到第2个设备的左边;(此时INTP1‘为1,高电平)

    INTR2:非门 左边为0,经 非门 后在右边输出1,则向上的线输出 1 ,然后·因为 INTR2 = 0 ,则 INTR2非 = 1 ,这个1和非门输出的1经过 与非门 输出 0 ,并将0传到第3个设备的左边;(此时INTP2‘为1,高电平)

    以此类推。。。。。。
    ————————————————————————————————
    第一个INTR发出中断信号,即 INTR1 = 1 的时候:

    INTR1 :非门 左边为0,经 非门 后在右边输出1,则向上的线输出 1 ,然后因为 INTR1 = 1 ,则 INTR1非 = 0 ,这个0和 非门 输出的1经过 与非门 输出 1 ,并将1传到第2个设备的左边;(此时INTP1‘为1,高电平)

    INTR2:非门 左边为1,经 非门 后在右边输出0,则向上的线输出 0 ,然后因为 INTR2 = 0 ,则 INTR2非 = 1 ,这个1和 非门 输出的0经过 与非门 输出 1 ,并将1传到第3个设备的左边;(此时INTP2‘为0,低电平)

    以此类推。。。。。。
    —————————————————————————————————

    第一个INTR没有发出中断信号,第二个INTR发出中断信号,即 INTR2 = 1 的时候:

    INTR1 :非门 左边为0,经 非门 后在右边输出1,则向上的线输出 1 ,然后因为 INTR1 = 0 ,则 INTR1非 = 1 ,这个1和 非门 输出的1经过 与非门 输出 0 ,并将0传到第2个设备的左边;(此时INTP1‘为1,高电平)

    INTR2:非门 左边为0,经 非门 后在右边输出1,则向上的线输出 1 ,然后因为 INTR2 = 1 ,则
    INTR2非 = 0 ,这个0和 非门 输出的1经过 与非门 输出 1 ,并将1传到第3个设备的左边;(此时INTP2‘为1,高电平)

    INTR3:非门 左边为1,经 非门 后在右边输出0,则向上的线输出 0 ,然后因为 INTR2 = 0 ,则 INTR2非 = 1 ,这个1和 非门 输出的0经过 与非门 输出 1 ,并将1传到第4个设备的左边;(此时INTP3‘为0,低电平)

    然后:

    在这里插入图片描述

    (图中黄色线为高电平,紫色线为低电平)

    由于 INTR1 = 0 ,INTP1‘ = 1 ,则经过与门(即与非门和非门组成的那部分)变为0,即INTP1 = 0 (低电平),同理,则INTP2 = 1 (高电平)

    以此类推。。。。。。
    ————————————————————————————————

    3. 中断向量地址形成部件

    在这里插入图片描述

    排队器输入的如“100……0”的每一位对应刚才排队器形成的每个高低电平,如刚才第二个INTR发出了中断请求即INTP2=1,则其余INTP都=0,则排队器输入为“010……0”
    在这里插入图片描述
    如图:根据生成的向量地址后,可以顺着该地址找到该地址中的内容(内容有两种:中断服务程序的入口地址或者能够跳转到该地址的一个跳转命令),然后根据内容找到对应的入口地址。当向量地址为12H的时候,到12H这个地址找到了一条跳转指令:JMP 200,则跳转到入口地址为200的中断服务程序那里。

    4. 程序中断方式接口电路的基本组成

    在这里插入图片描述

    展开全文
  • 微机原理与接口技术实验题目及其答案,汇编程序源码,汇编语言分支和循环结构,8255并行接口实验,使用8255完成流水灯实验,8254定时/计数器应用实验,8254 典型应用电路的接法,8259 中断控制器的工作原理, 8259 ...
  • 外部中断与内部中断原理与使用

    千次阅读 2021-07-26 09:36:51
    1.解释 计算机执行某一程序时,发生了紧急事件或者有特殊请求,CPU暂停某程序的执行,转而去处理上述事件,处理完毕后再重新执行原来被打断的程序。...(这两个中断源标志与中断方式由特殊功能寄存器TCON的低四位控制
  • 微型计算机技术 微型计算机技术及应用 微机原理与接口技术 戴梅萼 实验报告 答案 8251串行通信 8255并行接口实验 8259中断控制实验 静态存储器扩展实验 《微型计算机技术及应用》实验报告,错过绝对可惜!
  • 计算机组成原理——程序中断方式

    千次阅读 2019-05-31 19:24:00
    中断的基本概念: 程序中断是指在计算机执行实现程序的过程中,出现某些急需处理的异常情况或特殊...在CPU一侧配置了中断机构,在设备一侧配置了中断控制接口,在软件上设计了相应的中断服务程序。 一个完整的...
  • 微机原理 实验报告 专业班级 姓名 学 号 实验题目 日 期 实验八8259中断控制器实验 一实验目的 1掌握8259A的工作原理 2掌握编写中断服务程序方法 3掌握初始化中断向量的方法 二实验设备 MUT型实验箱8086CPU模块 三...
  • 通过8259中断控制器应用编程实验,学习中断控制器的工作原理中断控制程序的设计方法;在声光报警模块上按动SW3开关,通过8255向主机内的中断控制器申请10号中断,在中断服务程序中,点亮声光报警模块上的LED灯。
  • CPU中断工作原理,从最底层讲起

    千次阅读 2020-05-16 11:46:26
     中断的概念属于硬件层。虽然我们在进行软件编程时不会直接使用中断,但理解它对我们来说依然重要。  我们在使用线程切换及状态管理、异常处理、硬件与处理器的交互、I/O操作等指令时,中断都在默默的为我们服务...
  • 文章目录一、程序查询方式二、程序中断方式三、DMA方式 一、程序查询方式 1、程序查询方式的接口电路 2、符号说明 &与非门 B工作触发器 D完成触发器 3、程序查询工作过程(输入) (1)当CPU通过I/O指令启动...
  • 程序中断方式比程序查询方式提高了CPU的工作效率,消除了“踏步”现象。 DMA方式 DMA方式中CPU的工作效率是这三种之中最高的一个。CPU启动I/O后,不必查询I/O是否准备好,当I/O准备就绪后,发出DMA请求,此时CPU不...
  • 微机原理 中断.ptt

    2015-06-19 16:50:20
    7.1 中断的基本概念 中断、中断源 中断处理过程 中断优先权 7.2 8086/8088中断系统 中断指令 中断分类 中断向量表 中断处理过程 7.3 中断控制器8259A 主要功能 工作过程/工作方式 寄存器功能 8259A编程
  • 实验四 中断控制器8259 更多微机实验:https://blog.csdn.net/yxp189/column/info/39992 汇编语言-微机原理与接口技术-实验 注意:未经允许,请勿转载! 转载请标明出处~ 适用课程:微机原理与接口技术...
  • 【建议收藏】 计算机组成原理—DMA、中断控制、I/O之间的联系与区别 本篇文章主要是记录我对于计算机组成原理中所遇到的一些疑问和疑惑的记录-----主要用于考研的记录 本章一共有几个知识点比较懵: ​ 1.为什么要...
  • 中断系统的原理

    千次阅读 2021-01-16 11:23:47
    2.cpu暂停中断当前的工作,转去处理事件B 3.待cpu将事件B处理完后,再回到原来的事件A被中断的地方继续处理事件A(中断返回) 这一个过程叫错中断 例图。 优点 1.分时操作:cpu可以分时为多个IO设备服务,提高了...
  • 中断控制器8259A

    千次阅读 2020-11-22 00:59:51
    中断控制器8259A 8259A的外部信号和含义 D7D_7D7​ ~ D0D_0D0​:数据线 INT:中断请求信号 INTA‾\overline{\text{INTA}}INTA:中断应答信号 RD‾\overline{\text{RD}}RD:读出信号 WR‾\overline{\text{WR}}WR:...
  • 51定时器中断控制流水灯

    千次阅读 2021-01-01 15:34:11
    2、完成定时器中断服务函数控制流水灯 三、实验原理 只用一个定时器: 定时器级联: 四、实验电路与程序 1、软件实验一:读取定时器溢出标志位来控制流水灯。 1)实验要求:读取定时器溢出标志位并计数,每过...
  • 当CPU响应中断并进入中断子程序后,中断控制器仍负责对外部中断请求的管理,当某个外部中断请求的优先级高于当前正在处理的中断优先级时,中断控制器会让此中断通过到达CPU的INTR端,从而实现中断的嵌套,反之,对...
  • 51单片机中断系统的原理和运用

    千次阅读 2020-05-02 23:31:00
    QX-MCS51开发板上使用的是DIP封装(双列直插式)有40只引脚! 40只引脚按其功能来分,有三类 一、电源和时钟引脚:Vcc、Vss;XTAL1、XTAL2 **电源引脚接入单片机工作电源** ...二、控制引脚 RST(RESET)是...
  • STM32之外部中断原理

    千次阅读 2017-12-25 00:35:55
    STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0...STM32F103 的中断控制器支持 1
  • 一、中断介绍 1.中断概念 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 2.中断过程 中断过程包括: ...
  • 中断响应过程2.8086的中断响应与处理§8.2 8259A的工作原理8.2.1 8259A的引脚信号和内部结构8.2.2 8259A的工作方式1.设置优先级方式2.中断屏蔽方式3.结束中断方式4.中断查询方式-POLL8.2.3 8259A的命令字及编程为使...
  • 微机原理实验二之8259A中断控制

    千次阅读 2017-06-07 22:57:52
    本次实验的过程是实验一:在本次实验中,我们通过步骤一步一步的实现实验的要求,通过运行程序,上下拨动单脉冲开关,当拨动至凸电平时。我们可以清晰的发现试验箱中的显示器会+1,反复拨动,...屏蔽除D0外所有硬件中断
  • 单片机中断原理及定时器详解

    万次阅读 多人点赞 2018-04-22 17:20:21
    中断的概念什么是中断:CPU在处理某一事件A时,发生的另外某一事件B请求CPU去处理(产生了中断),随后CPU暂时中断当前正在执行的任务,去对事件B进行处理,CPU处理完事件B后再返回之前中断的位置继续执行原来的事件...
  • STM32 中断原理及外部中断的实现

    千次阅读 2021-01-18 15:39:09
    Nested Vectored Interrupt Controller,嵌套向量中断控制器。 CM3支持256个中断,16个内核中断,240个外部中断,256级可编程中断设置。 STM32使用了其中一部分,16个内核中断,107系列有68个可屏蔽中断(103系列只有...
  • 8259中断控制

    万次阅读 多人点赞 2018-06-17 14:48:59
    掌握8259中断控制器的工作原理。2. 学习8259的应用编程方法。3. 掌握8259级联方式的使用方法。2 实验设备PC机一台,TD-PITE实验装置一套。3 实验内容及步骤1. 中断控制器8259简介在Intel 386EX芯片中集成有中断控制...
  • 51单片机的中断响应原理

    千次阅读 2019-11-12 11:26:35
    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。。 2.中断系统结构 3.中断允许控制 ...
  • 中断系统原理 何为中断,何为中断系统 举个例子: 生活中常见的例子,一个正在写寒假作业的孩子突然听到一阵敲门声,原来是父母下班回来了,孩子说:“等会,我来了”。于是,他记住当下页码放下作业去开门,然后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,590
精华内容 58,236
关键字:

中断控制方式的工作原理