中断系统和定时计数器.ppt
《中断系统和定时计数器.ppt》由会员分享,可在线阅读,更多相关《中断系统和定时计数器.ppt(113页珍藏版)》请在三一办公上搜索。
1、第4章 中断系统和定时/计数器,本章学习目标:理解中断概念,能正确描绘单片机中断响应过程熟记80C51单片机的5个中断源及其中断入口地址能按要求正确设置特殊功能寄存器IE、IP、TCON、SCON和TMOD熟悉中断优先控制的方法能正确描绘定时/计数器的4种工作方式,重点掌握方式1、方式2的应用学会定时/计数初值的计算能读懂教材中的控制实例,学会编写同等难度的中断、定时/计数程序,4.1 中断系统,中断系统的基本概念,某人看书某人正在处理一件事A电话铃响出现另一件须立即解决的事B暂停看书中止A 书中作记号记录断点,便于接续 电话谈话处理B继续看书继续A的工作,保护断点,中断响应,中断请求,中断返
2、回,1.中断的概念(1)现实生活中的中断:,中断原因:一个人不可能同时完成两项任务。,单片机只有一个CPU,一旦面临多任务,它也会中断吗?,先接电话,然后再继续看书,这样效率最高!,中断系统的基本概念,(2)单片机中的中断,CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生或中断请求);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。,什么是中断?,2.中断技术的应用,并行处理 CPU可以与多台外设并行工作,并分时与他们进行信息交换,提高了CPU的工作效率。实时控制 单片机
3、应用系统可能随机请求CPU提供服务。有了中断系统,CPU就可以立即响应并予以处理。故障处理 单片机系统在工作时可能会出现一些突发故障,如电源断电,存储器出错,程序执行错误(如除数为0)等,一旦出现故障,CPU就可及时转去执行故障处理程序,而不必停机。,3.中断系统,为实现中断功能而配置的硬件和编写的软件就是中断系统。,中断功能由中断系统来执行。,图4-1 中断系统的结构框图,4.1.2 中断源中断的申请方,能够向CPU发出中断申请的部件称为中断源。80C51单片机有5个中断源。见下表,4.1.3 中断控制中断的控制“工具”,中断允许寄存器IE中断优先级寄存器IP定时/计数器及外部中断控制寄存器
4、TCON串口控制寄存器SCON,单片机通过对4个特殊功能寄存器实施中断控制:,1中断允许寄存器IE,功能:控制单片机是否接受中断申请,以及接受哪一种中断申请字节地址:A8H 其格式和每位的含义如下:,图4-2 IE的格式,由位操作指令或数据传送指令实现。例:同时打开外部中断0和串行口中断,可设置为:,法1:MOV IE,#10010001B,法2:SETB EA SETB ES SETB EX0,想一想还可以怎样实现?,IE的设置方法:,2中断优先级寄存器IP,功能:对80C51单片机进行高级别或低级别中断的设置,IP的字节地址:B8H 格式和每位的含义如下:,图4-3 IP的格式,举例,例:
5、令串行口为高优先级中断,外部中断0为低优先级中断。设置方法:,法1:MOV IE,#10010001B;开中断 MOV IP,#00010000B;设优先级,法2:MOV IE,#10010001B SETB PS说明:此时串口的优先级高于外部中断0的优先级,答案:此时CPU按自然优先级顺序确定该响应哪个中断请求。,注意:自然优先级由硬件决定,用户不能更改。排列见表42,表42 中断入口地址及自然优先级,3定时/计数器及外部中断控制寄存器TCON,功能:字节地址:88H,可设置外部中断申请的形式:低电平触发还是下降沿触发控制定时/计数器的计时开始或停止是各中断源(串口中断除外)是否申请中断的标
6、志位,格式如下,各位含义见表43,表43 TCON的功能说明,续表43,例 1,编程设定TCON为低电平触发的高优先级中断源。,分析:这是典型的中断初始化问题,方法一般如下:1)对TCON的相关位赋值2)设定所用中断源的优先级赋值IP3)开中断置位IE,解:法1:CLR IT1 SETB PX1 SETB EX1 SETB EA,例 1,法2:CLR IT1 MOV IP,#04H MOV IE,#84H,4串口控制寄存器SCON,功能:只有D1和D0位用于中断,作为串口中断请求标志,即串口中断请求寄存器字节地址:98H 格式如下:,RI为接收中断请求标志位。当串口接收完一帧串行数据时,RI自
7、动置1;CPU响应中断后,用软件对RI清0。,TI为串行口发送中断请求标志。当串口发送完一帧串行数据时,TI自动置1,请求中断。CPU响应中断后,由软件对TI清零。,其他几位的含义及用法见第5章。,4.1.4 中断响应,无同级或高级中断正在服务有中断请求信号相应的中断源已打开,即EA=1,中断源对应中断允许位也为1。当前的指令周期已经结束如果当前指令为RETI或访问IE和IP的指令,至少还要再执行完一条指令。,1.中断响应条件,2.中断响应过程,图44中断响应过程,将当前寄存器内容压入堆栈,如 PUSH ACC,在中断服务程序中实现,解决单片机中断后要干什么的问题。,把保存在堆栈中的寄存器内容
8、取出,送回原来的位置,如POP ACC,中断嵌套,答案:CPU要进行分析判断,决定是否响应:,待执行完高级别中断服务程序后再转回低级中断服务程序继续执行,这就是中断嵌套。,图45 二级中断嵌套的执行过程,软件构成:主程序+中断服务程序程序编制的关键点:要对题目要求进行精确分析,明确哪些环节应该安排在主程序中,哪些环节应该安排在中断服务程序中,再分别编制主程序和中断服务程序。,4.2 中断的应用,中断应用指导,1中断系统的程序编制,1中断系统的程序编制,(1)编制主程序,第一部分:主程序初始化 功能:,第二部分:须由主程序完成的其它功能。,此部分必须编写,用于设置堆栈位置;定义触发方式(低电平触
9、发或脉冲下降沿触发)对IE和IP赋值等;,(2)选择中断服务程序的入口地址。(3)编制中断服务程序。,1中断系统的程序编制,即明确中断服务程序的起始位置,注意1:一般要保护断点,即保护进入中断时累加器A、进/借位标志CY和SFR的状态,并在退出中断之前将其恢复;,注意2:必须在中断服务程序中设定是否允许再次中断(即中断嵌套),由用户对EX0(或EX1)位置位或清0决定。,2中断应用举例三相交流电的故障检测电路,例2 图4-6是三相交流电的故障检测电路。当A相缺电时,发光二极管LEDA 亮;当B相缺电时,发光二极管LEDB亮;当C相缺电时,发光二极管LEDC亮。,硬件特点:外部中断 由3个交流继
10、电器的触点和一个或非门扩展而成;3个220V的交流继电器的线圈ZA、ZB、ZC分别接在A、B、C各相和交流地之间。,图4-6 三相交流电的故障检测电路,(1)检测原理,三相电正常情况下,3个线圈同时得电,3个常开触点全都闭合,1,不申请外部中断,故障情况下(假设A相掉电),(1)检测原理,线圈ZA失电,常开触点ZA断开,0,申请外部中断,在外部中断服务程序中读取P1.0引脚状态,产生A相掉电状态信号送入P1.0,1,在中断服务程序中对该引脚输出1,A相故障指示灯亮,线圈ZB、ZC有电,常开触点ZB、ZC闭合,B、C相故障指示灯不亮,(2)软件设计 ORG 0000HLJMP MAIN;跳至主程
11、序ORG 0013H;的中断入口地址LJMP TEST;转至中断服务程序ORG 0100HMAIN:MOV P1,#15H;P1.0、P1.2、P1.4作输入;P1.1、P1.3、P1.5输出0SETB EX1;开中断 CLR IT1;为低电平触发SETB EA;CPU开中断SJMP$;等待中断TEST:JNB P1.0,LB;A相正常,转测B相SETB P1.1;A相掉电,点亮LEDALB:JNB P1.2,LC;B相正常,转测C相SETB P1.3;B相掉电,点亮LEDBLC:JNB P1.4,LL;C相正常,返回SETB P1.5;C相掉电,点亮LEDCLL:RETI END,4.2.2
12、 课题与实训7 中断控制流水灯,一.实训目的 学习外部中断的基本用法 掌握中断处理程序的编程方法二.课题要求 在程序正常运行时P1口的8个LED灯作单灯左移8次而后单灯右移7次,如此循环;中断时(即按键按下)则P1口的8个LED闪烁3次(即全亮全灭3次)。三.背景知识 1中断程序的设计主要涉及开中断、设定优先级,外中断还 涉及触发方式的设定。2在软件设计中,首先要对主程序和中断服务程序所完成的 任务进行划分。根据该课题提出的要求,在主程序中应该 完成的任务是8个LED循环左移右移;在中断服务程序中 应该完成的功能是8个LED闪烁3次。,四.硬件电路 硬件结构如图,12引脚的按键点动表示有中断请
13、求发出。,图4-7 实训7电路,五.参考程序 ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 0100H START:MOV SP,#60H MOV IE,#81H;开INT0中断 SETB IT0;INT0下降沿触发 L1:MOV A,#0FFH;设初值 MOV R0,#8;设定左移八次 CLR C;将CY清0 L2:RLC A;带进位位循环左移一位 MOV P1,A;送P1口,P1.0灯亮,ACALL DELAY;延时0.2秒 DJNZ R0,L2;判断是否左移8次 MOV R0,#7;移动7次L3:RRC A;带进位位循环右移 MOV P1,A;
14、送P1口 ACALL DELAY DJNZ R0,L3;是否右移7次?AJMP L1;重新开始DELAY:MOV R5,#4;延时0.2秒 D1:MOV R6,#200 D2:MOV R7,#123 NOP DJNZ R7,$,DJNZ R6,D2 DJNZ R5,D1 RETINT0:PUSH PSW;保护PSW,ACC值 PUSH ACC MOV A,#00H;使8个LED全亮 MOV R2,#6;闪烁3次(全亮全灭各3次)L4:MOV P1,A;A值送出 LCALL DELAY;延时0.2秒 CPL A;A值取反 DJNZ R2,L4;闪烁3次?POP ACC;恢复保护的A值 POP P
15、SW;恢复保护的PSW值 RETI;返回主程序 END,六.总结与提高 1.总结:中断服务程序与子程序对比,2提高 编写一个由两个中断(外部中断0、外部中断1)控制的流水灯程序。要求:主程序不变,中断0可使P1.0P1.3的LED闪烁5次,中断1可使P1.4P1.7的LED闪烁5次,设定中断1的优先级比中断0高。,.3定时计数器,1.日常生活中定时、计数的例子:如闹钟、画“正”统计选票、家用水表对水量的计数。2.单片机应用系统中定时计数的需求:如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。3.80C51单片机片内的定时/计数器:两个位可编程的定时计数器:T0和T1
16、,都能定时和对外部事件进行计数。此外,T1还可以作为串行接口的波特率发生器。,.3.1定时计数器的结构,.定时和计数的原理,(1)计数 定时计数器的实质是加计数器(位),其原理类似于古代用来计时的水钟:,假设计满一小时需要100,000,000滴,这称为水钟的计数容量,16位定时/计数器的计数容量是65536,单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加1,,当接收满65535个脉冲后,再来一个脉冲,计数值清0表明这一轮计数结束,同时将标志位TF0或TF1置1。,(2)定时 单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间
17、隔相等,则计数值就代表了时间的流逝。,见图4-9,它是由单片机的晶振经过12分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不难算出,当单片机采用12的晶振时,它提供给计数器的脉冲频率是,脉冲周期就是微秒。,图4-9 定时/计数器T0的结构示意图,单片机内部的16位定时计数器由高8位和低8位两个寄存器组成:T0由TH0和TL0组成,T1由TH1和TL1组成,定时计数器的计数值就存放在这里面。定时/计数器T1的结构与T0相同。,图4-9 定时/计数器T0的结构示意图,2定时/计数器的结构,再以水钟为例,当水不断落下,下面容器中的水不断变多,最终总有一滴水使得容器完全充满。这时如
18、果再有一滴水落下,就会发生“溢出”。与此类似,16位定时计数器计满65536个脉冲时,也会发生溢出。定时计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样。如果采用12的晶振,对应的脉冲周期是微秒,计满65536个脉冲所对应的时间就是65.536ms。,3定时/计数值的设置,再回到水钟的例子上去:刚才假设下面容器滴入100,000,000滴水才会满,现在我们在开始滴水之前先放入一勺水,这样问题就解决了。,计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值(通常称为时间常数),如我们要计100,那就存入65
19、436,只要再来100个脉冲,就刚好会溢出,引发中断。,计数器初值的设置,在主频为12MHz的情况下,每个时钟脉冲是1微秒,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,需计数10000个脉冲)。可见,定时器的定时时间长短与系统时钟和定时器初值有关。,定时器初值的设置,4-10 定时/计数器的控制关系,定时计数器的控制 在单片机中有两个特殊功能寄存器与定时/计数有关,它们就是TMOD和TCON,定时计数器T0、T1就由它们来控制:TMOD用于设置工作方式;TCON用于控制其启动、停止和中断申请。,1.定时器工作方式寄存器TMOD T
20、MOD用于设置T0和T1的工作方式,字节地址为89H,不能按位寻址。其格式和各位的含义如下:,2定时/计数器控制寄存器TCON TCON的低4位用于控制外部中断,高4位用于控制定时/计数器的启动和中断申请。TF0(或TF1)当计数溢出时,TF0(或TF1)会自动由0变1,告诉我们计数已满,我们可以通过查询TF0(或TF1)位的状态来判断计时时间是否已到;如果采用定时中断方式,则 TF0(或TF1)由0变1时,能自动引发中断。,TR0(或TR1)由图4-11 可知,只有当TR0(或TR1)为1时,开关1才能闭合,计数脉冲才能进入计数器,故TR0(或TR1)称为运行控制位,可用指令“SETB TR
21、0(或TR1)”来置位以启动定时/计数器运行;或用指令“CLR TR0(或TR1)”来关闭定时/计数器的工作,一切全靠编程人员控制。,图4-11 定时/计数器T0方式0的逻辑结构示意图,4.3.3 定时/计数器的工作方式 80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。1.方式0 当TMOD的M1M0=00时,定时/计数器工作于方式0。方式0为13位定时/计数器,由TL0的低5位和TH0(8位)共同完成计数功能(TL0的高3位可忽略)。,当TL0的低5位溢出时,向TH0产生进位;TH0溢出时,将定时器中断请求标志位TF0置1,可申请中
22、断,也可对TF0进行查询。,图4-11 定时/计数器T0方式0的逻辑结构示意图,2.方式1 当M1M0=01时,定时/计数器工作于方式1。方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位共同构成。其余操作同方式0。,图4-12 定时/计数器T0方式1的逻辑结构示意图,3.方式2 当M1M0=10时,定时/计数器工作于方式2。这是自动重装初值的8位计数方式,它省去了方式0和方式1在多次重复计数状态下必须重新设定计数初值的麻烦,但是却付出了减小定时时间的代价。,图4-13 定时/计数器T0方式2的逻辑结构示意图,特别适合于制作比较精确的脉冲信号发生器。,4.方式3 方式3只适用于定时
23、/计数器T0。当T1被设定为方式3状态时,将停止计数。当M1M0=11时,T0工作于方式3。此时TL0和TH0作为两个相互独立的8位定时/计数器使用。TL0既可定时又可计数,它使用T0的各控制位、引脚和中断源,即C/、GATE、TR0、TF0、T0(P3.4引脚)、(P3.2引脚);TH0此时只能用作内部定时功能,它借用了定时/计数器T1的控制位TR1和T1的中断标志位TF1,其启动和停止只受TR1控制。,图4-14 定时/计数器T0方式3的逻辑结构示意图,定时器T1无工作方式3,当定时器T0工作在方式3时,定时器T1可设置为方式0、方式1和方式2。,应用指导 1定时/计数器的定时/计数范围
24、定时/计数器工作于不同方式下的位数不同,它所具有的计数范围也不一样:,工作方式0:13位定时/计数方式,因此,最多可以计到213,也就是8192次。工作方式1:16位定时/计数方式,因此,最多可 以计到216,也就是65536次。工作方式2和工作方式3:都是8位定时/计数方 式,因此,最多可以计到2 8,也就是256次。,如果我们需要超过计数器计数范围的定时或计数功能,应该怎样做?,4.4定时/计数器应用与训练,2时间常数初值的计算 定时/计数器只要预设一个时间常数初值,就可以完成不超过其计数范围的任意大小的计数。算法如下:定时时间常数初值X:方式0 X=8192-t(fosc/12)方式1
25、X=65536-t(fosc/12)方式2、方式3 X=256-t(fosc/12)其中t是需要定时的时间,单位是微秒;fosc是晶振,计数时间常数X:方式0 X=8192-S 方式1 X=65536-S 方式2、方式3 X=256-S 说明:式中S是需要计数的次数,假设流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,应当预置的计数初值是多少呢?对了,就是8192-12=8180。,3定时/计数器的初始化对80C51单片机的定时/计数器编程的初始化方法:对TMOD赋值,以确定T0和T1的工作方式;计算时间常数初值,并将其写入TH0、TL0或TH1、TL1;采
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 系统 定时 计数器
链接地址:https://www.31ppt.com/p-5170594.html