250 likes | 382 Views
《 单片机原理与接口技术 》 电子教案 重庆工商职业学院. 第五章 单片机的中断与定时系统. [内容提要] 本章主要讲述 MCS-51 的单片机的中断系统和定时系统,除硬件结构外还包括一些简单的应用举例。 [学习要求] 掌握单片机中断系统的中断源、中断控制寄存器、中断响应过程,掌握定时 / 计数器系统的电路结构、控制寄存器及功能和使用方法,理解单片机中断、定时和计数的应用。. 5.1 MCS-51 单片机中断系统. 一 . 单片机中断技术概述.
E N D
《单片机原理与接口技术》电子教案重庆工商职业学院《单片机原理与接口技术》电子教案重庆工商职业学院
第五章单片机的中断与定时系统 [内容提要] 本章主要讲述MCS-51的单片机的中断系统和定时系统,除硬件结构外还包括一些简单的应用举例。 [学习要求] 掌握单片机中断系统的中断源、中断控制寄存器、中断响应过程,掌握定时/计数器系统的电路结构、控制寄存器及功能和使用方法,理解单片机中断、定时和计数的应用。
5.1 MCS-51单片机中断系统 一.单片机中断技术概述 中断是指计算机在执行某一程序的过程中, 由于计算机系统内、 外的某种原因, 而必须中止原程序的执行, 转去执行相应的处理程序, 待处理结束之后, 再回来继续执行被中止的原程序的过程。 采用了中断技术后的计算机, 可以解决CPU与外设之间速度匹配的问题, 使计算机可以及时处理系统中许多随机的参数和信息, 同时, 它也提高了计算机处理故障与应变的能力。
中断源 入口地址 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H 5.1 MCS-51单片机中断系统 二. 中断源 向CPU发出中断请求的来源称之为中断源。
5.1 MCS-51单片机中断系统 三. 中断控制 1.定时器控制寄存器(TCON) 寄存器地址为88H,位地址为8FH—88H,其格式如下: TF1—— T1的溢出中断标志。 硬件置1,硬件清0(也可软件清0)。 TF0—— T0的溢出中断标志。(同TF1,只是针对T0的) IE1—— 外部中断1(/INT1)请求标志。 外部有中断请求时,硬件使IE1置1,硬件清0。 IE0—— 外部中断0(/INT0)请求标志。 IT1—— 外部中断1(/INT1)触发类型控制位。 IT1 = 0 ,低电平触发。 IT1 = 1 , 下降沿触发。 IT0—— 外中断0(/INT0)触发类型控制位,用法同IT1。
5.1 MCS-51单片机中断系统 三. 中断控制 2.串行口控制寄存器(SCON) 寄存器地址为98H,位地址为9FH—98H,其格式如下: TI —— 串口发送中断标志位。 发送完数据,硬件使TI置1,软件清0(CLR TI) RI —— 串行口接收中断标志位。 硬件置1,软件清0。
5.1 MCS-51单片机中断系统 三. 中断控制 3.中断允许控制寄存器(IE) 寄存器地址为A8H,位地址为AFH—A8H,其格式如下: ◆EA:中断总控制位,EA=1,CPU开放中断。EA=0,CPU禁止所有中断。 ◆ES:串行口中断控制位,ES=1允许串行口中断,ES=0,屏蔽串行口中断。 ◆ET1:定时/计数器T1中断控制位。ET1=1,允许T1中断,ET1=0,禁止T1中断。 ◆EX1:外中断1中断控制位,EX1=1,允许外中断1中断,EX1=0,禁止外中断1中断。 ◆ET0:定时/计数器T0中断控制位。ET1=1,允许T0中断,ET1=0,禁止T0中断。 ◆EX0:外中断0中断控制位,EX1=1,允许外中断0中断,EX1=0,禁止外中断0中断。
5.1 MCS-51单片机中断系统 三. 中断控制 4.中断优先级控制寄存器(IP) 寄存器地址为B8H,位地址为BFH—B8H,其格式如下: ◆PS:串行口中断口优先级控制位,PS=1,串行口中断声明为高优先级中断,PS=0,串行口定义为低优先级中断。 ◆PT1:定时器1优先级控制位。PT1=1,声明定时器1为高优先级中断,PT1=0定义定时器1为低优先级中断。 ◆PX1:外中断1优先级控制位。PT1=1,声明外中断1为高优先级中断,PX1=0定义外中断1为低优先级中断。 ◆PT0:定时器0优先级控制位。PT1=1,声明定时器0为高优先级中断,PT1=0定义定时器0为低优先级中断。 ◆PX0:外中断0优先级控制位。PT1=1,声明外中断0为高优先级中断,PX1=0定义外中断0为低优先级中断。
5.1 MCS-51单片机中断系统 三. 中断控制 5.中断优先级控制原则 ◆低级不打断高级 ◆高级不睬低级 ◆同级不能打断 ◆同级、同时中断,事先约定。 同一级中的5个中断源的优先顺序是厂家出厂时已固化好的,其顺序由高到低依次如下: /INT0中断 T0中断 /INT1中断 T1中断 串口中断 除了中断优先级控制寄存器外,MCS-51的中断系统有两个不可寻址的优先级状态触发器,一个指出CPU是否在执行高优先级中断服务程序,另一个指出CPU是否正在执行低优先级的中断服务程序,这两个中断触发器的1状态分别屏蔽所有中断申请和同一级别的其他中断申请。
5.1 MCS-51单片机中断系统 四. 中断响应过程 MCS-51CPU在每一个机器周期顺序检查每一个中断源,在机器周期的S6按优先级处理所有被激活的中断请求,此时,如果CPU没有正在处理更高或相同优先级的中断,或者现在的机器周期不是所执行指令的最后一个机器周期,或者CPU不是正在执行RETI指令或访问IE和IP的指令(因为按MCS-51中断系统的特性规定,在执行完这些指令之后,还要在继续执行一条指令,才会响应中断),CPU在下一个机器周期响应激活了的最高级中断请求。 ◆中断采样 ◆中断查询 ◆中断响应 ◆中断响应时间 ◆中断返回
5.1 MCS-51单片机中断系统 五. 中断服务流程 1. 在每条指令结束后, 系统都自动检测中断请求信号, 如果有中断请求,且CPU处于开中断状态下, 则响应中断。 2. 保护现场, 在保护现场前, 一般要关中断, 以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。 3. 中断服务, 即为相应的中断源服务。 4. 恢复现场, 用堆栈指令将保护在堆栈中的数据弹出来, 在恢复现场前要关中断, 以防止现场被破坏。在恢复现场后应及时开中断。 5. 返回, 此时 CPU将推入到堆栈的断点地址弹回到程序计数器, 从而使CPU继续执行刚才被中断的程序。
5.2 MCS-51单片机的定时器/计数器 可供选择的定时方法有: ◆软件定时 ◆硬件定时 ◆可编程定时器定时 图5-1 MCS-51定时/计数器结构图 定时电路集成在芯片中,称为定时器/计数器。MCS-51的单片机内有两个16位可编程的定时器/计数器,分别称为定时器/计数器0和定时器/计数器1,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。
5.2 MCS-51单片机的定时器/计数器 一、定时器/计数器的控制寄存器 1.定时器控制寄存器(TCON) TR0 —— 定时 / 计数器0运行控制位。 软件置位,软件复位。与GATE有关,分两种情况: GATE = 0 时,若TR0 = 1,开启T0计数工作;若TR0 = 0,停止T0计数。 GATE = 1 时,若TR0 = 1 且/INT0 = 1时,开启T0计数; 若TR0 = 1 但 /INT0 = 0,则不能开启T0计数。 若TR0 = 0, 停止T0计数。 TR1 —— 定时 / 计数器1运行控制位。 用法与TR0类似。
5.2 MCS-51单片机的定时器/计数器 一、定时器/计数器的控制寄存器 2.工作方式控制寄存器(TMOD) GATE —— 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制;GATE = 1 启动受 /INT0 或 /INT1 的控制。 C/ —— 外部计数器 / 定时器方式选择位。 C/ = 0 定时方式; C/ = 1 计数方式。 M1M0 —— 工作模式选择位。 M1 M0 模式 说明 0 0 0 13位定时/计数器,高八位TH(7 ~ 0)+ 低五位TL(4 ~ 0) 0 1 1 16位定时/计数器,TH(7 ~ 0)+ TL(7 ~ 0) 1 0 2 8位计数初值自动重装,TL(7 ~ 0) TH(7 ~ 0) 1 1 3 T0运行,而T1停止工作,8位定时/计数。
5.2 MCS-51单片机的定时器/计数器 二、定时器/计数器的四种工作模式 1.定时工作方式0 工作方式0是13位计数结构的工作方式,其计数器由TH的全部8位和TL的低5位构成,TL的高3位没有使用。当C/T=0时,多路开关接通振荡脉冲的12分频输出,13位计数器以次进行计数。这就是定时工作方式。当C/T=1时,多路开关接通计数引脚(To),外部计数脉冲由银南脚To输入。当计数脉冲发生负跳变时,计数器加1,这就是我们常称的计数工作方式 图5-2 定时计数器工作方式0逻辑结构
5.2 MCS-51单片机的定时器/计数器 二、定时器/计数器的四种工作模式 1.定时工作方式0 在工作方式0下,计数器的计数值范围是: 1—65536(216) 当为定时工作方式0时,定时时间的计算公式为: (213—计数初值)╳晶振周期╳12 或 (213—计数初值)╳机器周期 其时间单位与晶振周期或机器周期相同 如果单片机的晶振选为6.000MHz,则最小定时时间为: [213—(213—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us) (213—0)╳1/6╳10-6╳12=16384╳10-6(s)=16384(us)
5.2 MCS-51单片机的定时器/计数器 二、定时器/计数器的四种工作模式 2.定时工作方式1 当M1,M0=01时,定时/计数器处于工作方式1,此时,定时/及数器的等效电路如图所示 图5-3 定时/计数器工作方式1等效电路 可以看出,方式0和方式1的区别仅在于计数器的位数不同,方式0为13位,方式1则为16位,由TH0作为高8位,TL0为低8位,有关控制状态字与方式0相同。
5.2 MCS-51单片机的定时器/计数器 二、定时器/计数器的四种工作模式 2.定时工作方式1 在工作方式1下,计数器的计数值范围是:1—8192(213) 当为定时工作方式1时,定时时间的计算公式为: (216—计数初值)╳晶振周期╳12 或 (216—计数初值)╳机器周期 其时间单位与晶振周期或机器周期相同 如果单片机的晶振选为6.000MHz,则最小定时时间为: [213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us) (216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)
5.2 MCS-51单片机的定时器/计数器 二、定时器/计数器的四种工作模式 3.定时工作方式2 当M1,M0=10时,定时/计数器处于工作方式2,此时,定时/及数器的等效电路如图所示 图5-4 定时/计数器工作方式2等效电路 具有自动重装载功能,即自动加载计数初值,在这种工作方式中,16位计数器分为两部分,以TL0为计数器,以TH0作为预置寄存器,当计数溢出时 ,TH以硬件方法自动给计数器TL0重新加载
5.2 MCS-51单片机的定时器/计数器 二、定时器/计数器的四种工作模式 4.定时工作方式3 当M1,M0=11时,定时/计数器处于工作方式3,此时,定时/及数器的等效电路如图所示 图5-5 定时/计数器工作方式3等效电路
5.3 定时器/计数器与中断综合应用举例 一、 方式0、方式1的应用 例5-1:选择T1方式0用于定时,在P1.1输出周期为1ms的方波,晶振fosc=6MHZ。 分析:根据题意,只要使P1.1每隔500µs取反一次即可得到1ms方波,因而T1的定时时间为 500µs。 将T1设为定时方式0:GATE=0,C/T(—)=0,M1M0=00;T0不用可为任意,只要不使其进入方式3,一般取0即可。故TMOD=00H。系统复位后TMOD为0,所以不必对TMOD置初值。下面计算500µs定时T1的初值: 机器周期 T=12/fosc=12/6×106=2µs 设初值为X则: (213-X)×2×10-6 s =500×10-6 s X=7942D=1111100000110B=1F06H 因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL1=06H;X的高8位应装入TH1,所以TH1=F8H。 源程序如下:
MOV TL1,#06H ;给TL1置初值 MOV TH1,#F8H ;给TH1置初值 SETB TR1 ;启动T1 LP1: JBC TF1,LP2 ;查询计数溢出否 AJMP LP1 LP2: MOV TL1,06H ;重装初值 MOV TH1,F8H CPL P1。1 ;输出取反 AJMP LP1 ;重复循环 5.3 定时器/计数器与中断综合应用举例 一、 方式0、方式1的应用
MOV TMOD,#60H ;设置T1为方式2 MOV TL1,#9CH ;置初值 MOV TH1,#9CH SETB TR1 ;启动T1 DEL: JBC TF1,REP ;查询计数溢出 AJMP DEL REP: CPL P1。0 ;输出取反 AJMP DEL 5.3 定时器/计数器与中断综合应用举例 二、 方式2的应用 例5-2 用定时器1方式2计数,要求每计满100次,将P1.0取反。 分析:根据题意,外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。方式2有自动重装初值的功能,初始化后不必再置初值。 初值 X=28-100=156D=9CH TH1=TL1=9CH TMOD=60H 源程序如下:
5.3 定时器/计数器与中断综合应用举例 三、 门控位的应用 例5-3 利用T0门控位测试INT0引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上。 分析:根据要求可这样设计程序:将T0设定为方式1,GATE设为1,置TR0为1。一旦INT0(P3.2)引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T0的计数值并显示。 测试过程如下: 图 5‑6 外部正脉冲宽度测量
INC R0 SWAP A XCHD A,@R0 INC R0 MOV A,TH0 XCHD A,@R0 INC R0 SWAP A XCHD A,@R0 DIS: LCALL DISUP ;长调用显示子程序 AJMP DIS ;重复显示机器周期数 5.3 定时器/计数器与中断综合应用举例 三、 门控位的应用 源程序如下: BEGIN: MOV TMOD,# O9H ;T0工作于方式1,GATE置1 MOV TL0,#00H MOV TH0;#00H WAIT1: JB P3。2,WAIT1 ;等待INT0变低 SETB TR0 ;启动T0 WAIT2: JNB P3。2,WAIT2 ;等待正脉冲到 WAIT3: JB P3。2,WAIT3 ;等待INT0变低 CLR TR0 ;停止T0计数 MOV R0,#DISBUF ;显示缓冲区首地址送R0 MOV A,TL0 ;机器周期的存放格式为低位占低地址,高位占高地址,连续4个显示缓冲单元 XCHD A,@R0 INC R0 SWAP A XCHD A,@R0 INC R0