460 likes | 660 Views
第 6 章 单片机的中断与定时系统. 6.1 MCS-51 单片机中断系统. 6.2 MCS-51 单片机的定时 / 计数器. 6.3 MCS-51 单片机外部中断源的扩展. 6.4 定时器 / 计数器与中断综合应用举例. 本章要求. 1 了解掌握 MCS-51 单片机中断系统. 2 了解掌握 MCS-51 单片机的定时 / 计数器. 3 掌握 定时器 / 计数器与中断综合应用. 6.1 MCS-51 单片机中断系统. 一 . 单片机中断技术概述. ● 中断是一相重要的计算机技术. ● 中断技术是一种资源 (CPU) 共享技术.
E N D
第6章 单片机的中断与定时系统 6.1 MCS-51单片机中断系统 6.2 MCS-51单片机的定时/计数器 6.3 MCS-51单片机外部中断源的扩展 6.4 定时器/计数器与中断综合应用举例
本章要求 1 了解掌握MCS-51单片机中断系统 2 了解掌握MCS-51单片机的定时/计数器 3 掌握定时器/计数器与中断综合应用
6.1 MCS-51单片机中断系统 一. 单片机中断技术概述 ●中断是一相重要的计算机技术 ●中断技术是一种资源(CPU)共享技术 ●中断技术能提高CPU的利用率及输入/输出数据的效率 ●中断技术对计算机运行中遇到的突发故障及时处理 ●中断技术主要用于实时控制 —及时处理被控对象提出的分析、计算、控制等 请求,使对象保持最佳工作状态。
6.1 MCS-51单片机中断系统 二. 中断源 ●MCS-51共有5个中断源。 2个外部中断;2个定时器中断;1个串行口中断。 1. 外中断 ●外中断是由外部信号引起的中断请求。 ●外部中断“0”---INT0(P3.2引入—12脚), 外部中断“1”---INT1(P3.3引入—13脚)。 ●低电平和脉冲下降沿触发,通过设置控制位定义。 2. 定时中断 ●定时器/计数器中断是由内部计数器计数溢出引起 的中断请求。
6.1 MCS-51单片机中断系统 二. 中断源 ●内部计数器计内部时钟脉冲或外部事件脉冲。 ●计内部时钟脉冲--定时器;计外部脉冲--计数器。 ●定时器/计数器T0---计外部脉冲 (P3.4引入—14脚) 。 定时器/计数器T1---计外部脉冲 (P3.5引入—15脚) 。 3. 串行中断 ●串行口中断是由串行口接收和发送完一组数据引起 的中断请求。 ●串行口接收端RXD- (P3.0引入—10脚)。 ●串行口发送端TXD-(P3.1引入—11脚)。
6.1 MCS-51单片机中断系统 三. 中断控制 • 定时器控制寄存器(TCON) ●IE0、IE1-外中断请求标志位 当INT0(INT1)出现有效中断请求时,IE0(IE1)位由硬件置“1”,中断响应后再由硬件自动清“0” ●IT0、IT1-外中断请求触发方式控制位 IT0(IT1)=1 脉冲触发方式,后沿负跳有效, IT0(IT1)=0 电平触发方式,低电平有效。 由软件置“1”或清“0” ●TF0、TF1-计数器溢出标志位 由硬件置“1”,中断方式时,硬件清“0”; 查询方式时,软件清“0”。
6.1 MCS-51单片机中断系统 三. 中断控制 2.串行口控制寄存器(SCON) ● TI——串行口发送中断请求标志位 当发送完一帧串行数据后,由硬件置“1”;在转向中断服务程 序后,用软件清“0”。 ● RI——串行口接收中断请求标志位 当接收完一帧串行数据后,由硬件置“1”;在转向中断服务 程序后,用软件清“0”。 ●串行中断请求由TI和RI的逻辑或得到。 无论是发送标志还是接收标标志,都产生串行中断请求。
6.1 MCS-51单片机中断系统 三. 中断控制 3.中断允许控制寄存器(IE) ●EA—中断允许总控制位 EA=0 禁止所有中断 EA=1 总中断允许,具体到各中断由该中断允许控制位设置。 ● EX0和EX1——外部中断允许控制位 EX0(EX1)=0 禁止外中断 EX0(EX1)=1 允许外中断
6.1 MCS-51单片机中断系统 三. 中断控制 3.中断允许控制寄存器(IE) ● ET0和ET1——定时/计数中断允许控制位 ET0(ET1)=0 禁止定时(或计数)中断 ET0(ET1)=1 允许定时(或计数)中断 ● ES——串行中断允许控制位 ES=0 禁止串行中断 ES=1 允许串行中断
6.1 MCS-51单片机中断系统 三. 中断控制 4.中断优先级控制寄存器(IP) ●PX0——外部中断INT0优先级设定位; ●PT0——定时中断T0优先级设定位; ●PX1——外部中断INT1优先级设定位; ●PT1——定时中断T1优先级设定位; ●PS ——串行中断优先级设定位。 ●位设置为“0”的优先级低;设置为“1”的优先级高。
6.1 MCS-51单片机中断系统 三. 中断控制 5.中断优先级控制原则和控制逻辑 中断优先级是为中断嵌套服务的,MCS一5l具有两级优先级,具两级中断服务嵌套的功能。 其中断优先级的控制原则是: ●低优先级中断请求不能打断高优先级的中断服务; 但高优先级中断请求可以打断低优先级的中断服务 --中断嵌套。 ●同级的中断不能嵌套 ●如果同级的多个中断请求同时出现,则按CPU查询 次序确定那个中断请求被响应。 外部中断0-定时中断0-外部中断1-定时中断1-串行口中断。
6.1 MCS-51单片机中断系统 6.中断初始化与中断控制寄存器状态设置 中断的使用是在程序初始化时设置的 ●优先级控制 ●中断总允许 ●中断允许 ●中断方式设定(定时中断没有中断方式控制) 控制寄存器都是既可字节寻址又可进行位寻址。 以中断允许控制寄存器为例,假设开放外中断O。 用字节操作指令为: MOV IE,#81H 用位操作指令则为: SETB EA SETB EXo
6.1 MCS-51单片机中断系统 四. 中断响应过程 从中断请求发生到被响应,从中断响应到转向执行中断服务程序,完成中断所要求的任务,是一个很复杂的过程。整个过程都是在CPU的控制下有序进行的。 下面叙述MCS一51单片机中断响应的全过程。 1.中断采样 对引脚—INT0(P3.2)和INT1(P3.3)在每个机器周期的S5P2进行采样,根据采样结果来设置TCON寄存器中响应标志位的状态,也就是把外中断请求锁定在这个寄存器中。
6.1 MCS-51单片机中断系统 四. 中断响应过程 ●若采样为高电平,表明没有中断请求,TCON寄存 器的外中断请求标志位IE0或IE1继续为‘‘0”; ●若为低电平,表明有中断请求,把IE0或IE1置“1”。 ●外中断是使用采样的方法把中断请求锁定在TCON 寄存器的相应标志位中, ●而定时中断和串行中断的中断请求直接去置TCON 和SCON中各自的中断请求标志位,不存在采样。
6.1 MCS-51单片机中断系统 四. 中断响应过程 2.中断查询 ●所谓查询,就是由CPU测试TCON和SCON中各 标志位的状态,以确定有没有中断请求发生以及 是那一个中断请求。 ● MCS一51单片机是在每一个机器周期的最后一个 状态(S6)、按优先级顺序对中断请求标志位查询, 如果查询到有标志位为“1”,则表明有中断请求发 生,在下一个机器周期的S1状态开始中断响应。 ●中断查询在执行指令的每个机器周期中不停地重 复进行。
6.1 MCS-51单片机中断系统 四. 中断响应过程 3.中断响应 ●中断响应是由硬件自动生成一条长调用指令LCALL。 其格式为LCALL addrl6, addrl6是程序存储器中断区中相应中断的入口地址。 外部中断O的是0003H,中断响应为:LCALL 0003H 外部中断1的是0013H,中断响应为:LCALL 0013H 定时中断O的是000BH,中断响应为:LCALL 000BH 定时中断1的是001BH,中断响应为:LCALL 001BH 串口中断的是0023H, 中断响应为:LCALL 0023H
6.1 MCS-51单片机中断系统 四. 中断响应过程 3.中断响应 ●中断响应条件,当存在下列情况之一时,中断响应被封锁: ● CPU正处在为一个同级或高级的中断服务中。 ●查询中断请求的机器周期不是当前指令的最后一 个机器周期。 ●当前指令是返回指令(RET,RETI)或访问IE、IP 的指令。 ●中断查询的结果不作记忆,当有新的查询结果出 现时,因为以上原因而被拖延的查询结果将不复 存在,其中断请求也就不能再被响应了。
6.1 MCS-51单片机中断系统 四. 中断响应过程 4.中断响应时间 ●从外部中断请求有效(标志位置‘‘1’’)到转向中断区 入口地址所需的机器周期为中断响应时间。 ●中断响应最短响应时间为3个机器周期。 其中中断请求标志位查询占1器周期, 执行LCALL指令需2个机器周期。 ●中断响应最长时间为8个机器周期。 该情况发生在中断标志查询时,刚好是开始执行RET、 RETI或访问IE、IP的指令{需2个机器周期} ,则需把当 前指令执行完再继续执行一条指令{(乘MUL)或 (除DIV) 指令,则又需4个机器周期}后,才能进行中断响应。
6.1 MCS-51单片机中断系统 五. 中断请求的撤消 中断响应后,TCON或SCON中的中断请求标志应及时清除。否则就意味着中断请求仍然存在,造成中断的重复查询和响应。 1.定时中断请求的撤消 ●定时中断撤销只是标志位的置“0”问题。 ●定时中断响应后,硬件自动把标志位(TF0或TFl) 清“O”,因此定时中断是自动撤销。不需干预。 2.脉冲方式外部中断请求的撤消 ●中断标志位的置“O” 标志位(IE0或IEl)在中断响应后由硬件自动清“O”。
6.1 MCS-51单片机中断系统 五. 中断请求的撤消 2.脉冲方式外部中断请求的撤消 ●外中断请求信号的撤销。 由于脉冲信号过后就消失了,也可以说中断请求信号是自动撤消的。 3.电平方式外部中断请求的撤消 ●中断标志位自动清“O” ●外中断请求信号的撤销是通过软件实现。 4.串行中断软件撤消 串行中断的标志位是TI和RI,但不能自动清“O”。因为在中断响应后,还需测试这两个标志位的状态,来判定是接收操作还是发送操作,然后才能清除。所以串行中断请求的撤销也应使用软件方法,在中断服务程序中进行。
执行主程序 开中断 恢复现场 关中断 中断服务 开中断 保护现场和断点 关中断 执行一条指令 取下一条指令 有中断请求吗 N Y 返回断点 6.1 MCS-51单片机中断系统 六. 中断服务流程 1.现场保护和现场恢复 2.关中断和开中断 3.中断处理 4.中断返回 中断服务程序的最后一条指 令必须是中断返回指令RETI。
6.2 MCS-51单片机的定时器/计数器 一. 定时方法概述 定时方法有: ●软件定时 软件定时是靠执行一个循环程序以进行时间延迟。 特点是时间精确,不需外加硬件电路。但占用CPU。 ●硬件定时 由硬件电路完成。其特点是全部由硬件电路完成, 不占用CPU,定时时间较长,使用上不够灵活方便。 ●可编程定时器定时 是通过对系统时钟脉冲的计数来实现的。计数值通过程序设 定,改变计数值,也就改变了定时时间,使用起来既方便 又灵活。此外,由于采用计数方式定时,因此可编程定时 器都兼有计数功能,可以对外来脉冲进行计数。
6.2 MCS-51单片机的定时器/计数器 二. 定时器/计数器的定时和计数功能 MCS一51单片机共有两个可编程的定时器/计数器。 定时器/计数器T0和定时器/计数器T1。 16位加法计数结构,由THX和TLX两个8位计数器组成。 1.计数功能 ●计数是指对外部事件进行计数。外部事件的发生 以输入脉冲表示,因此计数功能的实质就是对外 来脉冲进行计数。 ● MCS一51有T0(P3.4)和T1(P3.5)两个外部事件输 入端。外部输入的脉冲在负跳变时有效,进行计 数器加1(加法计数)。
6.2 MCS-51单片机的定时器/计数器 二. 定时器/计数器的定时和计数功能 2.定时功能 ●定时功能也是通过计数器的计数来实现的。 ●此时的计数脉冲来自单片机的内部,即每个机器 周期产生一个计数脉冲。也就是每个机器周期 计数器加1。
6.2 MCS-51单片机的定时器/计数器 三. 定时器/计数器的控制寄存器 1.定时器控制寄存器(TCON) ●TF0、TF1-计数器溢出标志位 由硬件置“1”,中断方式时,硬件清“0”; 查询方式时,软件清“0”。 ●TR0、TR1-定时器运行控制位 TR0(TR1 )= 0 停止定时器/计数器工作 TR0(TR1 )= 1 启动定时器/计数器工作 该位根据需要以软件方法使其置“1”或清“0”。
6.2 MCS-51单片机的定时器/计数器 三. 定时器/计数器的控制寄存器 2.工作方式控制寄存器(TMOD) 定时/计数器1 定时/计数器O ● TMOD不能位寻址,一定义就是4位。 ●GATE——门控位 GATE=O 以运行控制位TR启动定时器 GATE=1 以外中断请求信号(INT1或INT0)启动定时器 ●C/T———定时方式或计数方式选择位 C/T=0 定时工作方式 C/T=1 计数工作方式
6.2 MCS-51单片机的定时器/计数器 三. 定时器/计数器的控制寄存器 ●M1M0———工作方式选择位 M1M0=00 工作方式0 M1M0=01 工作方式1 M1M0=10 工作方式2 M1M0=11 工作方式3 3.中断允许控制寄存器(IE) ●EA—中断允许总控制位 ● ET0和ET1——定时/计数中断允许控制位 ET0(ET1)=0 禁止定时/计数中断 ET0(ET1)=1 允许定时/计数中断
6.2 MCS-51单片机的定时器/计数器 定时器/计数器共有4种工作方式。 四. 定时工作方式0 ●方式0是13位计数结构,其计数器由THi(8位)和 TLi的低5位构成,高3位弃之不用。 ●定时器/计数器1与定时器/计数器0完全相同。 1.电路逻 辑结构
6.2 MCS-51单片机的定时器/计数器 四. 定时工作方式0 2.定时和计数应用 ●在方式0下,当为计数工作方式时,计数范围是:l~8192(213) ●当为定时工作方式时,定时时间的计算公式为: (213-计数初值)×晶振周期×12 或 (213-计数初值)×机器周期 其时间单位与晶振周期或机器周期相同(us)。 如晶振频率为6 MHz,则最小定时时间Tmin为: Tmin= [213-(213-1)]×1/6×10-6×12=2×10-6=2(us) Tmax= [213-0]×1/6×10-6×12=2×10-6=16384(us)
6.2 MCS-51单片机的定时器/计数器 2.定时和计数应用 例:设单片机晶振频率为6 MHz,使用定时器1以方 式0产生周期为500us的等宽方波连续脉冲,并 由P1.0输出。以查询方式完成。 ●计算计数初值: 欲产生500us的等宽正方波脉冲,只需以250us为周期交替输出高低电平即可设待求的计数初值为X,则: [213-X]×1/6×10-6×12=250×10-6 解得:X=8067。二进制数表示为1111,1100,00011B 高8位为 低5位为 0FCH, 03H。 即: THl=0FCH TL1=03H。
6.2 MCS-51单片机的定时器/计数器 2.定时和计数应用 ●TMOD初始化: 定时器/计数器1设定为方式0,则M1M0=00; 为实现定时功能,应使C/T=0 实现定时器/计数器1的运行控制,则GATE=0。 定时器/计数器O不用,有设定为O。 因此TMOD寄存器应初始化为OOH。 ●控制寄存器TCON中的TRi位控制定时的启动和停止 TR1=l启动,TR1=0停止。
6.2 MCS-51单片机的定时器/计数器 2.定时和计数应用 MOV TMOD,#OOH ;设置T1为工作方式0 MOV THl ,#OFCH ;设置计数初值 MOV TLl ,#03H MOV IE ,#00H ;禁止中断 LOOP: SETB TRl ;启动定时 JBC TFl.LOOPl ;查询计数溢出 AJMP LOOP LOOP1:MOV THl,#OFCH ;重新设置计数初值 MOV TLl,#03H CLR TFl;计数溢出标志位清“0” CPL P1.0 ;输出取反 AIMP L00P ;重复循环 ●程序设计
6.2 MCS-51单片机的定时器/计数器 五.定时工作方式1 ●方式1是16位计数结构,其计数器由THi(8位)和 Tli(8位)构成。 ●逻辑电路和工作情况与方式0完全相同。 ●在方式1下, 计数范围是:l~65536(216) ●当为定时工作方式时,定时时间的计算公式为: (216-计数初值)×晶振周期×12 如晶振频率为6 MHz: Tmin= [216-(216-1)]×1/6×10-6×12=2×10-6=2(us) Tmax= [216-0]×1/6×10-6×12=2×10-6=131072(us)
6.2 MCS-51单片机的定时器/计数器 五.定时工作方式1 [例] 题目同前,但以中断方式完成。即单片机晶振频率为6 MHz,使用定时器1以工作方式1产生周期为500us的等宽方波连续脉冲,并由P1.0输出。 1.计算计数初值 THl=0FFH TLl=83H 2.TMOD寄存器初始化 TMOD=10H 3.程序设计
6.2 MCS-51单片机的定时器/计数器 ORG 0000H LJMP MAIN ORG 0013H LJMP FBMC MAIN: MOV TMOD,#10H ;定时器1工作方式1 MOV THl,#OFFH ;设置计数初值 MOV TLl,#83H SETB EA ;开中断 SETB ETl ;定时器1允许中断 SETB TRl ;定时开始 HERE:SJMP $ ;等待中断 主程序: FBMC: MOV THl,#OFFH ;重新设置计数初值 MOV TLl,#83H CPL P1.0 ;输出取反 RETI ;中断返回 中断 服务 程序
6.2 MCS-51单片机的定时器/计数器 六.定时工作方式2 ●方式2是自动重新加载工作方式。 ●计数器分为两部分,即TL作计数器,TH作预置寄存器。 初始化时初值分别装入TL和TH中。 ●当计数溢出后, 由预置寄存器TH 以硬件方法自动 给计数器TL重新 加载。 1.电路逻辑结构 图6.5 定时器/计数器O的工作方式2逻辑结构
6.2 MCS-51单片机的定时器/计数器 六.定时工作方式2 2.循环定时和循环计数应用 例:用定时器0以工作方式2产生100us定时,在P1.0输 出周期为200us方波。已知晶振频率fosc=6MHz。 ●计算计数初值: [28-X]×1/6×10-6×12=100×10-6 解得:X=206D=1100,1110B=0CEH 把0CEH分别装入TH0和TL0中 ●TMOD初始化: 定时器/计数器0设定为方式2, 则M1M0=10; 为实现定时功能,应使C/T=0 ; GATE=0 因此TMOD寄存器应初始化为O2H。
6.2 MCS-51单片机的定时器/计数器 2.循环定时和循环计数应用 ●程序设计(查询方式) MOV IE,#00H ;禁止中断 MOV TMOD,#02H ;设置定时器O为工作方式2 MOV TH0,#OCEH ;保存计数初值 MOV TL0,#OCEH ;设置计数初值 SETB TR0 ;启动定时 L00P: JBC TF0,L00P1 ;查询计数溢出 AJMP L00P L00P1:CPL P1.0 ;输出方波 AJMP L00P ;重复循环 由于方式2具有自动重装载功能,因此计数初值只需设置一次,以后不再需要软件重置。
6.2 MCS-51单片机的定时器/计数器 [例] 用定时器1以工作方式2实现计数,每计100次进行累 加器加1操作 1.计算计数初值 28-X=100 X=156D=9CH 2.TMOD寄存器初始化 M1M0=10,C/T=1,GATE=0 TMOD=0110XXXXB=0110,0000B=60H MOV IE,#00H ;禁止中断 MOV TMOD,#60H ;设置定时器1为工作方式2 MOV TH1, #9CH ;保存计数初值 MOV TL1, #9CH ;设置计数初值 SETB TR1 ;启动定时 L0PP: JBC TF1,L00P ;查询计数溢出 AJMP L0PP L00P: INC A ;累加器加1 AJMP L00P ;重复循环
6.2 MCS-51单片机的定时器/计数器 七.定时工作方式3 1.工作方式3下的定时器/计数器0 ●方式3下的定时器/计数器0被拆成两个独立的8 位计数器TL0和TH0。 ●TL0可以计数使用,也可以定时使用。 T0的各控制位(TR0,TF0)和引脚信号归它使用。 其功能和操作与方式0或方式1完全相同。
6.2 MCS-51单片机的定时器/计数器 七.定时工作方式3 1.工作方式3下的定时器/计数器0 ●TH0只能作定时器使用。 控制位借用定时器/计数器1的控制位。 即计数溢出去置位TF1; 定时的启动和停止则受TR1控制。
6.2 MCS-51单片机的定时器/计数器 七.定时工作方式3 2.工作方式3下的定时器/计数器1 ●如果T0工作在方式3,T1的控制位TR1、TF1被借 用,T1通常是作为串行口的波特率发生器使用, 确定串行通信的速率。 ●当作为波特率发生器使用时,只需设置好工作方 式,便可自动运行。 T1方式2 Tl方式l(或O)
OC门 反相器 89C51 中断源1 +5V 1 中断源2 1 INT0 中断源n 1 P1.0 P1.1 P1.n 6.3 MCS-51单片机外部中断源的扩展 一. 通过OC门线或实现 INTE: ;现场保护 JB P1.0,LOPl ;转向服务程序1 JB P1.1,LOP2 ;转向服务程序2 : JB P1.n,LOPn ;转向服务程序n IEND: ;现场恢复 RETI LOP1: ;中断服务程序1 AJMP IEND : LOPn: ;中断服务程序n AJMP IEND
6.3 MCS-51单片机外部中断源的扩展 二. 通过自身的定时器/计数器实现 MOV TMOD,#06H ;设置计数器0为工作方式2 MOV TH0, #0FFH ;保存计数初值 MOV TL0, #0FFH ;设置计数初值 SETB EA ;开中断 SETB ET0 ;允许计数器0中断 SETB TR0 ;启动计数器 ●外中断信号从T0输入端输入
6. 4定时器/计数器与中断综合应用举例 1.实现时钟计时显示的基本方法 2.程序流程
作业练习题 P162: 一 . 1、4、6~30 二 . 1、2、4、6、9~14