第5章中断与定时系统
- 格式:pdf
- 大小:1.09 MB
- 文档页数:49
第5章MCS-51单片机的中断系统【例5-1】设允许外部中断0和串行口中断,禁止其它中断源的中断申请。
试根据假设条件设置IE的相应值。
解:⑴用位操作指令来编写如下程序段:SETB EX0 ;允许外部中断0中断SETB ES ;允许串行口中断CLR EX1 ;禁止外部中断1中断CLR ET0 ;禁止定时器/计数器T0中断CLR ET1 ;禁止定时器/计数器T1中断SETB EA ;CPU开中断⑵用字节操作指令来编写:MOV IE, #91H【例5-2】设置中断优先级控制寄存器IP的初始值,使得8031的2个外中断请求为高优先级,其它中断请求为低优先级。
解:⑴用位操作指令SETB PX0;2个外中断为高优先级SETB PX1CLR PS ;串行口、2个定时器为低优先级中断CLR PT0CLR PT1⑵用字节操作指令MOV IP,#05H【例5-3】假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。
在主程序中可编写如下程序段:SETB E A ;EA位置“1”,CPU开中断SETB E X0 ;EX0位置“1”,允许外部中断0产生中断SETB P X0 ;PX0位置“1”,外部中断0为高级中断SETB I T0 ;IT0位置“1”,外部中断0为跳沿触发方式【例5-4】根据图5-9的中断服务程序流程,编写出中断服务程序。
假设现场保护只需要将PSW寄存器和累加器A的内容压人堆栈中保护起来。
解一个典型的中断服务程序如下:INT: CLR E A ;CPU关中断PUSH PSW ;现场保护PUSH ASETB E A ;CPU开中断中断处理程序段CLR E A ;CPU关中断POP A ;现场恢复POP PSWSETB E A ; CPU开中断RETI ;中断返回,恢复断点上述程序有几点需要说明的是:⑴本例的现场保护假设仅仅涉及到PSW和A的内容,如果还有其它的需要保护的内容,只需要在相应的位置再加几条PUSH和POP指令即可。
第5章 中断与定时系统单片机要与外接构成信息联系,进行数据、状态、控制信息的交流,其中信息分为:数字量、模拟量和开关量。
单片机通过端口与外部电路连接。
其数据传送有以下形式:无条件传送查询方式中断方式DMA方式(直接存储器存取)是一种快速传送数据的机制。
数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。
DMA 技术的重要性在于,利用它进行数据传送时不需要CPU 的参与。
一.单片机输入输出控制方式控制方式单片机使用:无条件传送、查询、中断三种控制方式1、无条件传送同步程序传送。
不需测试设备状态,可随时进行数据传送。
适合的设备有:·常驻或变化缓慢的数据信号(机械开关、指示灯、二极管、数码管)可视为“随时好”。
·工作速度快,足以和单片机同步的设备。
(DAC等)2、查询方式又称有条件传送方式。
在进行I/O口操作前,先检测(查询)设备状态,了解设备是否准备好。
优点:软硬结合,电路简单,适用于各种设备的数据传送。
缺点:查询时消耗单片机资源。
适用条件:单道作业,规模较小的单片机系统。
3、中断方式程序中断方式。
被动查询。
设备准备好后,向单片机发出中断请求。
中断方式大大提高了效率,好像与单片机并行工作,但中断造成的CPU开销也不小。
使用条件:任何设备都可以。
6.1 单片机中断系统6.1.1概述什么是中断 中断嵌套中断的意义:1.解决资源有限或一个资源面对多任务的有效方法2.使CPU与外设共同工作,提高CPU的工作效率。
3.及时发现硬件或其他运算故障并进行及时处理。
4.通过键盘等随时对硬件进行干预。
单片机中,中断控制主要用于实时控制。
名词解释:实时控制-计算机能及时响应被控对象提出的分析、计算和控制等请求,使被控对象保持最佳工作状态,以达到预定的控制效果。
由于实时控制都是随机发生的,要求计算机能快速响应。
中断系统应具有的功能:1、实现中断及返回能允许中断,且进行断点保护和现场保护。
中断结束后,能恢复现场和断点。
2、实现中断优先级排队两个或多个中断发生时,能根据轻重缓急,给每个中断源确定一个中断优先级。
3、实现中断嵌套当一个中断发生后,能处理更好级别的中断。
6.1.2中断源“五源中断分三类”五个中断源 入口地址外部中断0(/INT0) 0003H定时中断T0 000BH外部中断1(/INT1) 0013H 定时中断T1 001BH串口中断 0023H外部中断请求方式:有电平方式(低电平)脉冲方式(脉冲后沿负跳)。
6.1.3中断控制(两级管理)1、中断屏蔽2、中断优先级中断控制使用的是4个寄存器·定时器控制寄存器TCON ·串行口控制器SCON·中断允许控制寄存器IE ·中断优先控制器IP (1)定时器控制寄存器TCON(Time controller)寄存器地址:88H,位地址88H~8FH寄存器功能:用于保存外部中断请求以及定时器的计数溢出。
部委部委总理国务院办公厅(2)串行口控制器SCON(serial controller)寄存器地址:98H,位地址98H~9FH(3)中断允许控制寄存器IE(Interrupt Enable)寄存器地址:0A8H,位地址0A 8H~0A FH(4)中断优先控制器IP(interrupt priority)寄存器地址:0B8H,位地址0B8H~0BFH 功能:控制中断优先级别。
优先级别:·低优先级不能打断高优先级中断,高优先级可打断低优先级中断。
·一个中断被响应,则同级其他中断被禁止。
·同级多个中断同时出现,则按CPU查询次序确定,其次序为(由高到低):外部中断0→定时中断0→外部中断1→定时中断1→串行中断。
中断初始化与中断控制寄存器状态设置:用户对于单片机中断的控制就是对以上所述寄存器的控制。
以上寄存器可以位寻址,也可字节寻址。
对于中断的设置与初始化有:优先级控制(IP)、中断总允许(IE)、外中断允许、中断方式设定。
如: SETB EA, ;中断允许SETB EX0, ;外部中断允许MOV IE,#81H ;6.1.4中断响应过程1、中断采样采样是针对外中断请求信号进行的,是对芯片引脚P3.2和P3.1在每个机器周期S5P2进行的。
根据采样结果对TCON进行置位。
采样信号:晶振6MHZ的,需要保持12个晶振周期(一个机器周期)。
脉冲方式的,其低电平也应有12个晶振周期。
2、中断查询设计思想:将所有中断请求都汇集在TCON和SCON寄存器中。
外中断通过采用将TCON相应位置位。
定时和串行都发生在芯片内部,可不采样进行置位。
查询:CPU在每一个机器周期的最后一个状态,按优先级测试TCON、SCON各标志位以确定有没有中断请求。
相应位为1的为中断请求。
3、中断响应由硬件自动生成一个长调用指令LCALL addr16来执行新程序。
过程:PC内容压入堆栈→中断入口地址装入PC→入口地址放一个无条件转移指令→执行中断程序。
中断不是无条件的,以下需中断响应封锁:·CPU正在执行同级或高级中断服务时。
·查询中断请求的机器周期不是当前指令的最后一个机器周期。
·当前指令是返回指令或访问IE、IP的指令。
4、中断响应时间最短为3个机器周期(中断请求标志位查询1个机器周期+执行LCALL程序2个机器周期)。
中断请求标志位查询需在最后一个机器周期。
最长为8个机器周期(中断标志查询是刚好在开始执行RET、RETI或访问IE、IP时)执行以上情况2个周期+执行乘除运算4个周期+LCALL程序2个周期。
在同级中断执行情况下,响应时间就看具体情况了。
6.1.5中断请求的撤销1、定时中断请求的撤销:硬件自动完成TF0、TF1的清0工作。
2、脉冲方式外部中断请求的撤销:硬件自动完成IE0、IE1的清0。
脉冲信号需及时撤销。
3、电平方式外部中断请求的撤销:中断标志位自动撤销,但低电平需及时撤销。
低电平撤销用软硬件的方法进行的。
D触发器直接置位端4、串行中断软件撤销:对于TI和RI使用软件的方式进行撤销。
例题:脉冲计数统计外部中断0信号ORG0000HLJMP MAINORG0003H ;外部中断0起始地址LJMP SUMORG 1000HMAIN:MOV A,#00HMOV SP,#30H ;堆栈初始化SETB IT0 ;设置TCON的低电平触发方式SETB EX0 ;设置IE的外部中断0有效SETB EA ;设置IE的总中断开关SJMP$SUM:INC ACJNE A,#100,QUITCLR EACLR EX0SETB P1.0QUIT:RETIEND6.4单片机的定时器/计数器6.4.1定时方式概述1、软件定时:使用循环程序。
时间精确、不需外电路,但占用CPU资源。
不能太长。
2、硬件定时:使用硬件电路,通过改变硬件元件参数调节定时时间,不占CPU资源。
3、可编程定时器定时:程序设定初值,改变计数值,可改变定时时间,同时有计数功能。
6.2.2定时器/计数器的定时、计数功能MCS-51中有两个可编程定时/计数器,分别为定时/计数器0,定时/计数器1。
他们都是16位加法计数结构分别有TH0,TL0;TH1,TL1,分别属于专用寄存器。
1、计数功能P3.4和P3.5为计数器的输入端,外信号负跳有效,采样是在S5P2采样,下一个机器周期的S3P1有效,因此占用2个机器周期,计数脉冲频率不能高于振荡脉冲的1/24。
占空比至少占一个机器周期。
(6MHz晶振,则取样频率最大0.25MHz)2、定时功能计数脉冲来自MCU内部,每个机器周期加1,定时时间为机器周期时间乘以定时值。
计数脉冲频率等于振荡脉冲的1/12。
(6MHz晶振,则取样频率最大0.5MHz)定时计数器0定时控制工作方式6.2.3定时器/计数器控制寄存器1、定时器控制寄存器TCON(2)中断允许控制寄存器IE寄存器地址:0A8H,位地址0A 8H~0A FH6.2.3定时器/计数器控制寄存器1、定时器控制寄存器TCON2、工作方式控制寄存器(TMOD)不能位寻址,只能字节寻址。
0 0 1 0 0 1 0 1MOV TMOD,#25H信号软件启动硬件启动6.2.4定时工作方式013位计数结构的工作方式,由TH0全部8位和TL0中低5位构成。
或门6.2.4定时工作方式013位计数结构的工作方式,由TH0全部8位和TL0中低5位构成。
1≡1或门6.2.4定时工作方式013位计数结构的工作方式,由TH0全部8位和TL0中低5位构成。
或门1116.2.4定时工作方式013位计数结构的工作方式,由TH0全部8位和TL0中低5位构成。
或门100计数值范围1~8192(213)定时时间:( 213 -计数初值)×晶振周期×12( 213 -计数初值)×机器周期6MHZ的晶振:最长定时:( 213 -0)×1/6×10-6×12=16,384us最短定时:( 213 -( 213 -1))×1/6×10-6×12=2 us (基本单位时间)程序设计流程:计算计数初值→TMOD初始化(工作方式)→TCON(启动设置)→程序写入控制字的次序:1. 把工作方式控制字写入TMOD寄存器;2. 把定时/计数初值装入TL0、TH0(或TL1、TH1)3. 置位TR0(或TR1)以启动计数4. 置位ET0(或ET1)允许定时器/计数器中断(如果需要)5. 置位EA使CPU开放中断。
例题:5-3步骤:·计算初值·TMOD初始化(字节寻址)·TCON初始化·程序设计例题:6Mhz晶振,使用定时器1,方式0,产生周期500us的等宽脉冲,并由P1.0输出。
以查询方式进行。
1、计算初值500us周期,则以250us交替取反P1.0即可。
6MHZ晶振,则一个机器周期为2us。
其初值为(213-X)×2×10-6=250×10-6求解得X=8067采用方式0,故将X值转换为二进制。
是不是:8067D=1000,0000,0110,0111B应该是:8067D=1F83H=1,1111,1000,0011B思考: 1111110000011应如何填入定时器1中?1111110000011的高八位应填入TH1中 TH1=0FCH1111110000011的低五位应填入TL1中 TL1=03H2、TMOD初始化题意:定时计数器1,方式0,则定时功能则GATA为则 TMOD= 00H3、定时器的启动0000000例题START:MOV TMOD,#00HMOV TH1,#0FCHMOV TL1,#03HMOV IE,#00H ;禁止中断LOOP:SETB TR1 ;启动JBC TF1,LOOP1 ;查询方式AJMP LOOPLOOP1:MOV TH1,#0FCH ;重新赋值 MOV TL1,#03HCLR P1.0AJMP LOOP6.2.5定时工作方式116位计数结构的工作方式,由TH0全部8位和TL0全部8位构成。