中断操作标志位
- 格式:docx
- 大小:45.09 KB
- 文档页数:2
MCS-51单⽚机的中断系统单⽚机中断技术概述在任何⼀款事件驱动型的CPU⾥⾯都应该会有中断系统,因为中断就是为响应某种事件⽽存在的。
中断的灵活应⽤不仅能够实现想要的功能,⽽且合理的中断安排可以提⾼事件执⾏的效率,因此中断在单⽚机应⽤中的地位是⾮常重要的。
单⽚机中断(Interrupt)是硬件驱动事件,它使得CPU暂停当前的主程序,转⽽去执⾏⼀个中断服务⼦程序。
为了更形象地理解中断,下⾯以学⽣上⾃习时接电话为例阐述⼀下中断的概念。
单⽚机的中断系统有5个中断源、2个中断优先级,可实现两级中断服务程序嵌套。
如果单⽚机没有中断系统,单⽚机的⼤量时间可能会浪费在查询是否有服务请求发⽣的定时査询操作上。
采⽤中断技术完全消除了单⽚机在査询⽅式中的等待现象,⼤⼤地提⾼了单⽚机的⼯作效率和实时性。
单⽚机中断系统结构及中断控制中断系统结构图如图5-2所⽰。
由图5-2可见,MCS-51中断系统共有5个中断请求源:INT0——外部中断请求0,中断请求信号由INT0引脚输⼊。
定时/计数器T0计数溢出发出的中断请求。
INT1——外部中断请求1,中断请求信号由INT1引脚输⼊。
定时/计数器T1计数溢出发出的中断请求。
串⾏⼝中断请求。
中断优先级从⾼到底排列。
单⽚机如何知道有中断请求信号?是否能够响应该中断?若5个中断源请求信号同时到来,单⽚机如何响应?这些问题都可以由中断寄存器来解决。
单⽚机中断寄存器有中断标志寄存器TCON和SCON、中断使能寄存器IE和中断优先级寄存器IP,这些寄存器均为8位。
中断标志寄存器5个中断请求源的中断请求标志分别由TCON和SCON的相应位锁存,单⽚机通过这些中断标志位的状态便能知道具体是哪个中断源正在申请中断。
TCON寄存器TCON寄存器为定时/计数器的控制寄存器,字节地址为88H,可位寻址。
特殊功能寄存器TCON的格式如图5-3所⽰。
TCON各标志位功能如下。
TF1——定时/计数器T1的溢出中断请求标志位。
TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能; TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
工作方式寄存器TMOD工作方式寄存器TMOD 用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
GATE :门控位。
GATE =0时,只要用软件使TCON 中的TR0或TR1为1,就可以启动定时/计数器工作;GATA =1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
即此时定时器的启动多了一条件。
C/T :定时/计数模式选择位。
C/T=0为定时模式; C/T=1为计数模式。
M1M0:工作方式设置位。
定时/计数器有四种工作方式,由M1M0进行设置。
控制寄存器TCONTCON 的低4位用于控制外部中断,已在前面介绍。
TCON 的高4位用于控制定时/计数器的启动和中断申请。
▪ TF1(TCON.7):T1溢出中断请求标志位。
T1计数溢出时由硬件自动置TF1为1。
CPU响应中断后TF1由硬件自动清0。
T1工作时,CPU 可随时查询TF1的状态。
所以,TF1可用作查询测试的标志。
TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
▪ TR1(TCON.6):T1运行控制位。
TR1置1时,T1开始工作;TR1置0时,T1停止工作。
TR1由软件置1或清0。
所以,用软件可控制定时/计数器的启动与停止。
▪ TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
▪ TR0(TCON.4):T0运行控制位,其功能与TR1类同。
方式2方式2为自动重装初值的8位计数方式。
计数个数与计数初值的关系为: 工作方式2特别适合于用作较精确的脉冲信号发生器8X=2-N初始化程序应完成如下工作:▪ 对TMOD 赋值,以确定T0和T1的工作方式。
▪ 计算初值,并将其写入TH0、TL0或TH1、TL1。
▪ 中断方式时,则对IE 赋值,开放中断。
在Java 中,线程的`stop()` 和`interrupt()` 方法都用于中断线程的执行,但它们有不同的作用和用法。
下面我将详细介绍这两个方法的区别。
1. `stop()` 方法:- 作用:`stop()` 方法用于立即终止一个正在执行的线程,无论线程处于什么状态,都会强制终止线程的执行。
- 用法:`stop()` 方法是一个已被废弃的方法,不推荐使用。
这是因为该方法会直接终止线程,并且可能会导致线程执行到一半时突然结束,引发数据不一致或资源泄露等问题。
2. `interrupt()` 方法:- 作用:`interrupt()` 方法用于中断正在执行的线程,给线程发送一个中断信号,但不会直接终止线程的执行,而是由线程自行决定如何处理中断信号。
- 用法:`interrupt()` 方法通过设置线程的中断标志位为`true`,告知线程应该被中断。
被中断的线程可以通过调用`isInterrupted()` 方法来检查中断标志位,以决定如何终止线程的执行。
典型的线程中断操作的用法如下:```// 检查中断标志位并进行相应的处理while (!Thread.currentThread().isInterrupted()) {// 线程执行的逻辑}// 在需要中断线程时调用interrupt()方法thread.interrupt();```通过检查中断标志位并相应地改变线程的执行逻辑,我们可以在适当的时候从线程中退出。
但需要注意,`interrupt()` 方法并不能直接中断一些阻塞方法(如`sleep()`、`wait()`、`join()` 等),这些方法会抛出`InterruptedException` 异常,我们可以在异常处理中适当处理中断。
8051单片机的中断系统在单片机的世界里,8051 单片机的中断系统就像是一个有条不紊的交通指挥中心,能够让单片机在应对各种复杂任务时做到有条不紊、高效快捷。
什么是中断呢?打个比方,你正在家里专心致志地看书,突然门铃响了,这时候你就得放下手中的书去开门,处理完开门这件事之后再回来继续看书。
对于单片机来说,中断就像是这个突然响起的门铃,它会打断单片机正在进行的主程序,让单片机先去处理更紧急、更重要的任务,处理完后再回到原来的主程序继续执行。
8051 单片机的中断系统有 5 个中断源,分别是外部中断 0(INT0)、外部中断 1(INT1)、定时/计数器 0 溢出中断(TF0)、定时/计数器1 溢出中断(TF1)和串行口中断(RI 或 TI)。
外部中断 0 和 1 通常是由外部信号触发的。
比如说,连接一个传感器,当传感器检测到特定的条件时,就会产生一个信号触发外部中断,让单片机去处理相应的操作。
定时/计数器 0 和 1 溢出中断则是在定时/计数器计满溢出时产生中断。
这就好比你设定了一个闹钟,时间到了闹钟就响,单片机就知道该去执行相应的任务了。
串行口中断是在串行通信过程中,当接收或发送完一帧数据时产生的中断。
每个中断源都有自己的中断标志位。
当相应的中断事件发生时,中断标志位就会被置位。
单片机通过查询这些中断标志位来判断是否有中断请求。
为了有效地管理这些中断,8051 单片机设置了中断允许寄存器 IE和中断优先级寄存器 IP。
中断允许寄存器 IE 就像是一个总开关,决定了哪些中断源可以被响应。
如果某个中断源对应的位被设置为 1,那么它就是被允许的;如果是 0,就会被禁止。
中断优先级寄存器 IP 则决定了多个中断同时请求时的响应顺序。
就像在一个拥挤的路口,警车、救护车等具有更高优先级的车辆会先通过。
在 8051 单片机中,默认的中断优先级顺序是:外部中断 0 >定时/计数器 0 溢出中断>外部中断 1 >定时/计数器 1 溢出中断>串行口中断。
单片机中断处理是指当单片机正在执行正常任务时,由于外部事件(例如按钮按下、定时器溢出等)触发,暂时停止当前任务的执行,转而执行相应的中断服务程序(ISR),处理完中断后再回到原来的任务继续执行。
中断处理一般包括以下步骤:
1. 中断请求:外部事件触发中断请求,向单片机发送中断信号。
2. 中断识别:单片机接收到中断信号后,根据中断标志位(IF)识别出相应的中断源。
3. 保护现场:为了防止中断处理过程中当前数据被修改,需要将相关寄存器和堆栈等现场信息保存起
来。
4. 跳转到中断服务程序:根据中断源的优先级和中断向量表,跳转到相应的中断服务程序(ISR)执行。
5. 执行中断服务程序:在ISR中执行与中断源相关的处理任务,例如读取输入、控制输出等。
6. 恢复现场:ISR执行完毕后,将之前保存的现场信息恢复,以便回到原来的任务继续执行。
7. 返回:返回到原来被中断的任务,继续执行。
在单片机中断处理过程中,需要注意以下几点:
1. 中断优先级:根据不同中断源的优先级,合理安排中断处理顺序。
2. 中断嵌套:当一个中断正在处理时,如果有更高优先级的中断请求,需要先处理高优先级的中断。
3. 中断标志位:在中断识别阶段,需要根据中断标志位判断是否允许该中断源的中断。
4. 中断向量表:在跳转到ISR阶段,需要根据中断向量表跳转到相应的ISR执行。
5. 现场保护和恢复:为了防止中断处理过程中当前数据被修改,需要在进入ISR前保存现场信息,并在
ISR执行完毕后恢复现场信息。
汇编语言标志位(CF)及一些常用指令英文翻译:carry 进位 flag标志NV: no overflow OV: overflowUP: up DN:downDI: disable interrupt EI: enable interruptPL: plus NG: negativeNZ: no zero ZR: zeroNA: no assistant carry AC: assistant carryPO: parity odd PE: parity even 奇偶校验NC: no carry CY: carry汇编标志位:标志名标志 1 标志 0 OF (溢出标志) OV NVDF (方向标志) UP DNIF (中断标志) DI EISF (符号标志位) PL NGZF (零标志) NZ ZRAF (辅助进位标志位) NA ACPF (奇偶标志) PO PECF (进位标志) NC CYOF 溢出(是/否) OV OVerflow NV Not oVerflowDF 方向(减量/增量) DN DowN UP UPIF 中断(允许/关闭) EI Enable Interrupt DI Disable InterruptSF 符号(负/正) NG NeGative PL PLusZF 零(是/否) ZR ZeRo NZ Not ZeroAF 辅助进位(是/否) AC Auxiliary Carry NA Not AuxiliaryPF 奇偶(是/否) PE Parity Even PO Parity OddCF 进位(是/否) CY CarrY NC Not Carry英文解释:NV: no overflow OV: overflowUP: up DN:downDI: disable interrupt EI: enable interruptPL: plus NG: negativeNZ: no zero ZR: zeroNA: no assistant carry AC: assistant carryPO: parity odd PE: parity evenNC: no carry CY: carry先熟悉一下FLAGS标志位:OV、NV即溢出标志位OF=1或0,表示运算结果有无溢出。
中断请求标志
1、TCON的中断标志
IT0(TCON.0),外部中断0触发方式控制位。
当IT0=0时,为电平触发方式。
当IT0=1时,为边沿触发方式(下降沿有效)。
IE0(TCON.1),外部中断0中断请求标志位。
IT1(TCON.2),外部中断1触发方式控制位。
IE1(TCON.3),外部中断1中断请求标志位。
TF0(TCON.5),定时/计数器T0溢出中断请求标志位。
TF1(TCON.7),定时/计数器T1溢出中断请求标志位。
SCON的中断标志
▪RI(SCON.0),串行口接收中断标志位。
当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。
注意,RI必须由软件清除。
▪TI(SCON.1),串行口发送中断标志位。
当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。
每发送完一个串行帧,由硬件置位TI。
CPU响应中断时,不能自动清除TI,TI必须由软件清除。
▪
▪中断允许控制
▪CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
▪EX0(IE.0),外部中断0允许位;
▪ET0(IE.1),定时/计数器T0中断允许位;
▪EX1(IE.2),外部中断1允许位;
▪ET1(IE.3),定时/计数器T1中断允许位;
▪ES(IE.4),串行口中断允许位;
▪EA (IE.7),CPU中断允许(总允许)位。
中断响应条件
▪中断源有中断请求;
▪此中断源的中断允许位为1;
▪CPU开中断(即EA=1)。
以上三条同时满足时,CPU才有可能响应中断。