多级嵌套的中断试验
计算机系统结构实验 3.4 嵌套中断CPU 赖晓铮

●
嵌套中断CPU的两个中断源INT0和INT1可以彼此嵌套,没有 优先级概念。请修改硬件,增添中断优先级判别电路,令中 断源INT0的优先级比INT1高,即INT0中断可以在INT1中断子 程序中触发,但是INT1中断不能在INT0中断子程序中触发。 (提示:请参考“2.3 比较器(仲裁器)实验”,采用“菊花链” 结构设计中断优先级判别电路。注意:某一级中断即使当前 不能执行,中断响应也不能撤销,必须挂起,等待优先级高 的中断子程序结束后,继续执行。)
ADDI RA, IMM; (RA) +IMMRA SUB RA, RB; SUBI RA, IMM; AND RA, RB; (RA)-(RB)RA (RA)-IMMRA (RA)∧(RB)RA
ANDI RA, IMM; (RA)∧IMMRA OR RA. RB; ORI RA, IMM; XOR RA, RB; (RA)∨(RB)RA (RA)∨IMMRA (RA)⊕(RB)RA
JMPR RB; JC ADDR;
JCR RB;
(RB)PC IF CF=1, ADDRPC IF CF=1, (RB)PC IF ZF=1, ADDRPC IF ZF=1, (RB)PC IF SF=1, ADDRPC IF SF=1, (RB)PC
0001 0001
0001
RB 0/0
IN
SET SOP (INC/DEC/NOT/THR) JMP/JMPR/Jx/JxR NOP/HLT
1100
1011 1010 1001 1000
SUB/SUBI
XOR/XORI SHT (RLC/ LLC/ RRC/ LRC) STO/PUSH LAD/POP
一、系统指令:
汇编语言 NOP; HLT; IRET; 功能 无操作(延时4个T) 停机(断点) 中断返回 BP_PCPC;BP_PSWPSW I7 I6 I5 I 4 0000 0000 0111 I3 I2 0/0 0/0 0/0 I1 I0 x/0 x/1 x/x
SylixOS系统的中断嵌套机制研究与实现

式显然不符合实际需求,因此,相关人员要采用配置参数方 式,对SylixOS系统相关参数进行配置,使得中断嵌套机制应 用于SylixOS系统中,确保SylixOS系统在执行当前中断服务程 序期间也能对其他中断请求给予一定的响应的处理。首先,当 SylixOS系统开始执行中断服务程序时,需要对以下参数进行 科学配置:①将NRP寄存器内容保存到SylixOS系统中;②将 PGIE内容保存于SylixOS系统中;③将ITSR寄存器内容保存于 SylixOS系统中;④将CIE设置为1。其次,当SylixOS系统执行 完中断服务程序后,系统代码需要在第一时间内快速完成对寄 存器相关内容的安全保存。同时,做好以下参数的配置。①将 GIE位置设置为0;②将PGIE位所对应的内容进行恢复处理; ③将ITSR寄存器所对应的内容进行恢复处理;④将NRP所对 应的内容进行恢复处理。当中断嵌套机制真正地发挥效应时, SylixOS系统在执行中断服务程序的过程中,一旦检测到级别 更高的中断请求时,会暂停当前所执行的中断服务程序,而执 行级别较高的中断服务程序,当该程序执行完毕后,才能继续 执行原来的中断服务程序。同时,为了提高SylixOS系统的运 行性能,确保该系统能够快速切换不同级别中断服务程序执行 操作,当SylixOS系统刚刚执行中断服务程序期间,需要对当 前系统所对应的运行环境进行及时备份,当级别较高的中断服 务程序执行完毕后,再将系统运行环境恢复到初始状态,便于 SylixOS系统继续执行原来的中断服务程序,只有这样,才能充 分发挥和利用中断嵌套的应用优势,使得SylixOS系统优先执行 级别较高的中断服务程序。
在SylixOS系统中,中断服务程序接口主要负责对总中断 服务程序的调用,同时,还要借助中断向量号,将中断服务程 序相关参数传入并保存到SylixOS系统中,便于其他人员的查看 和调用。为了确保SylixOS系统能够可靠、稳定、安全地运行, 需要采用全局终端使能方式,针对中断服务程序处理需求,将 终端嵌套机制应用于中断处理领域中,以达到提高中断处理效 率和效果的目的,这样一来,有利于不断修改、优化和完善 SylixOS系统内终端处理框架,确保该系统能够很好地兼容不同 硬件平台,从而提高SylixOS系统的利用率。
用软件方式灵活设置AT89系列单片机的多中断优先级并实现多级中断嵌套的一种方法

用软件方式灵活设置AT89系列单片机的多中断优先级并实现多级中断嵌套的一种方法作者:李传鸿来源:《电脑知识与技术·学术交流》2008年第11期摘要:介绍了一种用软方式法灵活设置AT89系列单片机多中断优先级并实现多级中断嵌套的方法,分析了系统的时实性。
关键词:单片机;中断优先级;中断嵌套;设置;时实性中图分类号:TP368文献标识码:A文章编号:1009-3044(2008)11-20359-021 引言ATMEL公司的AT89系列单片机是目前最常用的性优价廉的单片机系列之一,但其中断系统资源却很有限,特别是系统提供的中断优先级更是如此。
例如AT89系列标准型单片机一般只有两个中断优先级,从而使其应用受到了限制。
因此扩展中断优先级、实现多级中断嵌套便成了人们设计和开发单片机影院系统时常需考虑的问题之一。
目前,人们大都是通过增加专门硬件并配合相应编程来解决这一问题的,显然这种方式不利于降低系统成本,使用起来也不够灵活。
笔者以AT89系列标准型单片机AT89C51为对象,利用纯软件方式,通过在各中断服务程序的起始部分加入设置指令,在中断返回之前加入对应的恢复指令,成功地实现了中断优先级的多级软件设置。
最多可将五个中断源分别设置在五个中断优先级上。
五个中断源的优先级由高到低依次为:外部中断INT0、定时器/计数器T0中断、外部中断INT1、定时器/计数器T1中断和串行口中断。
这样也就自然实现了多级中断嵌套。
2 中断优先级扩展的原理及方法2.1 中断控制字的初始化首先,在主程序中将AT89C51单片机的中断优先级控制寄存器IP的各个位设置为“1”,即将单片机的五个中断源都置成系统中原有的高中断优先级,这是为某个中断请求被响应后重新设置该中断的优先级所做的准备;然后,将中断允许控制寄存器IE的各个位也都设置为“1”,即将各中断请求设置为允许状态,并使CPU处于开中断状态,以确保符合条件的中断请求能够得到响应。
嵌入式技术及应用实验中断实验报告

实验步骤与结果分析1、建立工程1)、在工程文件中包含如下文件(int、doc、user、lib、start)2)、选择STM32F103VB芯片3)、分别添加如下文件2、运行过程(1) 使用Keil uVision3 通过ULINK仿真器连接EduKit-M3实验平台,打开实验例程NVIC_test子目录下的NVIC.Uv2例程,编译链接工程;(2) 点击MDK 的Debug菜单,选择Start/Stop Debug Session项或Ctrl+F5键,远程连接EduKit-M3实验平台并下载调试代码到目标系统的RAM中;(3) 程序正常启动运行后,会有以下结果:当第一次发生EXTI9 中断后(按下EduKit-M3实验平台上Key按钮),SysTick 中断的优先级比EXTI0中断优先级高。
因此当EXTI0中断发生时(按下Wakeup按钮),将先执行主要程序代码分析/* Configure one bit for preemption priority */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);主从优先级的选择Group_1,有先占优先级1位,从优先级3位//配置一个比特为抢占优先级/* Enable the EXTI0 Interrupt */ //使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PreemptionPriorityValue;主优先级的选择PreemptionPriorityValueNVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//从优先级等于0.NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Enable the EXTI9_5 Interrupt */ //使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Configure the SysTick Handler Priority: Preemption priority and sub priority */ //配置SysTick处理程序优先级:抢占优先级和子优先级NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, !PreemptionPriorityValue, 0);while (1){if(PreemptionOccured != FALSE)//当PreemptionOccured != FALSE)抢占发生{GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1 -GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_9)));Delay(0x5FFFF);}}void GPIO_Configuration(void){/* Configure PC6, PC7, PC8 and PC9 as output push-pull */ 使能为推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //使能其速度为50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //使能为推挽输出GPIO_Init(GPIOC, &GPIO_InitStructure);/* Configure GPIOA Pin0 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);/* Configure GPIOB Pin9 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为推挽输出入GPIO_Init(GPIOB, &GPIO_InitStructure);}GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);/* Configure EXTI Line0 to generate an interrupt on falling edge */ 配置EXTI Line0产生一个中断在下降沿EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);(写不完时,可调整表结构。
接口技术课程设计--多级中断控制系统

接口技术课程设计----多级中断控制系统组长:07计科杨静刚组员:07计科朱俊飞王鹏余凯指导老师:胡静芳完成时间: 2010.12.20一、引言及任务分配(一)实验目的1、了解并掌握8259中断控制器的工作原理,通过8259进行中断控制服务,调用中断服务程序2、掌握8259中断控制器级联方式的硬件设计和软件编程3、了解利用数模转换器产生模拟信号基本方法,通过DAC0832产生报警信号4、制作外部中断信号源,产生中断申请信号(二)任务分配8259中断控制器线路连接杨静刚8259中断控制器级联方式的硬件设计朱俊飞8259中断控制器级联方式的软件编程王鹏制作外部中断信号源余凯二、什么是中断1.中断的基本概念对于计算机系统来说,中断是指CPU正在运行一个程序时发生了某种非预期的事件,CPU暂停正在运行的程序,转而执行对这一事件进行处理的程序(称为中断服务程序),完成后再返回原程序继续运行的过程。
引起中断的事件称为中断源。
对于计算机系统来说,中断源分为外部中断和内部中断。
外部中断主要是指由计算机外围设备、系统定时时钟及人工干预等外部事件起的中断,通过设备产生的外部中断,能使CPU与设备间进行中断方式的数据传输,这也是我们本小节要主要讲述的内容。
内部中断主要包括指令中断和故障中断。
指令中断是由软件指令引起的,设置指令中断的目的通常是为用户程序提供对系统资源的访问,例如x86CPU指令系统提供了一条软中断指令INT,执行该指令后,系统会转入执行一段驻留在主存中的系统程序,该程序主要完成对系统某一资源的访问服务。
故障中断主要是指由系统软硬件故障引起的中断,如内存校验故障、电源掉电、除零错、算术溢出、内存越界、指令非法、虚拟存储器页面失效等。
计算机中断源的类型归纳总结如下图所示。
计算机中断源的类型2. 中断控制的基本原理前面已经提到,程序控制方式在多道程序系统中会因为某一程序长时间占用CPU进行输入输出操作而浪费CPU资源,而中断控制方式则可以有效提高CPU利用率。
单片机中断多级嵌套的软件实现

断, 也就是要实现高级中断源响应低级中断源, 设计时可加入如下代 码而无须改变 IP 寄存器的内容:
2.中断多优先级的扩展 根据 8051 的结构特点, 其中断系统中含有两个不可寻址的“优先 级生效”触发器。一个用于指出 CPU 是否正在执行高优先级的中断服 务程序, 这个触发器为 1 时, 系统将屏蔽所有的中断请求; 另一个则指 出 CPU 是否正在执行低优先级中断服务程序, 该触发器为 1 时, 将阻
【关键词】单片机; 优先级; 中断; 中断优先级寄存器 【ABSTRACT】The series of MCS- 51 Single Chip Microcomputer (SCM) only have two__level interrupt nestings by IP register seting.This paper introduces some methods for the extension of multipriority in MCU Interruption system. It also specifies the program of each extension through the employment of software.These methods can be applied to the system repuiring multipriorty interrupt nestings. 【KEYWORDS】Single Chip Microcomputer; Multipriority; Interruption; IP register
多级嵌套的中断试验

一.实验目的(1)掌握中断在计算机系统中的作用;(2)了解可以响应中断请求的条件和时刻,响应中断的过程和实现方案;理解使用中断隐指令的必要性;(3)了解中断处理的完整过程,开中断,关中断操作的作用,保存现场信息和恢复现场信息必须确保完整完成的含义和可行措施;(4)掌握确定中断向量,设计中断处理程序的操作步骤和实现方法;二.实验原理1.1中断电路TH-union教学机中断电路的总体组成,如下图所示:图中IRQ0—IRQ2是3个中断请求源信号,分别对应实验箱上的三个中断请求按钮,实验时,按下某个按钮表示发出相应的中断请求信号。
这三级中断的优先次序从低到高为IRQ0到IRQ2。
1.2中断处理在教学机中的具体实现教学机的中断线路主要包括2片GAL、3个无锁按键、2片74LS374和若干插针。
下面分别对这几部分进行简要介绍。
(1)3个无锁按键,提供中断请求的源信号教学机支持3级中断发,这3个无锁按键作为3个中断源,从右到左依次为一、二、三级中断,对应的中断优先级编码P1、P0依次为01、10、11,优先级也依次升高。
这3个无锁按键的引脚作为INTS GAL 和INTP GAL 的输入。
(2)INTS GAL,接受并记忆通过无锁按键给出的中断请求源信号该芯片的输入信号除了3个无锁按键的6个引脚外,还有控制信号DC23、/GIR及系统时钟CK1。
输出信号只有3个分别表示取指时3个无锁按键是否被按下,如果被按下,则相应的输出信号为高电平,否则为低电平。
这3个输出信号被送至INTP GAL 。
该芯片实现的功能是,在每次取指前一拍(用DC2-3=1指示),将3个输出信号全部置零;在每次取指时(/GIR信号指示),都检测是否有中断请求(即是否有无锁按键被下),并用这3个输出引脚表示;在取指后以及整个指令执行过程中,这3个输出信号都将保持不变。
(3)INTP GAL,在条件成立时,向CPU 发出中断请求信号/INT(低电平有效)该芯片实现的功能是:1)对INTS GAL 送来的3个信号进行中断优先级编码,得到新请求的中断优先级,并与当前中断优先级P1、P0比较;2)设置中断允许位INTE,该信号高电平表示允许中断,低电平表示禁止中断。
C51单片机中断(两篇)

引言:C51单片机中断是单片机开发中一个非常重要的概念。
通过中断,程序能够在运行过程中及时响应外部事件,提高系统的实时性和可靠性。
本文将进一步探讨C51单片机中断的相关知识,特别是中断优先级、中断嵌套、中断服务函数等方面的内容。
概述:C51单片机中断机制是通过改变程序的执行流程来实现的。
当中断事件发生时,CPU会暂停当前的执行任务,保存现场后转去执行中断服务程序,待中断服务程序执行完毕后,再恢复到之前的执行状态。
C51单片机中断机制通过这样的方式,有效地实现了对外部事件的及时响应。
正文内容:1. 中断优先级1.1 中断优先级的概念中断优先级是指在多个中断事件同时发生时,CPU按照一定的优先级顺序处理这些中断请求。
在C51单片机中,中断优先级是通过中断控制器来实现的。
中断控制器按照预先设定的优先级进行中断请求的响应,优先级越高的中断请求将被优先处理。
1.2 中断优先级的设置在C51单片机中,中断优先级的设置是通过特殊功能寄存器(SFR)来完成的。
通过设置SFR中的相关位,可以对不同的中断请求进行优先级设置。
具体的设置方法可以参考C51单片机的相关手册和数据手册。
2. 中断嵌套2.1 中断嵌套的概念中断嵌套是指在中断服务程序执行过程中,又发生了其他的中断事件,并且这些中断事件的优先级高于当前正在执行的中断服务程序。
在C51单片机中,中断嵌套是通过中断控制器的中断请求线来实现的。
当一个中断事件发生时,如果其优先级高于当前执行的中断服务程序,CPU会立即切换到新的中断服务程序中去执行。
2.2 中断嵌套的处理方法在C51单片机中,中断嵌套的处理是通过中断服务程序的堆栈来实现的。
当发生中断嵌套时,CPU将当前的现场信息保存到堆栈中,然后切换到新的中断服务程序中执行。
当新的中断服务程序执行完毕后,CPU会从堆栈中恢复之前的现场信息,并回到原来的中断服务程序继续执行。
3. 中断服务函数3.1 中断服务函数的概念中断服务函数是指用来处理中断事件的函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.实验目的
(1)掌握中断在计算机系统中的作用;
(2)了解可以响应中断请求的条件和时刻,响应中断的过程和实现方案;理解使用中断隐指令的必要性;
(3)了解中断处理的完整过程,开中断,关中断操作的作用,保存现场信息和恢复现场信息必须确保完整完成的含义和可行措施;
(4)掌握确定中断向量,设计中断处理程序的操作步骤和实现方法;二.实验原理
1.1中断电路
TH-union教学机中断电路的总体组成,如下图所示:
图中IRQ0—IRQ2是3个中断请求源信号,分别对应实验箱上的三个中断请求
按钮,实验时,按下某个按钮表示发出相应的中断请求信号。
这三级中断的
优先次序从低到高为IRQ0到IRQ2。
1.2中断处理在教学机中的具体实现
教学机的中断线路主要包括2片GAL、3个无锁按键、2片74LS374和若干插针。
下面分别对这几部分进行简要介绍。
(1)3个无锁按键,提供中断请求的源信号
教学机支持3级中断发,这3个无锁按键作为3个中断源,从右到左依次为一、二、三级中断,对应的中断优先级编码P1、P0依次为01、10、11,优先级也依次升高。
这3个无锁按键的引脚作为INTS GAL 和INTP GAL 的输入。
(2)INTS GAL,接受并记忆通过无锁按键给出的中断请求源信号
该芯片的输入信号除了3个无锁按键的6个引脚外,还有控制信号DC23、/GIR及系统时钟CK1。
输出信号只有3个分别表示取指时3个无锁按键是否被按下,如果被按下,则相应的输出信号为高电平,否则为低电平。
这3个输出信号被送至INTP GAL 。
该芯片实现的功能是,在每次取指前一拍(用DC2-3=1指示),将3个输出信号全部置零;在每次取指时(/GIR信号指示),都检测是否有中断请求(即是否有无锁按键被下),并用这3个输出引脚表示;在取指后以及整个指令执行过程中,这3个输出信号都将保持不变。
(3)INTP GAL,在条件成立时,向CPU 发出中断请求信号/INT(低电平有效)
该芯片实现的功能是:
1)对INTS GAL 送来的3个信号进行中断优先级编码,得到新请求的中断优先级,并与当前中断优先级P1、P0比较;
2)设置中断允许位INTE,该信号高电平表示允许中断,低电平表示禁止中断。
当控制信号DC12~DC10=110时,INTE被置为1;DC12~DC10=111
时,INTE被置为0。
3)产生中断请求信号/INT,该信号低电平表示有(更高优先级)中断请求需要响应。
在中断允许位INTE=1时,如果新的中断优先级比当前中断优先级高,则给出中断请求信号/INT=0,否则/INT=1。
P1、P0也是状态寄存器的2个输入信号,可随同状态标志(C、Z、V、S)压入/弹出栈。
P1、P0也是INTVTL74LS374的2个输入信号,用来形成当前中断优先级在中断向量表中的首地址。
4)通过中断向量寄存器INTVTH 74LS374、INTVTL 74LS374硬性设置的中断向量分别为16进制的2104、2108和210C,对应的中断优先级分别是1、2、3。
三.实验内容及步骤
1.实验内容
(1)读懂教材中有关中断的概念,中断响应和中断处理的内容,了解这些功能在教学计算机中是如何实现的;
(2)如果所用的教学计算机的基本指令集合中尚未实现中断隐指令,与处理中断有关的EI,DI和IRET三条指令,则需要首先实现中断隐指令和扩
展这三条指令;如果在基本指令集中已经实现了上述内容,则直接跳过
这一实验步骤。
(3)确定中断向量表地址。
这个向量表是以XXX4为首地址的一段内存区(为每一个中断保留4个字的空间),用于存放对应每一个中断源的中
断处理程序的首地址,要在中断隐指令中把这里的选定的一个地址传送
到程序计数器PC中,之后就进入响应中断处理程序的执行过程。
常用
的可行方案是在这里保存一条转移指令,实现依据不同的中断源转移到
不同的中断处理程序。
教学机设置了3个中断源并为每个中断源分配了
不同的优先级,则3个终端程序入口地址分别为16进制的XXX4,XXX8
和XXXC。
(4)设计对应每一个中断的处理程序,例如显示对应各自中断优先级的一个数字符,重复显示80或160次。
设计一个死循环程序并执行,例如反复先是大写字母M。
在这个程序运行过程中,通过按用作为中断请求源的3个不同按钮,则屏幕上会显示不同的字符序列,可以清楚的看到中断嵌套的运行情况。
2、实验步骤
(1)填写中断向量表
TH-union教学机3级中断的中断向量为2104H、2108H、210CH,填写中断表的步骤如下:
A2104
JR 2120
A2108
JR 2130
A210C
JR 2140
(2)编写中断服务程序
A2420
PUSH R0
PUSH R3
MVRD R3,31
JR 2450
A2430
PUSH R0
PUSH R3
MVRD R3,32
JR 2450
A2440
PUSH R0
PUSH R3
MVRD R3,33
JR 2450
A2450
EI
MVRD R0,0042
CALA 2200
MVRD R0,0049
CALA 2200
MVRR R0,R3
CALA 2200
IN 81
SHR R0
SHR R0
JRNC 245C
IN 80
MVRD R0,0045
CALA 2200
MVRD R0,0049
CALA 2200
MVRR R0,R3
CALA 2200
POP R3
POP R0
IRET
A2200
PUSH R0
IN 81
SHR R0
JRNC 2201
POP R0
OUT 80
RET
注:各中断服务程序中,EI与IRET为扩展指令,不可用A命令输入,只能用E 命令输入其机器码,即在输入中断服务程序时,遇到EI与IRET命令使,略过不输入,在程序输入结束后,再执行如下命令:
E2150
6E00
E216E
EF00
(3)编写主程序
A2000
EI
MVRD R0,0036
CALA 2200
MVRD R0,4000
DEC R0
JRNZ 2007
JR 2001
RET
注:主程序中的EI指令的处理方法如上。
(4)运行主程序:
在命令行提示符状态下输入:
G2000
屏幕将连续显示“6”。
在程序执行过程中按下教学机右下放任意一个无锁按键。
此时,教学机转向执行本级中断服务程序,在屏幕上显示BI以及按下的键对应的中断优先级。
在按收键盘一个字符后,显示该字符并退出当前级的中断服务程序,恢复中断现场,接着执行断点处的程序。
若在接受字符前,又有更高一级的中断请求,则教学机转向执行高一级的中断服务程序,执行完后接着执行低级中断,然后退出执行主程序。
需要注意的是若当前中断为高级的中断,则不会响应低级中断。
指导教师签字:
年月日。