APP下载

Proteus 仿真图表在单片机多中断源运行中的应用

2022-09-28王超

电子设计工程 2022年18期
关键词:嵌套中断按键

王超

(昌吉学院物理系,新疆昌吉 831100)

中断是单片机在实时处理和实时控制中不可缺少的一项技术,应用十分广泛,如果没有中断,其大量的时间可能会浪费在查询是否有中断请求的操作上,采用中断技术可消除查询方式中的等待现象,提高单片机的实时性和工作效率[1-3]。但是,由于中断的发生具有随机性,尤其是多个中断源共存的情况下,更增加了分析及调试程序的难度,利用Proteus仿真软件设计多中断源电路,编写程序实现软硬件协同调试,可定性、直观、实时地展现多中断源发生中断的全过程,缩短了开发周期,提高了效率。

1 单片机中断源

MCS-51 系列单片机有五个中断请求源,两个中断优先级别,可以实现两级中断服务嵌套,每个中断源都可以用软件独立地控制为允许和关闭中断,每个中断源的优先级别均可以使用软件来设置[4-6]。

实际上,51 系列单片机中断优先级有两种:查询优先级和执行优先级,所谓查询优先级是从芯片的datasheet 或者教材中看到的默认优先级(IP 不设置,复位后其值为00H),其优先级顺序为:串行口,当多个中断源申请中断时,CPU 会按照查询优先级的顺序依次查询各个中断标志位的状态,不代表高优先级的中断可以打断正在执行的低优先级的中断服务。而执行优先级则需先进行IP 设置,当经过设置的低优先级中断正在运行时,如果有高优先级别的中断申请则会执行中断嵌套,进入高优先级别的中断服务处理,若是处于同一个级别,则要按照查询优先级的顺序进行处理。

2 单片机多中断源电路设计

单片机多中断源电路由AT89C51 单片机、中断源申请电路、中断过程指示电路、串行口数据传输电路组成,电路设计图如图1 所示,中断源与对应按键对照表如表1 所示。

图1 多中断源电路设计图

表1 中断源与对应按键对照表

中断源申请电路由四个独立的按键K0、K1、K2、K3 和总按键K 组成,用来控制和T0 这四个中断源(T1 与T0 运行过程类似,选择一个即可)的分时申请和同时申请。

中断指示电路由4 个发光二极管D1、D2、D3、D5组成,D1 的亮灭指示的发生,D2 的亮灭指示的发生,D3 的亮灭指示串行口中断的发生,D5 的亮灭指示T0 中断的发生,D4 为电路的运行指示灯。

串行口输出传输电路由串行输入/并行输出的同步移位寄存器74LS164 和数据指示灯L1-L8 组成[7-9],串行口工作在方式0 输出模式,串行输出数据由P3.0 输出,移位脉冲由P3.1 输出,MR 接高电平时移位脉冲才有效,在移位脉冲作用下,发送缓冲器SBUF 中的数据依次通过RXD 端送往74LS164,并通过L1-L8 显示串口传输的数据。

在中断指示电路图中,分别在D1、D2、D3 和D5处添加探针,在仿真图表中添加对应的数字量曲线,以便记录中断发生过程。

3 多中断源中断申请的处理

要完成单片机多个中断源同时和不同时申请的处理,需要实现多个中断源的申请可控,多中断源申请的控制有两种实现方式,方式一是采用按键作为中断请求的输入开关,用软件检测开关的闭合,实现不同开关作用下的中断处理,如图1 中的K、K0、K1、K2、K3 开关,K 用来控制中断源同时申请,K0-K3 用来控制不同中断源的申请处理。方式二使用Proteus中提供的虚拟信号源来实现,单击工具箱中的快捷图标,选择单周期数字脉冲发生器(DPULSE),放置在每个按键上,并在属性对话框中进行有关的设置,对话框内数据类型选择为单脉冲,只产生一个脉冲信号,脉冲属性选择负的(高低高),脉冲时间需要设置开始时间、脉冲持续的宽度和停止时间[10-13],可精确设置不同中断源的申请信号,借助单周期数字脉冲发生器,可以实现仿真图表的交互式动态仿真,可变以往只有示波器、逻辑分析仪可以实现的功能。

4 程序设计

四个中断源对应的输入请求有四个按键K0-K3,若是中断源同时申请中断,可以把单周期数字脉冲发生器设置为一致即可,若是中断源不同时申请中断,四个按键的组合就有16 种情况,主程序流程图如图2 所示。

图2 主程序流程图

图2 中,首先进行初始化处理,即P0=0xff,P3=0xff,TMOD=0x01,EA=0,关中断,然后使用while(1)完成循环扫描判断,四个中断源共16 种情况,使用switch(button)开关语句实现多分支处理,当K0-K4全部闭合时,button 为0X00,执行switch 的第一个分支TCON=0xff;EA=1;break;即:和T0 定时器中断请求标志位置1,执行串口发送程序ChuanKou(),使TI=1,最后使EA=1,开放所有中断,即可实现四个中断源同时产生中断,其他情况类似。

5 多中断源运行过程

5.1 IP不进行设置,四个中断源同时申请

全速运行后,仿真结果如图3 所示,四个中断源在同一时刻触发申请中断,首先响应,响应结束后依次是T0 响应、响应和串行口响应,中断源的执行顺序是查询优先级顺序,依据确定的顺序依次进行,不会形成高优先级中断低优先级的嵌套形式,仿真图表的运行结果与CPU 寄存器窗口数据一致。

图3 IP不设置多中断源同时申请

5.2 IP不进行设置,四个中断源不同时申请

设置四个中断源的单周期数字脉冲发生器属性,脉冲属性均为高低高、脉冲宽度均为20 ms,四个中断源脉冲触发的开始时间分别为100 ms(串行口)、200 ms()、300 ms(T0)和400 ms()。

在T0 中断服务程序中设置断点,SCON=000 00000B=00H,即TI=0,发送中断申请标志位为0,表示串口中断完成,标志位已经清零,TCON=1100 1101B=0CDH,即TF0=0、IE0=0、IE1=1,定时器T0、的标志位均为0,表示其中断已经结束,标志位清零,的标志位为1,说明中断还未执行。

本文利用模块化理论与方法,对发射场特种机械设备进行模块化分析和研究,综合传统模块划分方法的分类,结合特种设备的具体特点,归纳了创新式和变型式模块的方法步骤,为实现发射场特种机械设备通用化设计与系列化设计提供技术支持,并以火箭测试厂房平开大门为研究对象,进行了实例分析.

全速运行后,仿真结果如图4 所示,四个中断源申请不同时到达,每个中断源间隔100 ms,首先到达的是串行口中断请求,则串行口首先响应,在串行口响应期间,依次是请求到达,即使执行优先级高于串行口,也不会出现嵌套,体现的是先到先处理,与优先级高低没有关系,先到的中断请求处理完成后,再依次处理后续的中断请求,仿真图表的运行结果与CPU 寄存器窗口数据一致。

图4 IP不设置多中断源不同时申请

5.3 IP进行设置,中断源同时申请

设置IP=0x14,即PX1=1、PX0=0、PT0=0、PS=1,和串行口DTXD为高优先级,和T0 为 低优先级,设置单周期数字脉冲发生器脉冲属性为高低高,脉宽为20 ms,开始时间均为100 ms。

全速运行后,仿真结果如图5 所示,四个中断源分成两个级别,和串行口DTXD 为高优先级,和T0 为低优先级,高优先级别的两个中断源同时申请时,按照查询优先级顺序响应,即先响应,然后响应DTXD;低优先级的两个中断源同时申请时,也会按照查询优先级的顺序响应,即先响应,然后响应T0,由于先执行的是高优先级别的中断源申请,所以,不会发生嵌套,同一级别中的两个中断源依次按照查询优先级顺序进行处理,仿真图表的运行结果与CPU 寄存器窗口数据一致。

图5 IP设置多中断源同时申请

5.4 IP进行设置,中断源不同时申请

图6 IP设置多中断源不同时申请

图6 中,在100 ms 时,T0 中断申请,此时只有一个中断申请,立刻执行T0 中断过程,在T0 执行期间,申请中断,由于的优先级高于T0,所以发生了嵌套,在执行期间,和DTXD 依次申请,因51 系列单片机只有两个优先级别,只能执行两级中断嵌套,当响应完后,立即响应DTXD的请求,继续暂停T0,执行DTXD,当DTXD 响应完后,返回T0 继续执行,因T0 和属于同一个级别,只有当T0 响应完后,才去响应的申请。

图7 监视窗口

6 结束语

使用Proteus 软件实现了单片机多中断源共同作用下的执行过程,借助Proteus 软件提供的仿真图表、CPU 寄存器窗口等虚拟分析器件,将抽象的中断过程直观化,有助于学生更好地理解多中断源执行过程,提高了分析问题和解决问题的能力。

猜你喜欢

嵌套中断按键
兼具高自由度低互耦的间距约束稀疏阵列设计
基于有限状态机的按键检测程序设计
多按键情况下,单片机端口不足的解决方法
“单片机中断概述”微课教学设计
一种考虑GPS信号中断的导航滤波算法
Linux中断线程化分析及中断延时测试
按键消抖在单片机和FPGA实验教学中的应用
论电影嵌套式结构的内涵与类型
跟踪导练(二)(5)
嵌套交易如何实现逆市盈利