第七章-单片机内资源编程.doc
《第七章-单片机内资源编程.doc》由会员分享,可在线阅读,更多相关《第七章-单片机内资源编程.doc(26页珍藏版)》请在三一办公上搜索。
1、第七章 单片机内资源编程7.1外部中断7.1.1中断的概述中断是处理器(一般是我们常说的CPU)处理外部突发事件的一个重要技术。它能使处理器在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,继续进行处理器原来的工作。引起中断的原因或者说发出中断请求的来源叫做中断源。根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断和内部中断两类。对于单片机来说,中断是单片机的一个重要功能之一,是学习单片机必须掌握的一个知识点。 51单片机有五个中断源,即有五种情况发生时单片机会产生中断。为了助于大家理解中断这个概念,我们举个生活中的例子。你烧上一
2、壶水,然后去洗衣服,洗衣过程中忽然听到水开了的壶哨声,你要先停下洗衣服的动作去关火,然后把水放在暖壶中,灌完开水后还要接着去洗衣服。这个停下一件事去干另一件事的过程就是一次中断的发生过程,其流程图如图7-2所示。因为CPU在一个时间内只能处理一件事,对于单片机来讲, CPU在执行A时间时,应中断源要求(中断发生)CPU停止当前工作(中断响应)去执行B事件(中断服务),待B执行完后接着返回执行A事件(中断返回)这一过程称为中断,其流程图如图7-1所示。图7-1单片机中断过程 图7-2生活中的中断事例 再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这
3、一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。单片机在执行程序时其程序流程图如图7-3 图7-3单片机中断程序流程图引起CPU中断的根源,称为中断源,中断源向CPU提出中断请求,CP
4、U暂时中断原来的事务A,转去处理事件B,对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。中断的开启与关闭、设置启用哪一个中断等都是由单片机内部的一些特殊功能寄存器来决定的,在以前的学习中我们仅对单片机内部的特殊功能寄存器I/O口寄存器设置过,从下一节起我们将会设置单片机内部更多的特殊功能寄存器。与中断有关的知识点还有一个叫中断嵌套,意思是说:如果单片机正在处理一个中断程序,此时,又有另一个中断现象发生,单片机将会停止当前的中断程序,而转去执行新的中断程序,新中断程序处理完毕后再回到刚才停止的中断程序处继续执行,执行完这个中断后
5、再返回主程序继续执行主程序,流程图如图7-4所示 图7-4 单片机中断嵌套当涉及中断时,还有一个很重要的关键词中断优先级。假如你在洗衣服的时候,突然水开了,同时电话也响起了,接下来你只能去处理一件事,那你该处理哪件事呢?你将会根据自己的实际情况来选择其中一件更重要的事先处理,在这里,你认为更重要的事就是优先级较高的事情。单片机在执行程序时同样也会遇到类似的状况,即同一时刻发生了两个中断,那么单片机该先执行哪个中断呢?这取决于单片机内部的一个特殊功能寄存器中断优先级寄存器的设置情况,通过设置中断优先级寄存器,我们可以告诉单片机,当两个中断同时出现时先执行哪个中断程序。若没有人为操作优先级寄存器,
6、单片机会按照默认的1套优先级自动处理,我们在具体使用时详细讲解。7.1.2 中断的配置工欲善其事,必先利其器。单片机(CPU)要完成中断必须有些硬件,我们买电脑时经常会问“这电脑的配置怎么样?”这里我们对单片机处理中断的功能引入了“中断配置”的概念。当涉及中断时,还有一个很重要的关键词中断优先级。假如你在洗衣服的时候,突然水开了,同时电话也响起了,接下来你只能去处理一件事,那你该处理哪件事呢?你将会根据自己的实际情况来选择其中一件更重要的事先处理,在这里,你认为更重要的事就是优先级较高的事情。单片机在执行程序时同样也会遇到类似的状况,即同一时刻发生了两个中断,那么单片机该先执行哪个中断呢?这取
7、决于单片机内部的一个特殊功能寄存器中断优先级寄存器的设置情况,通过设置中断优先级寄存器,我们可以告诉单片机,当两个中断同时出现时先执行哪个中断程序。若没有人为操作优先级寄存器,单片机会按照默认的一套优先级自动处理,我们在具体使用时详细讲解。52单片机一共有6个中断源,它们的符号、名称及产生的条件分别解释如下:INT0一外部中断0,由P3.2端口线引入,低电平或下降沿引起。INTl一外部中断l,由P3.3端口线引入,低电平或下降沿引起。T0定时器/计数器0中断,由T0计数器计满回零引起。Tl一定时器/计数器1中断,由Tl比数器计满回零引起。T2一定时器/计数器2中断,由T2计数器计满回零引起。T
8、1/Rl一串行口中断,串行端口完成一帧字符发送/接收后引起。以上6个中断源中,T2是52单片机特有的。它们默认的中断级别如表7-1所示 表7-1 52单片机中断配置中断源默认中端级别序号(C语言用)外部中断第一0定时器/计数器中断第二1外部中断第三2定时器/计数器中断第四3串行口中断 第五42定时器/计数器2中断第六5 单片机在使用中断功能时,通常需要设置两个与中断有关的寄存器:中断允许寄存器IE和中断优先级寄存器IP。知识点1:中断允许寄存器IE中断允许寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分另J是A8H一八FH,该寄存器可进行
9、位寻址,即可对该寄存器的每一位进行单独操作。单片机复位时1E全部被清0,各位定义见表7-2 表7-2 中断允许寄存器IE位序号D7D6D5D4D3D2D1D0位符号EAET2ESET1EX1ET 0EX 0位地址AFHADH ACH ABH AAH A9HA8H EA全局中断允许位Ea=1,打开全局中断控制在此条件下,由各个中断控制位确定相应中断的打开或关闭EA=0,关闭全部中断。无效位。在此条件下,由各个中断控制位确定相应中断的打开或关闭ET2定时器计数器2中断允许位。ET2=1,打开T2中断。ET2=0,关闭T2中断。ES串行口中断允许位。ES=1,打开串行口中断。ES=0,关闭串行口中断
10、。ET1定时器计数器1中断允许位。ET1=1,打开T1中断。ET1=0,关闭Tl中断。EX1一外部中断1中断允许位。EX1=1, 打开外部中断1中断。EX1=0,关闭外部中断1中断。ET0一定时器/计数器0中断允许位。ET0=1,打开T0中断。ET0=0,关闭T0中断。EX0外部中断0 中断允许位。EX0=1,打开外部中断0中断。EX0=0,关闭外部中断0中断。知识点2:中断优先级寄存器IP中断优先级寄存器在特殊功能寄存器中,字节地址为B8H,位地址(由地位到高位)分别是B8HBFH,IP用来设定各个中断源属于两级终端中的哪一级,该寄存器可进行位寻址,即可对该寄存器的每一位进行单独操作,单片机
11、复位时全部被清,各位定义见表-3 表 7-3 中断允许寄存器IP位序号D7D6D5D4D3D2D1D0位符号PSPT1PX1PT 0PX0位地址 BCH BBH BAH B9HP8H PS=1,串行中断定义为高优先级中断。PS=0,串行口中断定义为低优先级中断。PT1一定时器7计数器1中断优先级控制位。PTl=1,定时器/计数器1中断定义为高优先级中断。PTl=0,定时器/计数器1中断定义为低优先级中断。PX1外部中断1中断优先级控制位。PX1=1,中断1定义为高优先级中断。PXl=0,外部中断1定义为低优先级中断。PT0定时器/计数器0中断优先级控制位。PT0=1,定时器/计数器0中断定义为
12、高优先级中断。PT0=0,定时器/计数器0中断定义为低优先级中断。PX0外部中断0中断优先级控制位。PX0=1,外部中断0定义为高优先级中断。PX0=0,外部中断0定义为低优先级中断。在51单片机系列中,高优先级中断能够打断低优先级中断以形成中断嵌套,同优先级中断之间,或低级对高级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,在没有设置中断优先级情况下,按照默认中断级别响应中断,在设置中断优先级后,则按设置顺序确定响应的先后顺序。7.2 定时器计数器定时器/计数器是单片机非常重要的概念,生活中我们会制定一些计划,即特定的时间干特定的事,我们也希望可以控制单片机,让它在特定的时
13、间执行特定的程序,这里我们就用到了定时器/计数器。7.2.1计数器 定时器计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMODTMOD:选择定时器/计数器T0、T1的工作模式和工作方式。TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。单片机复位时,两个寄存器的所有位都被清0。 工作方式控制寄存器TMOD的8位分为两组,高4位控制定时器1(T1),低4位控制定时器0(T0)。其各位定义如表7-4 表7-4定时器、计数器工作方式寄存器TMOD各位解释如下:(1)GATE门控位 0:以TRX(X=0,1)来启动定时器/计数器运行。1:用外中断引脚(INT
14、0*或INT1*)上的高电平和TRX来启动定时器/计数器运行。(2)M1、M0工作方式选择位如表7-5 表7-5 定时器/计数器方式选择 (3) C/T计数器模式和定时器模式选择位0:定时器模式。 1:计数器模式。 计数器的功能是对外来脉冲信号计数,52单片机有T0(P3.4)和T1(P3.5)和T2(P1.0)三个输入引脚,分别是这个计数器的计数脉冲输入端,在设置计数器工作状态时,每当外部输入的脉冲发生负跳变计数器加一,直到加满溢出,向CPU申请中断,依次重复。虽然单片机具有外来脉冲技术功能,但并不是说任意脉冲的脉冲都可以直接计数单片机的晶振频率限制了所测计数脉冲的最高频率。当定时器计数器设
15、定为计数器时,计数脉冲来自相应的外部输入引脚T0(P3.4)和T1(P3.5)和T2(P1.0)。当输入信号产生有1到0的负跳变时计数器的值加1。每个机器周期的S5P2期间,对外部输入引脚进行采样。如在第一个机器周期中采用的值为1而在下一个周期中采得的值为0则在紧跟着的再下一个机器周期S3P1期间,计数器加1。由于确认一次负跳变需要花两个机器周期,即24个振荡周期,因此外部输入计数脉冲的最高频率为振荡频率的1/24。例如,选用6MHz频率的晶振,允许输入的外部脉冲的最高频率为250kHZ,如果选用12MHZ频率晶振,则最高可输入500kHZ的外部脉冲。对于外部输入脉冲的占空比也有一定的限制,为
16、了确保某一给定的电平在变化之前能被采样一次,则这一电平至少要保持一个机器周期。7.2.2 定时器生活中我们会经常安排一些计划,到了一定的时间就去执行,单片机也有类似的功能,这里我们提出了定时器/计数器的概念。51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。它们既有定时功能又有计数功能,通过设置与它们相关的特殊功能寄存器可以选择启用定时功能或计数功能。需要注意的是,这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定时功能后,定时器便在晶振的作用下自动开始计时,当定时器的计数器计满后,可以通过软件控制产
17、生中断,即通知做些处理。结合生活事例,以烧开水为例,也就是说,当你打开火时,就注定不久就会响起水开的警报,这时你必定需要对该警报做出处理。烧开水是独立运行的一件事,但通过你打开火或者听到警报声来处理它。 定时器/计数器控制寄存器TCON为8位。各位定义如表7-6; 表7-6 定时器/计数器控制寄存器TCON高4位的功能如下:TF1定时器1溢出标志位。当定时器1计满溢出时,由硬件使TFI置1,并且申请中断。进入中断服务程序后,由硬件自动清0。需要注意的是,如果使用定时器的中断,那么该位完全不用人为去操作,但是如果使用软件查询方式的话,当查询到该位置1后,就需要用软件清0。TR1定时器1运行控制位
18、。由软件清0关闭定时器1。当GATE=1,且INTl为高电平时,TRl置1启动定时器1;当GATE=0时,TRl置1启动定时器l。TF0定时器0溢出标志,其功能及操作方法同TFl。TR0定时器0运行控制位,其功能及操作方法同TRl。 E1外部中断1请求标志。当IT1=0时,为电平触发方式,每个机器周期的S5P2采样INTl引脚,若INTl脚为低电平,则置1,否则IEl清0。当ITl=1时,INTl为跳变沿触发方式,当第一个机器周期采样到lNTl为低电平时,则IEl置1。IEl=1,表示外部中断1正在向CPU申请中断。当CPU响应中断,转向中断服务程序时,该位由硬件清0。ITl外部中断1触发方式
19、选择位。ITl=0,为电平触发方式,引脚INTl上低电平有效。ITl=1,为跳变沿触发方式,引脚INTl上的电平从高到低的负跳变有效。IE0外部中断0请求标志,其功能及操作方法同IEl。IT0外部中断0触发方式选择位,其功能及操作方法同ITl。咱们以工作方式1(即M0=M=)为例,工作方式1的计数位数是16位,对T0来说,由TL0寄存器作为低8位、TH0寄存器作为高8位,组成了16位加1计数器,其逻辑结构框图如图7-5所示。 图 7-5 定时器0方式1逻辑结构图2、工作方式11)逻辑电路结构工作方式1是16位计数结构的工作方式,计数器由THO全部8位和TLO全部8位构成。其逻辑电路和1作情况与
20、方式0基本相同,如图7.13所示(以定时/计数器O为例)。所不同的只是组成计数器的位数,它比工作作方式0有更宽的计数范围,因此,在实际中应用更广泛。定时/计数器0在工作方式1的逻辑结构如7-6图所示 图 7-6 工作方式1逻辑电路图 应用中,工作方式1可以代替工作方式0。2) 计数初值的计算定时器一旦启动,它便在原来的数值上开始加1计数,若在程序开始时,我们没有设置TH0和TL0,它们的默认值都是0,假设时钟频率为l2MHz.12个时钟周期为一个机器周期,那么此时机器周期就是1s以,计满TH0和TL0就需要216-1个数,再来一个脉冲计数器溢出,随即向CPU申请中断。因此溢出一次共需65536
21、s,约等于65.5ms.如果我们要定时50ms的话,那么就需要先给TH0和TL0装一个初值,在这个初值的基础上计50000个数后,定时器溢出,此时刚好就是50ms中断一次,当需定时ls时,我们写程序时当产生20次50ms的定时器中断后便认为是ls,这样便可精确控制定时时间了。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536, 把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536%256=176装入TL0中。以上就是定时器初值的计算方法,总结后得出如下结论:当用定时器的方式1时,设机器周期为Tcy,定时器产生
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 单片机 资源 编程
链接地址:https://www.31ppt.com/p-4228367.html