中断1
- 格式:ppt
- 大小:432.00 KB
- 文档页数:5
湖南科技大学潇湘学院课程设计课程设计名称:《单片机接口技术》课程设计题目: INT0及INT1的中断计数学生姓名:学院:专业及班级:学号:指导教师:2016 年 12月 19日摘要单片机的外部中断有两种触发方式可选:电平触发和边沿触发。
电平触发方式时,中断标志寄存器不锁存中断请求信号。
也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。
标志寄存器对于请求信号来说是透明的。
这样当中断请求被阻塞而没有得到及时响应时,将被丢失。
换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。
因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。
同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
边沿触发方式时,中断标志寄存器锁存了中断请求。
中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。
因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。
在该中断退出后,将被响应执行。
如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
一个中断如果在没有到响应之前就已经被手工清除,则该中断将被CPU忽略。
就如同没有发生一样。
目录1设计要求及目的 .............................................. .. (1)1.1 设计要求INT0及INT1中断计数................................................ .11.2 设计目的................................................ (1)2 方案设计和选择................................................ (1)2.1原件选择................................................ .. (1)2.1.1单片机的选择................................................ ...................1-33 调试过程................................................ (3)3.1软件调试................................................ .........................3-64 心得体会................................................ .. (6)5 参考文献................................................ .. (7)第一章设计要求和目的1.1 设计要求INT0及INT1中断计数(1)每次按下第1个计数键时,第1组计数值累加并显示在右边3只数码管上(2)每次按下第2个计数键时,第2组计数值累加并显示在左边3只数码管上(3)后两个按键分别清零 1.2 设计目的本设计的目的是为提高自己的实际动手能力以及对外部中断的原理和单片机C51语言的相关知识有更深刻理解。
1 系统中断与时钟节拍1.1 系统中断中断是种硬件机制用于通知CPU有个异步事件发生了中断旦被系统识别CPU则保存部分(或全部)现场(context)即部分(或全部)寄存器值跳转到专门子称为中断服务子(ISR)中断服务子做事件处理处理完成后执行任务调度回到就绪态优先级最高任务开始运行(对于可剥夺型内核)中断使得CPU可以在事件发生时才予以处理而不必让微处理器连续不断地查询(polling)是否有事件发生通过两条特殊指令:关中断(disable errupt)和开中断(enable errupt)可以让微处理器不响应或响应中断在实时环境中关中断时间应尽量短关中断影响中断响应时间关中断时间太长可能会引起中断丢失中断服务处理时间应该尽可能短中断服务所做事情应该尽可能少应把大部分工作留给任务去做1.2 系统时钟节拍时钟节拍是特定周期性中断(时钟中断)这个中断可以看作是系统心脏脉动操作系统通过时钟中断来确定时间间隔实现时间延时及确定任务超时中断之间时间间隔取决于不同应用般在10~200 ms之间时钟节拍式中断使得内核可以将任务延时若干个整数时钟节拍以及当任务等待事件发生时提供等待超时依据时钟节拍频率越快系统额外开销就越大系统定义了32位无符号整数OSTime来记录系统启动后时钟滴答数目用户必须在多任务系统启动以后再开启时钟节拍器也就是在OSStart之后μC/OSII中时钟节拍服务是通过在中断服务子中OSTimeTick实现时钟节拍中断服务子示意代码如下:void OSTickISR(void) {保存处理器寄存器值;OSIntEnter 或是将OSIntNesting加1;OSTimeTick ;OSIntExit ;恢复处理器寄存器值;执行中断返回指令;}2 时钟管理系统2.1 μC/OSII时钟管理系统μC/OSII原有时钟管理系统类似于Linux但是比Linux简单得多它仅向用户提供个周期性信号OSTime时钟频率可以设置在10~100 Hz时钟硬件周期性地向CPU发出时钟中断系统周期性响应时钟中断每次时钟中断到来时中断处理更新个全局变量OSTimeμC/OSII时钟中断服务核心是OSTimeTick OSTimeTick 用来判断延时任务是否延时结束从而将其置于就绪态其伪代码如下:void OSTimeTick(void) {OSTimeTickHook;// 用户定义时钟节拍外连while { (除空闲任务外所有任务)OS_ENTER_CRITICAL;//关中断对所有任务延时时间递减;扫描时间到期任务并且唤醒该任务;OS_EXIT_CRITICAL;//开中断指针指向下个任务;}OSTime;//累计从开机以来时间}在μC/OSII时钟节拍中需要执行用户定义时钟节拍外连OSTimeTickHook 以及对任务链表进行扫描并且递减任务延时这样就造成了时钟节拍OSTimeTick 有两点不足:①在时钟中断中处理额外任务OSTimeIickHook 这样增加了中断处理负担影响了定时服务准确性;②在关中断情况下扫描任务链表任务越多所需要时间越长而长时间关中断对中断响应有不利影响是中断处理应当避免2.2 改进时钟管理系统针对上述OSTimeTick 不足之处需加以改进来优化时钟节拍在Linux中般对中断响应分为两部分:立即中断服务和底半中断处理(bottom half)立即中断服务仅仅做重要并且能快速完成工作而把不太重要需要较长时间完成工作放在底半处理部分来完成这样就可以提高中断响应速度μC/OSII不支持底半处理为了减轻时钟中断处理工作量来提高μC/OSII时钟精确度可以将部分在每次时钟中断需处理工作内容放在任务级来完成这样就可以减少每次时钟中断处理CPU消耗从而提高中断响应速度和μC/OSII时钟精确度为此定义任务OSTimeTask 由它来处理原来在OSTimeTick中需要处理操作μC/OSII采用基于优先级抢占式调度策略而每次时钟中断处理结束后需要首先调度该任务执行因此让任务OSTimeTask具有系统内最高优先级由它执行用户定义时钟节拍外连OSTimeTickHook 以及对所有任务延时时间进行递减并把到期任务链入到链表OSTCBRList中OSTCBRList管理所有到期任务OSTimeTask伪代码如下:void OSTimeTask {OSTimeTickHook//用户定义时间处理while { (除空闲任务外所有任务)对所有任务延时时间进行递减;把所有要到期任务链入到OSTCBRList链表中;} 任务状态改为睡眠OSSched 进行任务调度;}在任务OSTimeTask中执行原来在时钟中断处理用户OSTimeIickHook 并实现将延时到期任务链入到OSTCBRList链表中这样在时钟中断中就只需要扫描任务到期链表而不需要扫描整个链表减少了关中断时间,OSTCBRList为新建链表它管理所有到期任务,同时需要减少OSTimeTick 执行工作量只对OSTCBRList链表扫描这样也减少了关中断时间OSTimeTick 伪代码如下:void OSTimeTick(void) {OSTime;OS_TCB* ptcb=OSTCBList;// OSTCBRList指向所有到期任务链表while(ptchb!=null){关中断;唤醒任务;开中断;指针指向下个任务;}}。
湖南科技大学潇湘学院课程设计课程设计名称:《单片机接口技术》课程设计题目: INT0及INT1的中断计数学生姓名:学院:专业及班级:学号:指导教师:2016 年 12月 19日摘要单片机的外部中断有两种触发方式可选:电平触发和边沿触发。
电平触发方式时,中断标志寄存器不锁存中断请求信号。
也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。
标志寄存器对于请求信号来说是透明的。
这样当中断请求被阻塞而没有得到及时响应时,将被丢失。
换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。
因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。
同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
边沿触发方式时,中断标志寄存器锁存了中断请求。
中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。
因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。
在该中断退出后,将被响应执行。
如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
一个中断如果在没有到响应之前就已经被手工清除,则该中断将被CPU忽略。
就如同没有发生一样。
目录1设计要求及目的 ......................................... . (1)1.1 设计要求INT0及INT1中断计数........................................... (1)1.2 设计目的............................................ . (1)2 方案设计和选择........................................... .. (1)2.1原件选择............................................ (1)2.1.1单片机的选择............................................ .......................1-33 调试过程........................................... . (3)3.1软件调试............................................ .............................3-64 心得体会........................................... . (6)5 参考文献........................................... . (7)第一章设计要求和目的1.1 设计要求INT0及INT1中断计数(1)每次按下第1个计数键时,第1组计数值累加并显示在右边3只数码管上(2)每次按下第2个计数键时,第2组计数值累加并显示在左边3只数码管上(3)后两个按键分别清零 1.2 设计目的本设计的目的是为提高自己的实际动手能力以及对外部中断的原理和单片机C51语言的相关知识有更深刻理解。
计算机组成原理中断名词解释(一)计算机组成原理中断1. 什么是中断•定义:中断是计算机系统中一种可以改变程序执行流程的事件,可以打断正在执行的程序,并将控制权转移给特定处理程序。
•例子:当一个设备完成了对CPU的请求并需要CPU进行响应时,它会发送一个中断信号,中断处理程序会被触发以处理设备的请求。
2. 中断控制器•定义:中断控制器是计算机系统中的一个硬件设备,它负责将来自不同设备的中断信号进行调度,并确定是否将其传递给CPU进行处理。
•例子:8259A是Intel x86计算机系统中常用的中断控制器,它可以处理多个不同类型的中断,并按优先级将它们传递给CPU。
3. 中断向量表•定义:中断向量表是记录不同中断类型对应中断处理程序入口地址的数据结构,每个中断类型有一个对应的中断向量表项,通常是一个指向中断处理程序的指针。
•例子:在x86架构中,中断向量表是一个位于内存中的256个入口的数组,每个入口存储着对应中断处理程序的地址。
4. 中断处理程序•定义:中断处理程序是一段特定的代码,用于处理特定类型的中断事件。
它会在中断发生时被中断处理器调用,以执行相应的处理逻辑。
•例子:当用户按下键盘上的某个键时,操作系统的键盘中断处理程序会被触发,它会读取键盘输入并将其传递给相应的应用程序。
5. 中断请求线•定义:中断请求线是用于将中断信号通知中断控制器的硬件线路。
不同设备通常使用不同的中断请求线,中断控制器通过检测这些线路上的信号来确定哪些设备发出了中断请求。
•例子:在x86系统中,IRQ0是时钟中断请求线,IRQ1是键盘中断请求线。
6. 中断屏蔽•定义:中断屏蔽是一种机制,通过控制中断控制器,禁止特定的中断类型触发中断处理程序,以防止干扰正在执行的关键任务。
•例子:当计算机执行特定的任务时,操作系统可以屏蔽所有硬盘中断,以确保任务不会被硬盘中断打断。
7. 异常•定义:异常是一种特殊的中断类型,通常指的是由软件错误或非法操作引起的中断事件。
io口中断原理(一)IO口中断原理什么是IO口中断?IO口中断是指在IO操作过程中,当有特定的事件发生时,通过引发中断,来通知CPU进行相应的处理。
为什么需要IO口中断?在单片机或者嵌入式系统中,IO设备的操作是耗时的,如果不使用中断方式,CPU将不得不等待IO操作完成再去处理其他任务,这样会造成CPU的大量闲置时间,降低系统的效率。
IO口中断的实现原理IO口中断的实现原理可分为以下几个步骤:1.IO设备的初始化:首先需要对IO设备进行初始化,包括设置设备所处的工作模式、配置中断触发条件等。
2.中断请求信号的产生:当特定的事件发生时(如按钮按下、数据接收完毕等),IO设备会产生一个中断请求信号(IRQ)。
3.中断控制器的检测:中断控制器会定期检测是否有IO设备产生中断请求信号。
4.中断服务程序的执行:当中断控制器检测到中断请求信号时,会通知CPU执行对应的中断服务程序。
5.中断服务程序的处理:CPU执行中断服务程序,这里面包括保存当前程序现场、处理中断请求、清除中断标志等操作。
6.中断服务程序的返回:中断服务程序执行完毕后,CPU会返回到原先的程序继续执行。
IO口中断的应用IO口中断广泛应用于各种嵌入式系统中,特别是需要与外部设备进行实时交互的系统,如工控系统、智能家居等。
下面是一些常见的应用场景:•按键中断:通过IO口中断可以实现按键的实时响应,无需通过轮询扫描的方式,提高了按键的灵敏度和响应速度。
•串口中断:通过IO口中断可以实现串口数据的接收和发送中断,使系统可以在接收到数据时立即进行处理或者在发送完数据后进行其他操作。
•外部设备中断:比如连接外部传感器的IO口,当传感器检测到特定事件时,会引发中断请求,系统可以立即采取相应的措施。
总结IO口中断是一种重要的实时处理方式,通过中断请求的产生和中断服务程序的执行,可以实现对IO设备事件的实时响应。
在嵌入式系统中广泛应用,提高了系统的效率和响应速度。
实验四外部中断0、外部中断 1 混合使用一.实验目的学习外部中断技术的基本使用方法及中断处理的编程方法。
二.实验说明本实验在无外部中断(K01、K02 都为高电平)时发光二极管常亮,外部中断0 请求中断(K01 为低电平)时左移,外部中断1 请求中断(K02 为低电平)时右移。
如果是下载式实验仪,在程序装载前,必须使P3.2口的拨动开关处于高电平状态。
并且不能单三.实验连线P1口接发光二极管,外部中断0(P3.2)接拨动开关的 K01,外部中断 1(P3.3)接 K02。
四.实验流程五.实验电路图六.实验步骤将实验程序打入KEIL软件,然后编译连接。
七.进行仿真,仿真结果如下:八、实验源程序:ORG 0000HAJMP MAINORG 0003HAJMP IINT0ORG 0013HAJMP IINT1ORG 0030H MAIN: MOV IE,#10000101BCLR IT0CLR IT1LOOP: MOV P1,#00HAJMP LOOP IINT0: MOV R0,#08HMOV A,#0FFHCLR CIINT01: RLC AMOV P1,ACALL DELAYDJNZ R0,IINT01RETIIINT1: MOV R0,#08HMOV A,#0FFHCLR CIINT11: RRC AMOV P1,ACALL DELAYDJNZ R0,IINT11RETI;***************************************************************************** ; /*延时子程序*/;********************************************************************DELAY: MOV R5,#10DELAY1: MOV R6,#50DELAY2: MOV R7,#250DJNZ R7,$DJNZ R6,DELAY2DJNZ R5,DELAY1RETEND九.实验总结通过此次试验,我对外部中断的知识更加了解。
单片机C语言程序设计:INT0 中断计数来源:21ic作者:关键字:INT0单片机C语言程序设计/* 名称:INT0 中断计数说明:每次按下计数键时触发INT0 中断,中断程序累加计数,计数值显示在 3 只数码管上,按下清零键时数码管清零*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int//0~9 的段码uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f ,0x6f,0x00};//计数值分解后各个待显示的数位uchar DSY_Buffer[]={0,0,0};uchar Count=0;sbit Clear_Key=P3^6;//数码管上显示计数值void Show_Count_ON_DSY(){DSY_Buffer[2]=Count/100; //获取3 个数DSY_Buffer[1]=Count%100/10;DSY_Buffer[0]=Count%10;if(DSY_Buffer[2]==0) //高位为0 时不显示{DSY_Buffer[2]=0x0a;if(DSY_Buffer[1]==0) //高位为0,若第二位为0 同样不显示DSY_Buffer[1]=0x0a;}P0=DSY_CODE[DSY_Buffer[0]];P1=DSY_CODE[DSY_Buffer[1]];P2=DSY_CODE[DSY_Buffer[2]];}//主程序void main(){P0=0x00;P1=0x00;P2=0x00;IE=0x81; //允许INT0 中断IT0=1; //下降沿触发while(1){if(Clear_Key==0) Count=0; //清0Show_Count_ON_DSY();}}//INT0 中断函数void EX_INT0() interrupt 0{Count++; 计数值递增}单片机C语言程序设计:INT0 及 INT1 中断计数来源:21ic作者:关键字:INT0INT1单片机C语言/* 名称:INT0 及INT1 中断计数说明:每次按下第 1 个计数键时,第 1 组计数值累加并显示在右边3 只数码管上,每次按下第 2 个计数键时,第2 组计数值累加并显示在左边3 只数码管上,后两个按键分别清零。
单片机avr 中断寄存器中断c语言函数外部中断INT0,INT1,INT3 介绍
简介:中断的概念,ATmega16中断向量表,avr中断寄存器SREG,MCU控制和状态寄存器MCUCSR,通用中断控制寄存器GICR, MCU控制寄存器MCUCR,ICCAVR中断函数格式介绍
中断就是暂停正在执行的程序语句,转去执行另一功能(函数)的程序语句,执行完后,立即返回原先暂停执行的语句处,继续执行。
单片机的中断系统解决了单片机运算速度快,外设(如键盘)速度慢之间的数据传输问题,提高了单片机的实时性和数据处理能力。
中断源:产生中断的地方,ATmega16具有20个中断源和一个复位中断,不同的单片机中断源的个数是不一样的。
单片机的中断源分为外部中断源和内部中断源,有三个外部中断源有INT0,INT1,INT2,当连接在单片机引脚的上
的外部电平发生变化时,将产生相应的中断。
内部中断源由单片机内部的功能单元如定时器,串行通讯产生的中断。
按是否可屏蔽可分为,非屏蔽中断,和可屏蔽中断,非屏蔽中断有系统复位(reset)中断,可屏蔽中断:屏蔽指的的是中断可由软件编程控制是否允许中断,或禁止中断,大部分都是可屏蔽中断。
中断向量:单片
机的每个中断源都有一个固定的入口地址,这个地址由单片机的硬件决定的,单片机相应中断后,自动跳转到相应的地址,这个地址就叫中断矢量。
第五章 中断系统5. 1 输入/输出数据的传输控制方式一、输入/输出的一般概念1.引言输入/输出是微机系统与外部设备进行信息交换的过程。
输入/输出设备称为外部设备,与存储器相比,外部设备有其本身的特点,存储器较为标准,而外部设备则比较复杂,性能的离散性比较大,不同的外部设备,其结构方式不同,有机械式、电动式、电子式等;输入/输出的信号类型也不相同,有数字信号,也有模拟信号;有电信号,也有非电信号;输入/输出信息的速率也相差很大。
因此,CPU与外部设备之间的信息交换技术比较复杂。
CPU与外设之间的信息交换,是通过它们之间接口电路中的I/O端口来进行的,由于同一个外部设备与CPU之间所要传送的信息类型不同,方向不同,作用也不一样(例如数据信息、状态信息、控制信息、输入/输出等),所以接口电路中可以设置多个端口来分别处理这些不同的信息。
2.输入/输出端口的寻址方式微机系统采用总线结构形式,即通过一组总线来连接组成系统的各个功能部件(包括CPU、内存、I/O端口),CPU、内存、I/O端口之间的信息交换都是通过总线来进行的,如何区分不同的内存单元和I/O 端口,是输入/输出寻址方式所要讨论解决的问题。
根据微机系统的不同,输入/输出的寻址方式通常有两种形式:(1).存储器对应的输入、输出寻址方式这种方式又称为存储器统一编址寻址方式或存储器映象寻址方式。
方法:把外设的一个端口与存储器的一个单元作同等对待,每一个I/O 端口都有一个确定的端口地址,CPU与I/O端口之间的信息交换,与存储单元的读写过程一样,内存单元与I/O端口的不同,只在于它们具有不同的的地址。
优点:①CPU对I/O端口的读/写操作可以使用全部存储器的读/写操作指令,也可以用对存储器的不同寻址方式来对I/O端口中的信息,直接进行算术、逻辑运算及循环、移位等操作。
②内存与外设地址的分配,可以用统一的分布图。
③不需要专门的输入、输出操作指令。
缺点:1 内存与I/O端口统一编址时,在地址总线根数一定的情况下,使系统中实际可以直2 接寻址的内存单元数减少。
以用户在程序中使用串口1和相关定时器T1为例:1. 设置串口1 的工作模式,SCON寄存器中的SM0和SM1两位决定了串口1 的4 种工作模式;SM0, SM1: 0,0 方式0 ---同步移位串行方式:移位寄存器0,1 方式1 ---8位UART,波特率可变1,0 方式2 ---9位UART1,1 方式3 ---9位UART,波特率可变2. 设置串口1 的波特率,使用定时器T1寄存器T1H及T1L;当串行口1用定时器1作为其波特率发生器且定时器1工作于模式2(8位自动重装模式)时,Baud=(2^SMOD / 32)*Fosc/(12*(256-TH1))定时器1的工作模式: M1, M0 0,0---16位自动重装定时器,当溢出时将RLTH1和RLTL1存放的值自动重装入TH1和TL1中0,1---16位不可重装载模式,TL1、TH1全用1,0---8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL11,1---定时器/计数器1此时无效(停止计数)3. 设置寄存器AUXR中的位S1ST2/AUXR.0和T1x12/AUXR.6,确定定时器1作为串口1的波特率发生器以及速率是1T还是12T;S1ST2: 串口1(UART1)选择定时器2作波特率发生器的控制位0, 选择定时器1作为串口1(UART1)的波特率发生器;1, 选择定时器2作为串口1(UART1)的波特率发生器,此时定时器1得到释放,可以作为独立定时器使用T1x12: 定时器1速度控制位0, 定时器1是传统8051速度,12分频;1, 定时器1的速度是传统8051的12倍,不分频4.启动定时器1,让TR1位为1,T1H/T1L定时器1寄存器就立即开始计数;TR1: 定时器T1的运行控制位。
该位由软件置位和清零。
当GATE(TMOD.7)=0,TR1=1时就允许T1开始计数,TR1=0时禁止T1计数。
当GATE(TMOD.7)=1,TR1=1且INT1输入高电平时,才允许T1计数。