A. 简述MCS-51单片机中断响应的过程
嘉鸿视频教学 www.study8.net.cn 专业提供211重点大学各类视频教育、教学资料 单片机技术(34讲)--吉林大学 赵宏伟 主讲 单片机及应用(32讲)--东南大学 刘其奇教授 先修课程 数字逻辑电路 计算机组成原理 接口技术 汇编语言 课程性质:应用型课程 前 言: 单片机在一块半导体材料上集成了CPU、存储器、I/O接口等各种功能部件,具有体积小、功耗低、价格便宜、功能强、可靠性好和使用方 便灵活的特点。单片机在工业控制、数据采集、智能化仪表、办公自动化以及家用电器方等各个领域中得到了越来越广泛的应用。 将单片机技术与测量控制技术相结合,可以使工业自动控制变得更方便、控制效果更佳。在机电一体化方面,单片机也发挥了它的特殊作 用,使许多传统产业发生了巨大的变化,使许多工业产品体积缩小,能耗降低,功能增加,操作方便。由于单片机在如此广泛的领域里获得了 应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,其中,MCS-51系列单片机以其优越的性能、成熟的技术和高可靠性,占领 了工业控制的主要市场。特别是在我国,〖WTBZ〗MCS-51系列单片机已成为单片机应用领域的主流。 课程简介: 本课程精选了单片机应用技术的基础知识、传感器与检测技术以及〖WTBZ〗PC微机控制技术的部分内容,并使之融为一体,在应用技术的 复合方面具有新意。 本课程以MCS-51系列的8位单片机为教学对象,介绍单片机的发展概况、原理及应用。全书共分14章,内容包括:单片机概述,〖WTBZ〗 MCS-51系列单片机的结构,〖WTBZ〗MCS-51系列单片机指令系统,程序设计基础,中断系统,〖WTBZ〗MCS-51系列单片机内部定时器/计数器及 其应用,串行接口,单片机应用系统扩展设计基础,模拟量输入输出接口技术,人机接口技术,功率接口技术,单片机应用系统设计技术,单 片机实用技术举例,新型单片机介绍。 本课程可作为高等院校电气信息类各专业“单片机原理及应用技术”课程的教程,同时可供有关工程技术人员参考。 教材目录: 第1章 单片机概述 1.1单片机发展概况 1.2单片机的分类 1.3单片机应用介绍 思考题与习题 第2章 MCS-5单片机的结构 2.1 MCS-51单片机的结构和引脚 2.1.1引脚定义及功能 2.1.2 MCS-51单片机的基本组成 2.2 8051单片机存储器结构及其用途 2.2.1 程序存储器 2.2.2 数据存储器地址空间 2.3 并行I/0口 2.3.1并行I/0口的结构 2.3.2 并行I/0口操作注意事项 2.4 时钟电路 2.4.1内部时钟电路 2.4.2 外部时钟电路 2.4.3 时钟与时序 2.5 复位电路 2.5.1单片机复位原理 2.5.2 复位电路 思考题与习题 第3章 MCS-51单片机指令系统 3.1指令格式和寻址方式 3.1.1指令格式 3.1.2 寻址方式 3.2指令系统 3.2.1寻址空间及符号注释 3.2.2 数据传送指令 3.2.3 算术运算指令 3.2.4 逻辑运算指令 3.2.5 控制转移指令 3.2.6 位操作指令 思考题与习题 第4章 程序设计基础 4.1 MCS-51单片机汇编语言的伪指令 4.2汇编语言程序的基本结构 4.3实用程序设计举例 4.3.1 数制转换程序 4.3.2 算术和逻辑运算类程序设计 4.3.3 查表程序设计 思考题与习题 第5章 中断系统 5.1 中断概念 5.2中断源与中断请求 5.3中断允许控制 5.4中断优先级控制 5.5中断响应与中断处理 思考题与习题 第6章 MCS-51单片机内部定时器/计数器及其应用 6.1 定时器的结构及工作原理 6.2定时器的控制 6.2.1工作模式寄存器TMOD 6.2.2 控制寄存器TCON 6.3 定时器的工作模式及其应用 6.3.1模式0及应用 6.3.2模式1及应用 6.3.3模式2及应用 6.3.4模式3及应用 6.3.5综合应用举例 思考题与习题 第7章 串行接口 7.1 串行通信概念 7.2 串行接口的工作方式 7.2.1串行接口的结构 7.2.2串行接口的工作方式 7.3 串行接口的波特率 7.4 串行接口的应用 7.4.1串行接口工作方式0的I/O扩展应用 7.4.2串行口的异步通信应用 思考题与习题 第8章 单片机应用系统扩展设计基础 8.1程序存储器扩展 8.1.1 EPROM程序存储器的扩展设计 8.1.2扩展E2PROM 8.2 数据存储器的扩展设计 8.2.1 数据存储器扩展举例 8.2.2 扩展数据和程序存储器综合举例 8.3 并行I/O扩展设计 8.3.1 简单的I/O扩展设计 8.3.2 8255可编程并行I/O接口扩展电路设计 8.3.3 8155可编程I/O接口扩展设计 8.3.4 串行口扩展I/O接口 8.4 外部中断扩展方法 8.4.1 利用定时器扩展外部中断源 8.4.2 中断加查询扩展中断源 思考题与习题 第9章 模拟量输入输出接口技术 9.1 模拟量输入接口技术概述 9.1.1 传感器技术 9.1.2 模拟量信号处理技术 9.2 A/D转换器的主要性能指标及分类 9.2.1 A/D转换器的主要性能指标 9.2.2 A/D转换器的分类 9.3 常用的A/D转换芯片 9.3.1 ADC0809 8位A/D转换器 9.3.2 AD574 12位A/D转换器及接口 9.3.3 双积分A/D转换器及接口技术 9.3.4 V/F转换器与单片机接口 9.4 D / A转换器及接口技术 9.4.1 D / A转换器的主要性能指标 9.4.2 D AC0832 8位D / A转换器 9.4.3 MCS-51单片机与12位D / A转换器DAC1208的接口 9.4.4 F / V转换电路 思考题与习题 第10章 人机接口技术 10.1 开关接口 10.1.1 机械式开关接口的基本应用 10.1.2 电子式开关接口的基本应用 10.2 键盘接口 10.2.1 硬件消除抖动法 10.2.2 软件消除抖动法 10.2.3 简单键盘接口 10.2.4 矩阵式键盘接口 10.2.5 BCD码拨盘接口 10.3 LED显示接口 10.3.1 发光二极管接口 10.3.2 LED数码管接口 10.4 LCD液晶显示接口 10.4.1 字段型LCD及其应用 10.4.2 图形式液晶显示驱动器 第11章 功率接口技术 11.1开关型接口 11.1.1 简单开关量输出接口 11.1.2 光电耦合接口 11.1.3 继电器接口 11.2电压调节接口 11.2.1 可控硅工作原理 11.2.2 可控硅在电压调节中的应用 11.2.3 固态继电器 思考题与习题 第12章 单片机应用系统设计技术 12.1设计原则与要求 12.2硬件设计要求 12.3软件设计要求 12.4 逻辑电平设计要求 12.5可靠性设计要求 12.6 印刷电路的设计要求. 12.7 电源系统的设计要求 12.8 单片机开发装置的选择 思考题与习题 第13章 单片机实用技术举例 13.1 智能化温度仪表的设计 13.2 PID智能控制器的设计 13.3单片机数字万用表的设计 13.4 电子血压计的设计 13.5 步进电机在精确走步中的应用 13.6 单片机在串行通信中的应用 13.7 单片机在气象参数测量中的应用 13.8 单片机在模糊控制中的应用 思考题与习题 第14章 新型单片机介绍 14.1 MSP430系列单片机 14.2 EM78P447S单片机 14.3 PIC系列单片机 14.4 AT89系列单片机 14.5 AVR系列单片机 14.6 其他系列单片机 思考题与习题
B. 举例说明单片机中断处理过程
如主函数
main()
{
循环{
语句1
语句2
语句3
}
}
中断函数
interupt 1 in1()
{
清中断标示位
执行中语句
}
如果执行到语句2,那么单片机PC寄存器内容,也就是当前正在执行的语句的地址,就会压到堆栈,PC取中断函数的地址,去执行中断函数,执行完了之后,再出堆栈,把原来正在执行的语句地址复制到PC,所以又能准确的回到语句2了。
中断的过程概括为 压栈(保存现场)-执行中断-出栈(还原现场)
C. 单片机中断处理流程
当某中断产生而且被CPU响应,主程序被中断,接下来将执行如下操作:
1.
当前正被执行的指令全部执行完毕;
2.
PC值被压入栈;
3.
现场保护;
4.
阻止同级别其他中断;
5.
将中断向量地址装载到程序计数器PC;
6.
执行相应的中断服务程序。
中断服务程序ISR完成和该中断相应的一些操作。ISR以RETI(中断返回)指令结束,将PC值
从栈中取回,并恢复原来的中断设置,之后从主程序的断点处继续执行。
D. 关于单片机试题:简述中断处理过程。
第一步:保护现场,将当前位置的PC地址压栈。
第二步:跳转到中断服务程序,执行中断服务程序。
第三步:恢复现场,将栈顶的值回送给PC
第四步:跳转到被中断的位置开始执行下一个指令。
E. 51单片机中断响应过程举例
CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将相应的中断入口地址送入PC,PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。这些工作都是由硬件来完成的,不必我们去考虑。这里还有个问题,大家是否注意到,每个中断向量地址只间隔了8个单元,如0003-000B,在如此少的空间中如何完成中断程序呢?很简单,你在中断处安排一个LJMP指令,不就可以把中断程序跳转到任何地方了吗?
一个完整的主程序看起来应该是这样的:
ORG 0000H
LJMP START
ORG 0003H
LJMP INT0 ;转外中断0
ORG 000BH
RETI ;没有用定时器0中断,在此放一条RETI,万一 “不小心“产生了中断,也不会有太大的后果。 资料来源:吴鉴鹰吧
中断程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。注意:CPU所做的保护工作是很有限的,只保护了一个地址,而其它的所有东西都不保护,所以如果你在主程序中用到了如A、PSW等,在中断程序中又要用它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数据,就得自己保护起来。
F. 简述单片机中断系统使用步骤
中断的基本概念
1.数据传送方式
程序控制方式
无条件传送方式:输入输出操作完全取决于程序的安排,而不管外设的状态。
程序查询方式:先查询外设的当前状态,获得端口信息;I/O操作完全由CPU控制。缺点:浪费CPU时间,效率低。
中断传送方式
CPU不必定时查询接口状态,接口在数据发送或接收数据准备好后通知CPU;
CPU通过执行一个中断服务程序来完成数据传送。
接口没有准备好时,CPU继续执行主程序,提高CPU工作效率。
DMA(Direct Memory Access):直接存储器存取方式
I/O设备在DMA接口控制下直接把成块信息送到主存储器,或从主存储器取出成块信息送给I/O设备,中间不经CPU参与。
比中断、查询方式更加提高了CPU的利用率。
2.中断概念:CPU在正常运行程序时,由于CPU以外某一事件的发生,引起CPU暂停正在运行的程序,而转到为该事件的发生预先安排好的服务程序中去执行。
相关文章
使用单片机实现PWM调光的C语言实例免费下载
使用单片机实现花样灯的C语言实例免费下载
使用单片机实现查表显示LED灯的C语言实例免费下载
使用单片机实现8位LED左移的C语言实例免费下载
使用单片机实现8位LED右移的C语言实例免费下载
使用51单片机实现液晶读写的源代码免费下载
抗抖动计数电路的工作原理及应用设计
使用PIC单片机实现热敏电阻数字化方法详细说明
G. 2、简述MCS-51单片机的中断响应过程
还是我来告诉你吧!(正在看书是电话响了,暂停看书,去接电话。。。接完电话从刚才的地方继续看书!这个过程就是中断响应的过程!而且呼叫方是否是美女直接影响中断响应级别!)这个例子非常的恰当不过我要更正一下,正在看书时电话响了,暂停看书,记下当前看到的页数(将下一条指令的地址压入单片机堆栈中),去接电话。。。接完电话从刚才的地方继续看书(将指令的地址从堆栈弹出)!这个过程就是中断响应的过程!而且呼叫方是否是美女直接影响中断响应级别,这句话的意思是如果你正在接电话,有美女打电话过来,你要暂停当前的电话,先接通美女的电话,然后回来继续讲你刚才讲的电话。
H. 说明80C51单片机的中断过程.
中断响应
中断响应就是单片机CPU对中断源提出的中断请求的接受。中断请求被响应后,再经过一系列的操作,而后转向中断服务程序,完成中断所要求的处理任务。下面简要说明80c51的中断响应过程:
1.外中断采样和内中断置位
1.1外中断采样
-
要想知道外中断是否有请求发生,需要对外中断进行采样。
当通过软件将寄存器TCON的IT0(或IT1)位设置为0时,/INT0(或/INT1)为电平触发方式,CPU在每个机器周期的S5P2(第五个状态第2拍节)期间对/INT0(或/INT1)采样,一旦在P3.2(或P3.3)上检测到低电平时,则认为有外部中断申请,随即由硬件使TCON的IE0(或IE1)位置1,向CPU申请中断。在中断响应完成后转向中断服务子程序,再由硬件自动对IE0(或IE1)位清0.
当寄存器TCON的IT0(或IT1)位为1,/INT0(或/INT1)为脉冲触发方式,则CPU在每个机器的S5P2期间对/INT0(或/INT1)采样,当检测到前一周期为高电平、后一周期为低电平时,由硬件使TCON的IE0(IE1)位置1,向CPU申请中断,在中断响应完成后转向中断服务子程序时,再由硬件自动对IE0(IE1)位清0.在边沿触发方式中,为保证CPU在两个机器周期内检测到由高到低的负跳变,高电平与低电平的持续时间不得少于一个机器周期的时间。
1.2内中断置位
80c51把所有中断标志都集中到TCON和SCON寄存器中。其中外中断是使用采样的方法把中断请求锁定在TCON寄存器的IE0(IE1)标志位上,而定时中断和串行中断的中断请求由于都发生在芯片的内部,定时中断可以直接去置位TCON的TF0(TF1),串行中断可以直接去置位SCON的RI和TI。内中断不存在采样问题。
2.中断查询
所谓查询,就是由CPU测试TCON和SCON中各标志位的状态,以确定有没有中断请求发生以及是哪一个中断请求。单片机是在每一个机器周期的最后状态(S6),按优先级顺序对中断请求标志进行查询,即先查询高级中断后查询低级中断,同级中断按“外部中断0—定时中断0—外部中断1—定时中断1—串行中断”的顺序查询。如果查询到有标志位为“1”,则表明有中断请求发生,接着就从相邻的下一个机器周期的S6状态开始进行中断响应。
由于中断请求是随机发生的,CPU无法预先得知,因此在程序执行过程中,中断查询要在指令执行的每个机器周期中不停地重复进行。换句话说,就相当于你在看书的时候,每一秒钟都会抬起头来听一听,看一看,是不是有人按门铃,是否有电话,烧的开水是否开了。。。。。。看来,单片机比人蠢多了。
3.中断响应
当查询到有效的中断请求时,紧接着就进行中断响应。中断响应时,根据寄存器TCON、SCON中的中断标记,由硬件自动生成一条长调用指令LCALL XXXX,这里的XXXX就是程序存储器中断区中相应中断的入口地址。对于80c51的5个独立中断源,这些入口地址已由系统设定。这样在产生了相应的中断以后,就可转到相应的位置去执行。
例如,对于外部中断0的响应,产生的长调用指令为
LCALL 0003H
生成LCALL指令后,紧接着就由CPU执行,首先将当前程序计数器PC的内容(准备执行的指令的地址)压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向相应的中断区入口地址。从中断源所对应的向量地址中可以看出,一个中断向量入口地址到下一个中断向量入口地址之间只有8个单元。也就是说,中断服务程序的长度如果超过了8B,就会占用下一个中断的入口地址,导致出错。但一般情况下,很少有一段中断服务程序只占用少于8B的情况,为此可以在中断入口处写一条“LJMPXXXX”或“AJMPXXXX”指令,这样可以把实际处理中断的程序放到ROM的任何一个位置。
例如,若采用外中断0,在程序的开始处可以这样写:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_0
;以下是主程序
MAIN:
;以下是外中断0服务程序
INT_0:
RETI
END
中断服务程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。
说明 CPU所做的保护工作是很有限的,只保护了一个地址(主程序中断处的地址),而其他的所有东西都不保护,所以如果你在主程序中用到了如A、DPTR、PSW等,在中断程序中要用它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数据,就得自己保护起来。
-
CPU会在机器周期的S5P2阶段读入中断标志,并在下一个机器周期中检查,如果中断条件成立时,系统会自行产生一个LCALL到相对应的中断服务例程中,可是如果有下面3种情况时,系统是不会对中断要求信号有反应的:
a有相等或更高级的中断正在执行中,这与处理突发事件的状况相同,既然已经在处理突发情况,当然就不再接受其他中断条件,除非接下来的中断情形的优先权比较高。
由此得到一个观念:所有的中断程序都应该尽量简捷,一处理完中断事项后立即回主程序,才不会占用过多时间,进而影响系统的性能。
b目前的机器周期不是该指令的最后一个周期,由于80c51在指令执行时,分别有1个、2个和4个机器周期之分,也就是说,必须完全执行完此指令后,系统对中断信号才会有所反应。比方说,当系统正在执行MULAB指令(需花4个机器周期)时,中断信号必须出现在第4个机器周期上才算有效。这也就意味着,中断信号必须持续足够长的时间,以便80c51的CPU有时间去反应。
c若正在执行的指令为RETI或者是关于中断设置IE、IP的指令时,对正好出现的中断信号不反应,因为上述的情况刚好是某个中断服务程序的结束,或是允许/禁止某个中断的指令,当然是等到这些指令执行完毕后,才会对中断信号有所反应,这些指令最多占用两个机器周期的时间,所以这时的中断信号必须保持有两个机器周期以上的时间,才能被80c51接受。
中断的撤除
中断响应后,TCON或SCON中的中断请求标志应及时清除。否则就意味着中断请求仍然存在,弄不好就会造成中断的重复查询和响应,因此就存在一个中断请求的撤除问题。
1 定时器中断请求的撤除
定时中断响应后,硬件自动把标志位TF0(或TF1)清0,因此定时中断的中断请求是自动撤除的,不需要用户干预。
2 串行中断软件撤除
对于串行中断,CPU响应中断后,没有用硬件清除它们的中断标志RI、TI,必须在中断服务程序中用软件清除,以撤除其中断请求。
3 外中断请求的撤除
外部中断的撤除包括中断标志位IE0(或IE1)的清0和外中断请求信号的撤除。其中IE0(或IE1)清“0”是在中断响应后由硬件电路自动完成的。剩下的只是外中断引脚请求信号的撤除了。下面对脉冲和电平两种触发方式分别进行讨论。
a对于脉冲方式的中断请求,由于脉冲信号过后就消失了,也可以说中断请求信号是自动撤除的。
b对于电平方式的外部中断,中断标志的撤除是自动的,但中断请求信号的低电平可能继续存在,在以后机器周期采样时,又会把已清0的IE0或IE1标志位重新置1.为此,要彻底解决电平方式外中断的撤除,除了标志位清0之外,必要时还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平,为此,可在系统中增加如图所示电路
外中断请求标志撤除电路
从图可以看出,外部中断0请求信号在D触发器(可选用74LS74)的时钟输入端。当外部设备有中断请求信号(为低电平)出现时,Q端输出为低电平,/INT0有效,向CPU发出中断请求信号。CPU响应中断后,在中断服务程序中由软件安排1个低电平中断应答信号,从P1.0送至D触发器的/SD(置位端,低电平有效),使D触发器的Q端输出为高电平,从而撤除了低电平的外中断0请求信号。/SD端所需的低电平可通过在中断服务程序中增加一下指令的得到:
ANLP1,#0FEH ;使P1.0输出为低电平,D触发器置位
在中断服务程序中还要加上撤除外中断0标志指令,即
CLRIE0 ;清外中断标志,以便下次可再次中断
可见,电平方式外部中断请求信号的撤除是通过软、硬件相结合的方法实现的。
I. 简述单片机中断相应过程
中断,无非就是你正在运行当前程序的时候有中断条件产生,进入中断函数,中如果是汇编写的程序就要手动保护中断要用的寄存器里之前的程序运行的数据,(压栈),运行完中断程序后把之前保护的数据再送回相应的功能寄存器(出栈),然后继续之前的程序运行。
J. 51单片机中断过程
你好:
看你对定时器中断不是很了解,我可以给你一个详细的解释:首先了解一下51单片机的周期,51单片机的机器周期计算方式是12/晶振(Hz),也就是说单片机每隔这么一段时间会让定时寄存器加1,如果是12MHz晶振,就是1us定时寄存器会自己加1。然后,当你配置好定时器相关寄存器后,打开TRx(定时器启动开关),定时器启动,你的11.0592MHz的晶振根据上述公式算出为每1.0851us定时寄存器加1,当然不是从0开始加,而是从你的初值的基础上开始加,加到溢出时就是定时寄存器满之后产生中断信号,这个信号是由硬件自动置位的。最后根据相应的中断号进去中断入口函数,里边只要重装初值就可以了,之后就可以自己写点处理程序进去。
那么根据你的1.0592MHz晶振,45872×1.0851就是50000左右,刚好是换算后的50us中断一次。那么num每50us自增一次,计数到20就是一秒了。
有不懂的地方可随时回复我。
希望我的回答能帮助到你。