精华内容
下载资源
问答
  • 中断服务寄存器isr
    2022-06-12 08:22:55

    中断时异常的一种。

    异常向量表,可以放到0x00000000或者放到0x300000008

    保存和恢复其他模式的现场:

    保存现场:

    1.设置IRQ栈 2.保存LR 3.保存r0-r12

    IRQ handle:

    1. ldr sp, =IRQ_STACK

    2.中断返回的PC保存在LR中,CPSR(自动)保存在(IRQ模式下)SPSR下。 sub lr,lr,#4

    3.保存r0-r12,lr到irq模式下的栈上

    stmfd sp!, {r0-r12,lr}

    bl irq_handler

    //处理完中断返回

    ldmfd sp!, {r0-r12,pc}^ ^就是cpsr返回

    第二个阶段irq_handler识别多个中断中的一个,然后调用中断处理流程

    每个中断都有1个中断号,进入irq_handler后,先查阅中断源寄存器和子中断寄存器确定中断编号,然后用这个编号去中断isr数组中找到isr地址。

    中断寄存器:可以读,但是写只能写中断enable,不能写中断disable

    intselect irq还时fiq

    irqstatus 只读 硬件自动设置该值表示中断发生了

    priority0-priority31 中断嵌套,对实时性要求高的需要,比如单片机中比较重要,210中不重要

    vecaddr0-vecaddr31 硬件自动识别中断号,找到地址,只读 避免软件查找中断源和isr

    外部中断源(GPIO)

    EIN0-EIN31

    更多相关内容
  • 中断服务程序(ISR)

    千次阅读 2021-10-29 11:19:03
    中断服务程序 关键词:软中断中断向量、中断向量表、TSR内存驻留、DOS重入、中断请求、段地址、偏移量、寄存器、BIOS、DOS、setvect ( )、getvect ( )、keep ( )、disable ( )、enable ( )、geninterrupt ( )、int...

    中断服务程序

    关键词:软中断、中断向量、中断向量表、TSR内存驻留、DOS重入、中断请求、段地址、偏移量、寄存器、BIOS、DOS、setvect ( )、getvect ( )、keep ( )、disable ( )、enable ( )、geninterrupt ( )、int86 ( )、interrupt
     

      对于一般的C语言爱好者而言,就如何在C中使用中断例程这一问题应该已经非常熟悉,例如,我们可以通过int86 ( )函数调用13H号中断直接对磁盘物理扇区进行操作,也可以通过INT86 ( )函数调用33H号中断在屏幕上显示鼠标光标等。其实,13H号也好,33H号也好,它们只不过就是一些函数,这些函数的参数通过CPU的寄存器传递。
    中断号也只不过是间接地指向函数体的起始内存单元,说它是间接的,也就是说,函数的起始段地址和偏移量是由中断号通过一种方法算得的(具体如何操作,下面会作解释)。如此一来,程序员不必要用太多的时间去写操作硬件的程序了,只要在自己的程序中设置好参数,再调用BIOS或DOS提供的中断服务程序就可以了,大大减小了程序开发难度,缩短了程序开发周期。那么中断既然是函数,就可以由用户任意的调用、由用户任意地编写。   
    计算机内存的前1024个字节(偏移量00000H到003FFH)保存着256个中断向量,每个中断向量占4个字节,前两个字节保存着中断服务程序的入口地址偏移量,后两个字节保存着中断程序的入口段地址,使用时,只要将它们分别调入寄存器IP及CS中,就可以转入中断服务程序实现中断调用。每当中断发生时,CPU将中断号乘以4,在中断向量表中得到该中断向量地址,进而获得IP及CS值,从而转到中断服务程序的入口地址,调用中断。这就是中断服务程序通过中断号调用的基本过程。在计算机启动的时候,BIOS将基本的中断填入中断向量表,当DOS得到系统控制权后,它又要将一些中断向量填入表中,还要修改一部分BIOS的中断向量。有一部分中断向量是系统为用户保留的,如60H到67H号中断,用户可以将自己的中断服务程序写入这些中断向量中。不仅如此,用户还可以自己更改和完善系统已有的中断向量。   
    在C语言中,提供了一种新的函数类型interrupt,专门用来定义中断服务程序,比如我们可以写如下的中断服务程序: /*例1:中断服务程序*/ void interrupt int60() { puts("This is an example"); } 该中断的功能就是显示一个字符串,为什么不用printf ( )函数呢?这就牵涉到DOS的重入问题,后面将作一些介绍。   
    一个简单的中断服务程序写好了,如何把它的函数入口地址填写到中断向量表中,以便在产生中断的时候能转入中断服务程序去执行呢?这里要用到setvect ( )和getvect ( )函数。setvect ( )有两个参数:中断号和函数的入口地址,其功能是将指定的函数安装到指定的中断向量中,getvect ( )函数有一个参数:中断号,返回值是该中断的入口地址。在安装中断以前,最好用disable ( )函数关闭中断,以防止在安装过程中又产生新的中断而导致程序运行混乱,待安装完成后,再用enable ( )函数开放中断,使程序正常运行。现在我们可以把上面的例子再丰富一下: /*例2:中断服务程序的编写、安装和使用*/ 


    #include 

    #include 

    #ifdef __cplusplus

    #define __ARGU ...

    #else

    #define __ARGU

    #endif

    void interrupt int60 (__ARGU) /*中断服务函数*/

    {

    puts("This is an example");

    }
     

    void install (void interrupt (*fadd)(__ARGU),int num) /*安装中断*/ { disable(); /*关闭中断*/ setvect(num, fadd); /*设置中断*/ enable(); /*开放中断*/ } void main() { install (int60,0x60);/*将int60函数安装到0x60中断*/ geninterrupt (0x60); /*人为产生0x60号中断*/ } 有一定经验的读者很容易得到该程序的执行结果:在屏幕上显示“This is an example!”。   
    编写、安装中断服务程序的方法就介绍这些。下面再浅谈一下内存驻留程序(TSR)的编写和使用。在C语言中,可以用keep ( )函数将程序驻留内存。这个函数有两个参数:status和size。size为驻留内存长度,可以用size=_SS+_SP/16-_psp得到,当然这也是一种估算的方法,并不是精确值。函数执行完以后,出口状态信息保存在status中。比如,对于上面的例子,将“geninterrupt (0x60);”改写成“keep(0,_SS+_SP/16-_psp);”后再执行程序,这一段程序就被驻留,此后在其它的任何软件或程序设计中,只要用到了60H号中断,就会在屏幕上显示“This is an example!”的字样。要恢复系统对60H号中断的定义,只能重新启动计算机。   
    像上面的例子其实还很不完善,它没有考虑DOS系统环境的状态、没有考虑程序是否已经驻留内存、没有考虑退出内存驻留等问题。对于第二个问题还是很容易解决的:执行程序一开始就读取某一函数中断入口地址(如63H号中断)判断是否为空(NULL),如果为空就先将该地址置为非空再驻留内存,若为非空则表示已经驻留并退出程序。这一步判断非常重要,否则将会因为重复驻留占用过多内存空间而最后造成系统崩溃。至于其它两个问题,在此不多作说明,有兴趣的读者可以参考一些有关书籍。   
    不仅如此,我们还可以通过在DOS下使用热键(Hotkey)来调用内存驻留程序。比如将《希望汉字系统》自带的《希望词典》驻留内存后,在任意时刻按下Ctrl+F11键,就能激活程序,出现词典界面。微机的键盘中有一个微处理芯片,用来扫描和检测每个按键的按下和释放状态。大多数按键都有一个扫描码,告知CPU当前的状态,但一些特殊的键如PrintScreen、Ctrl+Break等不会产生扫描码,而直接产生中断。正因为如此,我们可以将Ctrl+Break产生的中断号指向我们自己写好的程序入口地址,那么当按下Ctrl+Break后,系统就会调用我们自己的程序去执行,这实际上也就是修改了Ctrl+Break的中断向量。至于其它按键激活程序则可以利用9H号键盘中断捕获的扫描码来实现,在此不多作说明。例如,执行下面的程序后,退回DOS系统,在任意的时候按下Ctrl+Break后,屏幕的底色就会变成红色。 /*例3:中断服务程序编写、安装和使用,内存驻留*/ #include #include #ifdef __cplusplus #define __ARGU ... #else #define __ARGU #endif void interrupt newint(__ARGU); /*函数声明*/ void install (void interrupt (*fadd)(__ARGU), int num); int main() { install (newint,0x1b); /*Ctrl+Break中断号:1BH*/ keep(0,_SS+(_SP/16)-_psp); /*驻留程序*/ return 0; } void interrupt newint(__ARGU) { textbackground(4); /*设置屏幕底色为红色*/ clrscr(); /*清除屏幕*/ } void install (void interrupt (*fadd)(__ARGU), int num) { disable(); setvect(num,fadd); /*设置中断*/ enable(); }   由于13H号中断是BIOS提供的磁盘中断服务程序,对于DOS下的应用程序,它们的存盘、读盘功能都是通过调用这一中断来实现的。有许多DOS下的病毒就喜欢修改13H号中断来破坏系统,例如,修改13H号中断服务程序,将其改成: /*例4:病毒体程序伪代码*/ void interrupt new13(__ARGU) { if (病毒发作条件成熟) { 修改入口参数指向病毒程序入口地址;  执行病毒代码; } 调用原来的13H中断; } 只要当任一软件(如EDIT.COM等)对磁盘有操作并且病毒发作条件成熟时,病毒就被激活。当然,这样做会导致可用内存空间减少,容易被用户发现。一些“聪明”的病毒又会去修改其它的中断向量,使得系统报告的内存大小和实际相符合。还有的病毒,当发现用户通过一些程序(如DEBUG.COM等)去跟踪它时,它会悄悄地溜掉,其基本原理仍然与修改中断有关。硬盘的0面0柱1扇区(Side 0 Cylinder 0 Sector 1)保存着重要的引导信息,一旦破坏,计算机将无法识别硬盘。我们可以写一个程序来防止任何软件(包括病毒)对这一扇区执行“写”操作,一定程度上实现了“写保护”的作用,它的基本原理就是修改13H号中断向量并常驻内存,监视着软件(包括病毒)对磁盘操作的每一个细节。读者请注意:本程序没有考虑内存驻留的退出,如果想恢复13H号中断,请重新启动计算机。 /*例5:主引导扇区保护,请用Turbo C 2.0编译,MBSP.C*/ #include 


    #include 

    #include 

    #define STSIZE 8192

    #define PSP_ENV_PSP 0x2c #define PARA(x) ((FP_OFF(x)+15)>>4)

    typedef struct { unsigned bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flags; } INTERRUPT_PARAMETER; void install (void interrupt (*faddress)(), int num); void interrupt new13(INTERRUPT_PARAMETER p); int main() { union REGS regs; struct SREGS sregs; unsigned mem; unsigned far *pointer; char far *stack; printf("/n<> version 1.0/n/n");   if ((stack=malloc(STSIZE))==NULL)  {  printf ("Not enough Memory!/n");  exit(1);  } if (getvect(0x62)!=NULL)  {  printf("Already Installed!/n");  exit(1);  } install(getvect(0x13),0x62); install (new13,0x13); pointer=MK_FP(_psp,PSP_ENV_PSP); freemem(*pointer); segread(&sregs); mem=sregs.ds+PARA(stack)-_psp; setblock(_psp,mem); keep (0,mem); return 0; }

    void install (void interrupt (*faddress)(), int num) { disable(); setvect(num,faddress); enable(); }
     

    void interrupt new13(INTERRUPT_PARAMETER p) { p.ax=_AX; p.cx=_CX; p.dx=_DX; if(_AH==0x03&&_CH==0&&_CL==0x01&&_DH==0&&_DL==0x80) return; enable(); geninterrupt (0x62); disable(); _AX=p.ax; _CX=p.cx; _DX=p.dx; return; }   
    说明:在使用本程序以前,请:
    ①用杀毒软件对计算机引导扇区、内存和所有文件进行一次全面的扫描,确信计算机中没有任何病毒;
    ②有计算机汇编语言基础的读者可以自己写一个新的引导程序,先将本程序驻留内存,再调用原来的引导程序,以便在病毒还没有取得系统控制权以前开启防护功能。   
    最后简要说明一下DOS系统重入问题。DOS是单用户单任务操作系统。如果程序在执行的过程中被打断,就有可能因为破坏了原来的程序运行环境而造成运行不正常,这是灾难性的。当中断产生后,CPU立即中止当前的程序去执行中断服务程序,如果在中断服务程序中又有对DOS中断的调用(如DOS的21H号中断)时,这样必定会重写环境全局变量(例如PSP程序段前缀就会被改成正在执行的中断程序的PSP),这样原来的环境被破坏,原来的程序也就无法正确执行。当中断调用完成并返回后,用户得到的结果是出乎意料的。所以在编写中断服务程序时应该避免DOS系统功能调用,在C语言的中断服务程序中不应该出现malloc ( )、printf ( )、sprintf ( )等函数。

    展开全文
  • 中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->恢复现场恢复断点->开中断->返回断点  中断服务程序的限制 (1)ISR 没有参数并且...

    在程序员面试和笔试中中断是一个经常被问及的很基础的问题,本文对这次问题做一点简单说明。

    中断处理过程:一次完整的中断过程由中断请求、中断响应和中断处理三个阶段组成。

    中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->恢复现场恢复断点->开中断->返回断点

     中断服务程序的限制

    (1)ISR 没有参数并且返回类型为 void。 
    (2)ISR 不可以重复进入,不要在 ISR内允许中断。 
    (3)当中断发生时系统会自己响应。用户不要调用它。
    (4)ISR 中不要调用任何 C 自定义函数,但是内置的函数没有关系。ISR 中可调用汇编函数。
    (5)如果 ISR 内包含嵌入汇编指令,那么由于执行这些指令而影响到的寄存器就需要在执行这些指令之前预先保留,待执行完毕恢复寄存器。 因为Holtek的 C编译器只保存由于C语句造成影响的寄存器。

    (6)ISR内不能有可能导致阻塞的语句如:malloc等

    (7)避免在ISR中做浮点运算,在许多处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额外的寄存器入栈,有些处理器/编译器就不允许在ISR中做浮点运算。此外,ISR应该是段而有效率的,在ISR中做浮点运算是不明智的。

    有了以上知识,下面的题目应该是小Case了

    1. 下面的ISR有何问题(华硕公司2005年软件工程师面试)  
    2. _interrupt double compute_area(double radius)  
    3. {  
    4.     double area = PI*radius*radius;  
    5.     printf("/nArea=%f",area);  
    6.     return area;  
    7. };  

     

    转载自:http://blog.csdn.net/cskywit/article/details/6447766

    展开全文
  • 专接本微机原理简答

    千次阅读 2021-05-12 08:00:31
    注: 以下简答一定要在理解的基础去记忆,不要盲目背诵。 1.简述缓冲器,锁存器和触发器的作用 .答: (1)缓冲器又称缓冲寄存器。 ①在高速工作的CPU与慢速工作的...(3)触发器: 是最小的记忆单元,是寄存器、存储器基

    注: 以下简答一定要在理解的基础去记忆,不要盲目背诵。

    1.简述缓冲器,锁存器和触发器的作用

    .答: (1)缓冲器又称缓冲寄存器。
    ①在高速工作的CPU与慢速工作的外设间起协调和缓冲作用,实现数据传送的同步。
    ②提供一个暂存的空间。它分输入缓冲器和输出缓冲器两种。
    ③提高驱动能力。
    ④信号隔离的作用,消除负载对信号源的影响。
    (2)锁存器(latch): 利用电平控制数据的传输。
    ①缓存。
    ②完成高速的控制器与慢速的外设的不同步问题。
    ③解决驱动的问题。
    (3)触发器: 是最小的记忆单元,是寄存器、存储器基本元件。

    2. 什么是中断?计算器使用中断有什么好处?

    答: (1)由于某件事件的产生,使得CPU暂时停止正在执行的程序,转而去执行处理该事件的程序,对该事件程序处理结束后,再继续执行先前中断的程序,这一过程称为中断。
    (2)中断的优点:
    ①解决快速CPU与慢速外设之间的矛盾,使CPU可以与外设同时工作,不交换信息时,处理机和外围设备处于各自独立的并行工作状态。提高计算机系统效率。
    ②计算机在执行程序的过程中,可以随时响应外设请求并处理。
    ③计算机可以对故障自行处理。处理机中设有各种故障检测和错误诊断的部件,一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离。

    3. 什么叫端口?通常有哪几类端口?计算机对I/O端口编址时通常采用哪两种方法?在8086系统中,用哪种方法对I/O端口进行编址?

    答:(1)CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,–般称这些寄存器为端口。
    (2)端口通常有3类:数据端口、状态端口、控制端口。
    (3)计算机对端口编址的两种方法为:计算机对内存和I/O 端口统一编址; 计算机对内存和I/O端口独立编址。
    (4)在8086/8088 系统中用内存和I/O端口各自独立编址。

    4. “8086执行了一个总线周期“ 是值8086做了哪些可能的操作?基本总线周期如何组成?在一个典型的读存储器总线周期,地址信号,ALE信号,RD信号,数据信号分别在何时产生

    答: (1)“8086执行了一个总线周期是”指:
    ①8086可能从片外的存储器取指令;
    ②8086可能对片外的存储器或I/O接口进行了一次读/写数据的操作。
    (2)基本总线周期由T1至T4四个时钟周期组成。
    (3)在一个典型的读存储器总线周期中,地址信号在T1周期内产生,ALE信号在T1周期内产生,RD信号在T2周期内产生,数据信号一般在T3周期内产生,若存储器在T3内来不及提供数据,8086 会在总线周期中的T3后插入等待状态Tw,存储器将在某Tw中给出数据。

    5.什么是地址锁存器?8086系统中为什么要用地址锁存器?锁存的是什么信息?

    答: (1)地址锁存器是一个暂存器,它根据控制信号的状态将总线上的地址代码暂存起来
    (2) 8088/8086的数据和地址总线采用分时复用操作方式,即用同一总线既传送地址又传送数据。当微处理器与存储器交换信号时,首先由CPU发送存储器的地址,同时发允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在锁存器中,随后才能传送数据信息。
    (3) 8088/8086系统的地址锁存器采用74LS373/273或者8282/8283,每片能够锁8位地址。

    6.什么是中断类型码,中断向量,中断向量表?在基于8086的微机系统中,中断类型码与中断向量之前有什么关系?

    处理机可处理的每种中断的编号为中断类型码。(2分)中断向量是指中断处理程序的入口地址,由处理机自动寻址。(2分)中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。(2分)在8086系统中,中断类型码乘以4得到向量表的地址指针(2分),从此处读出4字节内容即为中断向量

    7.8086CPU从功能上分为几部分?各部分由什么组成?各部分的功能是什么?

    1)8086CPU从功能上分为两大部分:一是执行部件(EU),二是总线接口部件(BIU)。
    2)执行部件(EU)是由以下4部分组成:
    ①4个通用寄存器:AX、BX、CX、DX。
    ②4个专用寄存器:基址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI。
    ③标志寄存器FR。.
    ④算术逻辑部件ALU。
    功能:负责执行所有的指令,向总线接口部件(BIU)提供指令执行的结果数据和地址,并对通用寄存器和标志寄存器进行管理。
    3)总线接口部件(BIU)由以下部件组成:
    ①4个段寄存器:代码段寄存器CS,数据段寄存器DS,附加段寄存器ES,堆栈段寄存器SS。②指令指针寄存器。
    ③地址加法器。④指令队列。
    功能:执行外部总线周期,负责CPU与主存储器和外设之间的信息交换。

    8.8086如何响应一个外部的INTR中断请求?

    (1)8086在连续的两个总线周期中发出INTA中断请求响应信号;
    (2)在第二个INTA信号期间,中断源经数据总线向8086发出一字节的中断类型码,8086收到中断类型码后放入暂存器;
    (3)8086保护现场:标志寄存器入栈,清除IF、TF标志位,断点CS、IP值入栈;
    (4)8086将中断类型码乘以4后得到中断向量表的入口地址,从此地址开始的4个单元中读出中断服务程序的入口地址(IP,CS);
    5)8086从此地址取指令执行,使控制转向中断处理过程。

    9.站在汇编语言程序员的角度,说明数据存储位置有哪些?访问这些数据可采用的寻址凡是分别是什么?对这些位置的数据访问速度是否相同,为什么?

    (1)数据存储位置有CPU内部的寄存器、内存、IO端口
    (2)采用的寻址方式分别是:①寄存器操作数采用寄存器寻址②存储器操作数采用直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址③IO端口的访问需专门的IO指令,有直接寻址和间接寻址。
    (3)速度不同,寄存器位于CPU内部,因此速度最快,存储器操作数速度较慢,因为需要通过系统总线访问内存,端口的访问最慢,属于输入/输出操作

    10.什么是总线,简述各类总线的应用场合?

    (1)总线(Bus)是计算机各种功能部件之间传送信息的公共通信线,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
    (2)按总线功能或信号类型来分,有数据总线、地址总线和控制总线。按总线的层次结构分来为,有:
    ①CPU片内总线:微机系统中速度最快的总线,主要在CPU内部,连接CPU内部部件,提供系统原始的控制和命令。
    ②系统总线:在系统总线和CPU总线之间的一级总线,提供CPU和主板器件之间以及CPU到高速外设之间的快速信息通道。
    ③通信总线:也称为外部总线,是微机与微机、微机与外设之间进行通信的总线。

    11.简述在最小工作模式下,8086如何响应一个总线周期

    外部总线主控模块经HOLD引线向8086发出总线请求信号;8086在每个时钟周期的上升沿采样HOLD引线;若发现HOLD=1则在当前总线周期结束时(T4结束)发出总线请求的响应信号HLDA;8086使地址、数据及控制总线进入高阻状态,让出总线控制权,完成响应过程。
    12.简述CPU与外设进行数据交换的方式,并说明每种方式的特点
    CPU与外设进行数据交换的方式有:程序控制的传送,DMA传送,通道方式
    程序控制方式分:无条件传送方式、查询传送方式、中断传送方式
    ①无条件传送方式:程序简单,所需的硬件和软件都比较少、传送速度快,但必须在确信外设已准备好的情况下才能使用。
    ②查询传送方式:CPU通过程序不断查询相应设备的状态,状态不符合要求,则CPU需要等待;只有当状态信号符合要求时,CPU才能进行相应的操作。硬件线路简单,程序易于实现;缺点是CPU利用率低下,实时性差。
    ③中断控制方式:外设在准备就绪的条件下通过请求引脚信号,主动向处理器提出交换数据的请求。CPU与外设、外设与外设之间能并行工作。一般适合于传送数据量少的中低速外部设备,尤其适合实时控制中的紧急事件处理,对于高速外部设备的大批量数据传送不适合。
    2)直接存储器存取控制方式(DMA):CPU不参加数据传送,而是由DMA控制器来实现内存与外设,外设与外设之间的直接传递。此种方式适用于需要大量数据高速传送的场合。CPU与外设可以并行工作,提高了CPU的效率。
    3)通道方式:可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。

    13.一般接口电路中应具有哪些电路器件?

    1)输入/输出数据锁存器和缓冲器,用于解决CPU与外设之间速度不匹配的矛盾,以及起隔离和缓冲的作用。
    2)控制命令和状态寄存器,以存放CPU对外设的控制命令以及外设的状态信息。(
    3)地址译码器,用于选择接口电路中的不同端口(寄存器)。(
    4)读写控制逻辑。(
    5)中断控制逻辑。

    14.比较串行通信与并行通信的优缺点。

    1)从传送距离上看:并行通信适宜于近距离的数据传送,通常小于30米;而串行通信适宜于远距离的数据传送可以从几米到数千公里;(
    2)从传送速度上看:并行通信传送数据的速度比串行通信快得多;(
    3)从传送设备和费用上:在远距离传送中通信线路的费用占很大的比重,因而串行通信的费用由于传送线少,比并行通信的费用低得多。

    15.什么叫总线周期?一个总线周期包括多少时钟周期,什么情况下要插入Tw等待周期?插入多少个Tw取决于什么因素

    8086/8088CPU把BIU完成一次访问主存储器或外设操作所需的时间称为一个总线周期。一个总线周期最少包含4个时钟周期(T1~T4)。
    当访问存储器(读/写)或外设时,存储器或外设不能及时地配合CPU传送数据,T3之后插入一个或多个等待等待周期Tw。当存储器或外设准备好数据,通过“READY”发“准备好”信号,CPU接收到这个信号后,会自动完成Tw状态进人T4状态,因此插入多少个Tw取决于“READY"信号,即取决于主存或外设的速度

    16.什么是最大模式?什么是最小模式?用什么方法进行转换模式

    1)最小模式:在系统中只有8086/8088一个微处理器,所有的总线控制信号都直接由8086/8088产生,因此,系统中总线控制电路被减到最少。(
    2)最大模式:在系统中包含两个或多个微处理器,其中一个主处理器就是8088/8086,其它处理器为协处理器,用于协助主处理器工作。它用在中等规模或大型的8088/8086系统中。一般情况下和8088/8086配合的协处理器有两个:一个是数值运算协处理器8087,一个是输入/输出协处理器8089。(
    3)将8088/8086CPU的33号,MN/MX引脚接地,系统处于最大模式,当第33脚接+5V时,系统为最小模式

    17.8259A的主要作用是什么?三个寄存器IRR,IMR,ISR各有什么作用?

    ①通过级联的方式,最大用9片8259管理64级中断。
    ②判断一个中断请求输入信号IR是否有效,是否符合信号的电器约定,是否被屏蔽。
    ③有中断优先逻辑,并可对任一中断单独屏蔽或允许。8259A的8个中断请求输入端IR0~IR7,哪一个能使INT输出有效要由编程选定的优先级方式来判定。
    ④CPU响应中断后,进入中断响应周期INTA,8259A能将获得优先级的IRi所对应的中断类型号送上数据总线提供给CPU。
    ⑤可通过编程选择工作方式。
    (2)三个寄存器IRR、IMR和ISR的作用:
    ①中断请求寄存器IRR:保存8条外界中断请求信号IR0~IR7的请求状态。Di位为1表示IRi引脚有中断请求;为0表示该引脚无请求。
    ②中断屏蔽寄存器IMR:保存对中断请求信号IR的屏蔽状态。Di位为1表示IRi中断被屏蔽(禁止);为0表示允许该中断。
    ③中断服务寄存器ISR:保存正在被8259A服务着的中断状态。Di位为1表示IRi中断正在服务中;为0表示没有被服务。

    18.简述半导体存储器的主要技术指标。

    1)存储容量。存储器可以存储的二进制信息总量称为存储容量。存储容量有两种表示方法:①位表示方法。以存储器中的存储地址总数与存储字位数的乘积表示。如1K×4位,表示该芯片有1K个单元(1K=1024),每个存储单元的长度为4个二进制位。②字节表示方法。以存储器中的单元总数表示(一个存储单元由8个二进制位组成,称为一个字节,用B表示)。如128B,表示该芯片有128个单元。
    2)存取速度。存储器的存储速度可以用两个时间参数表示,一个是存取时间:从启动一次存储器操作到完成该操作所经历的时间;另一个是存储周期:启动两次独立的存储器操作之间所需的最小时间间隔。(
    3)存储带宽。单位时间传输的信息量。

    19.在8086中,逻辑地址,偏移地址,物理地址分别指的什么?

    逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H;
    偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码;
    物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元

    20.外设向CPU申请中断,但CPU不响应,其原因可能有哪些?

    1)该中断请求持续时间太短;
    2)CPU未能在当前指令周期的最后一个时钟周期采样到中断请求信号;
    3)CPU处于关中断状态;
    4)该中断级被屏蔽

    21.简述RAM种类,并说明各有什么特点

    RAM有两种:SRAM(静态RAM)和DRAM(动态RAM)。
    (1)SRAM,它采用触发器电路构成一个二进制位信息的存储单元,这种触发器一般由6个晶体管组成。只要保持通电,里面储存的数据就常久保持。SRAM集成度较低,但是存取速度快。一般用小容量的SRAM作为高速缓冲存储器(cache)。
    2)DRAM,只需一个电容和一个晶体管保存一位信息,电容极板上电荷会漏电,每隔一段时间,要刷新充电一次,否则内部的数据就会消失。DRAM集成度高,成本较低,一般做大容量的主存。

    22.简述8086CPU对外中断的响应条件和处理过程

    (1)不可屏蔽中断:一旦发生就向CPU发中断请求,CPU应在当前正在执行的指令结束后响应这一中断请求,进行中断处理。(
    2)可屏蔽中断:一旦发生就向CPU发中断请求,CPU根据中断的优先权来决定是否响应,标志位IF=1为开中断,CPU响应。IF=0为关中断,有可屏蔽中断请求也不响应。一旦CPU响应某一中断请求,发中断响应信号INTA,关中断,保护断点,寻找中断源,根据中断服务程序的入口地址,转向中断服务程序,保护现场,执行中断服务程序,恢复现场,开中断,返回断点。CPU响应可屏蔽中断时,必须是在执行完当前执行的总线周期的最后一个T状态。

    23.同步传输方式和异步传输方式的特点各是什么

    1)同步传输方式中发送方和接收方的时钟是统一的、字符与字符间的传输是同步无间隔的。同步传输方式是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列,以便对数据块进行差错控制。同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。
    2)异步传输方式并不要求发送方和接收方的时钟完全一样,字符与字符间的传输是异步的。在异步传输方式中,每传送一个字符(5~8位)都要在每个字符码前加1个起始位,在字符代码和效验码后面加1或2个停止位,表示字符结束。接收方根据起始位和停止位来判断一个新字符的开始和结束,从而起到通信双方的同步作用

    24.什么是PCI总线?什么是USB?

    1)PCI总线是微处理机机箱内的底板各个插件板的一种数据传输标准。32/64位标准总线。PCI总线是同步且独立于微处理器的,具有即插即用的特性,允许任何微处理器通过桥接口连接到PCI总线上。
    2)USB是系统之间、系统与外部设备之间的信息通道。成为目前电脑中的标准扩展接口。USB接口支持设备的即插即用的特性。

    25.简述8086内部中断的种类及特点

    1)内部中断又称软件中断,是通过软件调用的不可屏蔽中断,包括溢出中断、除法出错中断、单步中断、INTn指令中断及单字节INT3指令中断。
    2)中断类型码或者包含在指令中,或者是预先规定的;(
    3)不执行INTA总线周期;(
    4)除单步中断外,任何内部中断都无法禁止;(
    5)除单步中断外,任何内部中断的优先级都比任何外部中断的高。

    26.8259A对中断优先级的管理方式有哪几种?各是什么含义?

    1)完全嵌套方式:ISR寄存器中某位置“1”,表示CPU正在处理这一级中断请求,8259A允许比它级别高的中断请求进入,禁止与它同级或低级中断请求进入。中断请求有固定的中断级别,IR0最低,IR7最高。
    2)自动循环方式:IR7~IR0优先级别不固定。每当任何一级中断被处理完,它的优先级别就被改变为最低,而将最高级赋给比它低一级的中断请求。
    3)中断屏蔽方式:由CPU在任何时候都可安排一条清除中断指令。①普通屏蔽方式:将IMR中某一位或某几位置“1”,可将相应级的中断请求屏蔽掉。②特殊屏蔽方式:当CPU正在处理某级中断时,要求仅对本级中断进行屏蔽,而允许其他优先比它高或低的中断进入系统。

    27.在基于8086的系统中,存储器是如何组织的?是如何与处理器总线连接的?BHE信号有什么作用?

    答:8086为16位处理器,可访问1M字节的存储器空间;1M字节的存储器分为两个512K字节的存储体,分别为偶体和奇体;
    偶体的数据线连接D7D0,“体选”信号接地址线A0;奇体的数据线连接D15D8,“体选”信号接BHE信号;
    BHE信号有效时允许访问奇体中的高字节存储单元,实现8086的低字节访问、高字节访问及字访问。

    28. 8255A的方式0一般使用在什么场合?在方式0时,如果要使用查询方式进行输入输出,应该如何处理?

    方式0的使用场合有两种,一种是同步传送,另一种是查询式传送。在方式0情况下,没有规定固定的应答信号,所以,这时,将端口A和端口B作为数据端口,把端口C的4个数位(高4位或者是低4位均可)规定为输出口,用来输出一些控制信号,而把端口C的另外4个数位规定为输入口,用来读入外设的状态,即利用端口C来配合端口A和端口B的输入/输出操作。使用查询方式进行输入输出时,可利用端口C的某一位作查询,只有当该位为1时,方可以将数据送到输入或输出端口去。

    29.简述ROM的类型及各类型有什么特点

    ROM有PROM、EPROM和EEPROM。(2分)
    ①ROM为只读存储器,制造时数据就已经固化好,使用中不可以改变(2分)。
    ②PROM为一次可编程只读存储器,出厂时内容为空白,只可以写入一次数据(2分)。③EPROM为可擦除只读存储器,出厂时内容为空白,写入数据后可以通过紫外线照射擦除,可以多次写入和擦除(2分)。
    ④EEPROM为电可改写只读存储器,出厂时内容为空白,写入数据后可以使用电信号擦除,可以多次写入和擦除(2分)

    30.简述微处理器、微型计算机、微型计算机系统的概念,说明之前关系与不同

    (1)微处理器是由一片或少数几片大规模集成电路组成的中央处理器。由控制器、运算器和寄存器组成。能完成取指令、执行指令,以及与外界主存储器和逻辑部件交换信息,是微型计算机的运算控制部分。微处理器是微型计算机的核心。(
    2)微型计算机是由微处理器、主存储器、输入/输出接口电路和系统总线构成的裸机系统。(
    3)微型计算机系统是以微型计算机为主机,配上系统软件和外设之后而构成的计算机系统。

    三者之间是有很大不同的,微处理器是微型计算机的一个组成部分,而微型计算机又是微型计算机系统的一个组成部分。

    31.简述微型计算机系统的工作过程

    微型计算机的基本工作过程是执行程序的过程。
    ② 首先将程序和数据通过输入设备送入主存储器。
    ②CPU自动从程序存放的第1个存储单元起,逐步取出程序指令送到控制器去识别,分析译码指令的功能。
    ③控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送往运算器进行运算,再把运算结果送回存储器指定的单元中。
    ④当运算任务完成后,根据指令将结果送到输出设备输出。
    ⑤总之,微型计算机的基本工作是取值令、分析指令,并根据指令规定的操作类型和操作对象,执行指令。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。

    32.什么是中断嵌套?使用中断嵌套有什么好处?对于可屏蔽中断,实现中断嵌套的条件是什么?

    (1)微处理器在处理低级别中断的过程中,如果出现了级别高的中断请求,微处理器停止执行低级中断的处理程序而去优先处理高级中断,等高级中断处理完毕后,再接着执行低级的未处理完的程序,这种中断处理方式成为中断嵌套。(
    2)使用中断嵌套的好处是能够提高中断响应的实时性。对于某些对实时性要求较高的操作,必须赋予较高的优先级和采取中断嵌套的方式,才能保证系统能够及时响应该中断请求。(
    3)对于可屏蔽中断,实现中断嵌套的条件有:
    (1)微处理器处于中断允许状态(IF=1)
    (2)中断请求的优先级高于正在执行的中断处理程序的优先级。
    (3)中断请求未被8259屏蔽。
    (4)没有不可屏蔽中断请求和总线请求。

    33.BHE信号的作用是什么?说明起始地址为奇地址、偶地址、一次读写一个字节和一个字时,BHE和A0 的状态

    BHE信号的作用是高8位数据总线允许。
    若BHE为0则表示对一个字进行操作,即高8位D15D8有效,若BHE为1则表示对一个字节进行操作,即高8位无效只用低8位D7D0。
    当起始地址为奇地址并且一次读写一个字节,BHE为0,A0为1;
    当起始地址为偶地址并且一次读写一个字节,BHE为1,A0为0;
    当起始地址为奇地址并且一次读写一个字时,BHE为0,A0为1;
    当起始地址为偶地址时,一次读写一个字时,BHE为0,A0状态为0。

    34.简述8259A基本组成部分

    8259A由8个部分组成。
    ①8位中断请求寄存器IRR,用来存放从外设来的中断请求信号IR0~IR7;
    ②8位中断屏蔽寄存器IMR,用来存放CPU送来的屏蔽信号;
    ③8位中断服务寄存器ISR,用来记忆正在处理中的中断级别;
    ④优先级判别器PR,也称优先级分析器;
    ⑤控制逻辑;
    ⑥数据总线缓冲器;
    ⑦读/写逻辑;
    ⑧级联缓冲器/比较器。
    其中,IRR、IMR、ISR、PR和控制逻辑五个部分是实现中断优先管理的核心部件。

    35.比较8255A三种工作方式的应用场合有何区别

    方式0适用于同步传送和查询传送方式,
    方式1适用于外设在能提供选通信号或数据接收信号的场合,且采用中断传送方式比较方便;
    方式2适用于一个并行外设既可以作为输入设备,又可以作为输出设备,并且输入和输出不会同时进行的场合。

    36.简述8086和8088有什么不同

    ①由于8088只能传输8位数据,所以8088只有8个地址/数据复用引脚AD0AD7;而8086是按16位传输数据的,所以有16个地址/数据复用引脚AD0AD15;
    ②在最小模式时,8088和8086的第28引脚(M/IO)的控制信号高低电平相反。8088是/IOM,8086是IOM/。
    ③8086的第34腿为BHE/S7,BHE用来区分是传送字节、还是字,8088的第34腿为SS0,用来指出状态信息,不能复用。
    ④8088和8086的内部指令队列长度不同,8088的为4字节长,而8086的为6字节长。

    37.在计算机上运行汇编语言的步骤是什么

    1)用编辑文件如EDIT编辑源文件,形成.ASM文件;(
    2)用汇编程序(MASM)把.ASM源文件汇编成目标文件.OBJ;(
    3)用连接程序(LINK)把.OBJ文件转换成.EXE可执行文件;(
    4)运行可执行文件.EXE;(
    5)若有错,使用DEBUG进行调试。

    38.CPU响应中断的条件是什么?简述中断处理过程

    CPU响应中断要有三个条件:外设提出中断申请;本中断位未被屏蔽;中断允许。
    可屏蔽中断处理的过程一般分成如下几步:中断请求;中断响应;保护现场;转入执行中断服务子程序;恢复现场和中断返回。
    CPU在响应外部中断,并转入相应中断服务子程序的过程中,要依次做以下工作:
    (1)从数据总线上读取中断类型号,将其存入内部暂存器。
    (2)将标志寄存器PSW的值入栈。
    (3)将PSW中的中断允许标志IF和单步标志TF清0,以屏蔽外部其它中断请求,避免CPU以单步方式执行中断处理子程字。
    (4)保护断点,将当前指令下面一条指令的段地址CS和指令指针IP的值入栈,中断处理完毕后,能正确返回到主程序继续执行。
    (5)根据中断类型号到中断向量表中找到中断向量,转入相应中断服务子程序。
    (6)中断处理程序结束以后,从堆栈中依次弹出IP、CS和PSW,然后返回主程序断点处,继续执行原来的程序

    39.冯诺依曼计算机的基本设计思想是什么?

    采用二进制形式表示数据和指令。指令由操作码和地址码组成。将程序和数据存放在存储器中,计算机在工作时从存储器取出指令加以执行,自动完成计算任务。这就是“存储程序”和“程序控制”(简称存储程序控制)的概念。
    指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移指令实现。计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成。

    40.为什么在主程序和中断服务程序中都要安排开中断指令

    CPU进入中断周期后,中断隐指令自动将中断标志位置零,即关中断,这就意味着CPU在执行中断服务程序中禁止响应新的中断请求。CPU若想再次响应中断请求,必须开中断,这一任务通常由中断服务程序中的开中断指令实现。
    主程序中在开中断之前要屏蔽本级和低级中断,以防干扰,然后开中断,允许处理高级中断请求。在中断处理之后也要开中断,允许任何中断请求。如果没有开中断,更高级中断请求无法响应。在中断服务期间,把该中断的断点保存后再开中断,表示响应更高级中断请求,然后进入中断服务程序,执行中断服务程序,在恢复断点之前关中断,之后又开中断,又可响应更高级中断

    41.在对存储器芯片进行片选时,全译码方式、部分译码方式和线选方式各有何特点

    ①全译码方式:系统中的全部地址线均参与译码,存储器芯片中的每一个存储单元对应一个唯一的地址。需要译码器,常用的有2:4和3:8译码器。
    ②部分译码方式:系统中的地址线不是全部参与译码,存储器芯片中的一个存储单元有多个地址,n位没有使用的地址线产生2n种地址,地址范围出现重叠。译码简单。
    ③线选译码方式:系统中的地址线只有少量用于选择芯片,存储器芯片中的一个存储单元有多个地址。地址有可能不连续。不需要译码。

    42. DRAM是如何用8根数据线获取64k信息的?

    (1)DRAM地址线采用行地址线和列地址线分时工作,DRAM对外部只需引出8条地址线。(2分)
    芯片内部有地址锁存器,(1分)利用多路开关,由行地址选通信号RAS(RowAddressStrobe,4号引脚),
    把先送来的8位地址送至行地址存器(2分);由随后出现的列地址选通信号CAS(ColumnAddressStrobe,
    15号引脚)把后送来8位地址送至列地址存器。(2分)(2)2164A数据的读出和写入是分开的,由WE信号控制读写。(2分)当WE为高电平时,读出,即所选中单元
    的内容经过三态输出缓冲器在Dout引脚读出,(2分)当WE为低电平时,实现写入。(2分)Din引即上的信号
    经输入三态缓冲器对经输入三态缓冲器对选中单元进行写入

    43.为什么要用接口?

    因为外设种类多,信号类型复杂,数据形式,数据传递方式以及传递速率的差异很大,因此微型计算机与外设之间必须有一个i/o接口。
    (1.速度不匹配。2.信号电平不匹配。3.信号格式不匹配。4.时序不匹配。5.不利于双方的发展。6.会降低cpu效率。)

    展开全文
  • 外部中断使用指南(寄存器设置)

    千次阅读 2021-05-23 08:28:58
    (寄存器:GPxxCON)例:②配置外部中断触发模式,上升沿触发,下降沿触发,双边触发,高电平触发,低电平触发(寄存器:EXT_INT_x_CON)例:③取消屏蔽外部中断(寄存器:EXT_INT_x_MASK)例:④通过向量中断控制器(VI...
  • 从 STM32中文参考手册 上面摘录下来的,因为上面是图片,摘录下来作为文档方便查询.
  • 中断寄存器记录

    2020-08-27 20:23:06
    中断请求寄存器IRR 8259A有8条外部中断请求输入信号线IR0-IR7,每一条请求线上有一个相应的触发器来保存请求...⑶中断服务寄存器ISR I.SR(Interrupt Service Register)存放当前正在进行服务的所有中断。ISR中 相
  • 《VxWorks7编程指南》中有关中断服务程序的笔记
  • 汇编与接口 微机接口 中断服务系统
  • 中断服务子程序 ISR

    千次阅读 2017-06-06 16:28:36
    中断是嵌入式系统中重要的组成部分,这导致了很多...下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。 __interrupt double compute_area (double radius)  {  
  • S5PV210中的中断相关寄存器有很多,这里我只详细介绍我们常用的几个比较重要的寄存器: * VICnINTENABLE和VICnINTENCLEAR * VICnINTSELECT * VICnIRQSTATUS和VICnFIQSTATUS * VICnVECTPRIORITY0~VICnVECTPRIORITY31...
  • 1、VICnINTENABLE(负责打开中断工作的)和VICnINTENEAR(负责关闭中断工作的)n代表的是0123456等常数 (1)VICnINTENABLE 对应interrupt endble (使...(2)INTENABLE寄存器负责相应的中断的使能,INTENCLEAR寄存器...
  • 中断服务子程序(ISR)

    千次阅读 2018-09-11 20:33:36
    中断是嵌入式系统中重要的组成部分,这...下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。 __interrupt double compute_area (double radius) { double are......
  • cortex-m3操作模式寄存器组异常类型堆栈中断参考 操作模式 处理器的操作模式:为了区别正在执行代码的类型。复位后,处理器进入线程模式、特权级。 处理者模式(handler mode):异常服务例程的代码 ,包括中断服务...
  • 6713中断寄存器配置及存储映射

    千次阅读 2016-09-06 22:13:01
    介绍6713中断寄存器配置和存储器映射
  • 8259A中断控制器

    2021-08-01 04:51:46
    8259A芯片是一个中断管理芯片,中断的来源除了来自于硬件自身的NMI中断和来自于软件的INT n指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断是可屏蔽的。这些中断也都通过可编程中断控制器PIC...
  • 中断处理有三个阶段进入阶段:栈保存(带出错码的中断、不带出错码的中断)处理阶段:中断处理退出阶段:恢复栈80×86中有特权级的概念,不同的特权级有不同的栈,所以中断发生时要保存中断前的栈地址。查看intel使用...
  • 一、中断模块寄存器介绍   本节我们主要介绍C6748的中断模块。  中断是硬件系统的基本功能,DSP通过中断实现和其他芯片的实时交互。中断是指DSP在执行程序的过程中,当出现异常情况或特殊请求时,DSP停止...
  • 第七章-中断控制器

    2022-06-28 16:58:29
    2、内部寄存器(4+4+3) 4个处理部件:IRR,PR,ISR 功能:接收和处理IR0-7进入的中断 中断请求请求器IRR: 中断优先级裁决器PR: 当前中断服务寄存器ISR: ~ 4个存放初始化命令字ICW:ICW1-4 ICW1写到偶地址,ICW2-4...
  • 中断优先级的概念

    2021-12-05 22:04:27
    STM32在中断中遇到一下问题,学习心得。
  • Arduino寄存器中断

    2021-03-26 09:42:21
    中断函数格式 ISR("中断名称"){ //中断函数实现 } 当捕捉到相应的中断时,会进入到相应的中断函数。 3.定时中断 注:参考本专栏中PWM相关博客 3.1 TIMSK OCIExB:该位置1且使能全局中断时,相应的定时器比较匹配B使...
  • 中断处理(中断向量寄存器

    千次阅读 2014-04-08 20:10:45
     /* 在中断控制器里使能这些中断 */  VIC0INTENABLE |= (0x3); /* bit0: eint0~3, bit1: eint4~11 */  VIC0VECTADDR0 = eint0_3_irq;  VIC0VECTADDR1 = eint4_11_irq; } void do_irq(void...
  • 文章目录串口相关寄存器串口控制寄存器CR1CR2外设时钟使能寄存器APB2ENR串口波特率设置寄存器USART_BRR相关中断 串口相关寄存器 串口控制寄存器 STM32F767 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多 ...
  • 一题一讲__中断ISR)与可重入性

    千次阅读 2018-03-16 10:35:48
    1、找出下面程序的错误 (一个中断服务子程序ISR) interrupt double compute_area(double radius) { double area = PI *radius * radius; printf("\nArea=%f",area); return area; }分析...
  • WinCE中断处理程序ISR 详解

    千次阅读 2014-03-04 17:01:22
    首先来解释一下, OAL实际上就是一个硬件的抽象层,WinCE的内核通过OAL来和硬件进行通信,应该... WinCE实际上使用 ISR来处理中断,即默认的中断入口函数  ISR是OEM实现的一段这段处理代码,它属于OAL层的一部
  • ISR 中断服务子程序的几个特点

    千次阅读 2014-02-14 12:53:12
    中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是 ISR不能有返回值;ISR不能传递参数;ISR应该是短而高效的,在ISR中做浮点运算是不明智的;ISR中不应该有...
  • 中断解读以及中断服务函数

    千次阅读 2021-08-19 15:24:50
    文章目录1、硬中断和软中断2、中断服务程序(ISR)3、面试题 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把...
  • ARM中断嵌套寄存器NVIC使用说明

    千次阅读 2016-11-03 16:07:03
    在ARM9系列中,针对某种具体的芯片如stm23f103zet6,...在ARM9中,中断与内核紧密联系,要实现某一外设的中断功能就必须对内部控制系统(NVIC)进行设定。  转自:秦工的博客http://www.arm32.com/post/304.html  1)
  • 中断服务处理完该事件以后,再回到原来被中止的地方继续原来的工作。 中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被系统识别,CPU则保存部分(或全部)现场(context),即部分(或全部)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,920
精华内容 6,368
热门标签
关键字:

中断服务寄存器isr