450 likes | 616 Views
第六章 MCS-51 中断与定时系统. 6.1 MCS-51 单片机中断系统 6-1-1 单片机中断技术概述. 中断的概念 计算机理论中中断技术的含义: 资源共享技术. 中断的功能 : 实现 CPU 与外部设备的速度配合; 实现实时控制; 实现故障及时发现; 实现人机联系。. 中断处理: 现场保护,恢复现场; 开中断,关中断; 执行中断服务程序; 中断返回。. 向 CPU 发出中断请求的地方,称之为 中断源 。 MCS-51 单片机中断源: 3 类共 5 个。. 6-1-2 中断源.
E N D
第六章 MCS-51中断与定时系统 6.1 MCS-51单片机中断系统 6-1-1 单片机中断技术概述 中断的概念 计算机理论中中断技术的含义:资源共享技术 中断的功能: 实现CPU与外部设备的速度配合; 实现实时控制; 实现故障及时发现; 实现人机联系。
中断处理: 现场保护,恢复现场; 开中断,关中断; 执行中断服务程序; 中断返回。
向CPU发出中断请求的地方,称之为中断源。 MCS-51单片机中断源:3类共5个。 6-1-2 中断源 外部中断0;中断请求信号来自引脚 (P3.2) 外部中断1;中断请求信号来自引脚 (P3.3) 定时中断0; 定时中断1; 串行口中断。
外部中断请求信号来自引脚 (P3.2)和 ( P3.3) 请求方式有两种:电平方式;脉冲方式。 通过TCON的IT0、IT1选择, 电平方式(IT0(IT1)=0):低电平有效 脉冲方式(IT0(IT1)=1):脉冲负跳变有效 定时中断(内部中断):满足定时、计数的需要。 定时状态,计数状态 两个16位寄存器。对应T0、T1 (专用寄存器8AH、8BH,8CH、8DH) 寄存器溢出作为有效中断请求信号
串行中断(内部中断):用于串行数据传送 串行口缓冲器SBUF(8位专用寄存器99H), 不能进行位寻址 MOV A, SBUF ;接收 MOV SBUF,A ;发送
6-1-3 中断控制 定时器控制寄存器(TCON) 字节地址88H 功能: 定时器/计数器控制功能; 中断控制功能。
IE0(IE1)——外中断请求标志位 硬件置位——当CPU采样到 出现有效中断请求时。 中断响应完成,转向中断服务程序时,硬件自动清零。 IT0(IT1)——外中断请求信号方式控制位 IT0(IT1)=1脉冲方式(负跳变有效); IT0(IT1)=0电平方式(低电平有效)。 TF0(IF1)——计数溢出标志 硬件置位——当计数器产生计数溢出时。 转向中断服务程序时,硬件清零。
串行口控制寄存器(SCON) 字节地址98H TI——串行口发送中断请求标志位 当发送完一帧串行数据后,硬件置位;在转向中断服务程序 后,用软件清零。 RI——串行口接收中断请求标志位 当接收完一帧串行数据后,硬件置位;在转向中断服务程序 后,用软件清零。
中断允许控制寄存器(IE) 字节地址A8H EA——中断允许总控制位 EA=0 中断总禁止; EA=1 中断总允许 EX0(EX1)——外部中断允许控制位 EX0(EX1)=0 禁止外中断; EX0(EX1)=1 允许外中断
ET0(ET1)——定时/计数中断允许控制位 ET0(ET1)=0 禁止定时(计数)中断; ET0(ET1)=1 允许定时(计数)中断 ES——串行中断允许控制位 ES=0 禁止串行中断; ES=1 允许串行中断
中断优先级控制寄存器(IE) 字节地址B8H PS——串行中断优先级设定位; PT1——定时中断1优先级设定位 PT0——定时中断0优先级设定位 PX1——外部中断1优先级设定位 PX0——外部中断0优先级设定位 0:优先级低 1:优先级高
中断优先级控制原则: 1)低优先级中断请求不能打断高优先级中断请求;高优先级中断请求可以打断低优先级中断请求。 2)如果一个中断请求已被响应,则同级的其他中断响应将被禁止。 3)如果同级的多个中断请求同时出现,则按CPU查询次序确定哪个中断请求被响应。 查询次序: 外部中断0定时中断0外部中断1定时中断1串行中断。
外部中断请求采样:(S5P2对中断请求引脚采样)外部中断请求采样:(S5P2对中断请求引脚采样) 采样 引脚 电平方式:采样到低电平,中断请求有效,IE0(IE1)置1 脉冲方式:在两个相邻机器周期采样到先高电平后低电平,则中断请求有效,IE0(IE1)置1。 6-1-4 中断响应过程
定时/计数器0 定时/计数器1 串行发送 串行接收 内部中断请求:(定时/计数器中断,串行中断) 中断请求发生在单片机芯片内部,不存在中断请求采样问题 直接置位相应的中断请求标志位。
中断查询与响应 中断查询 当中断源有了有效的中断请求信号,并将其锁定在相应的 中断请求标志位中,CPU通过对这些标志位的查询,感知 中断请求。 MCS-51单片机在每个机器周期的S6状态按中断优先级次序 对中断请求标志位进行查询。 查询有标志位为1,在紧接的下一个机器周期开始中断响应。
中断响应 由硬件自动生成一条LCALL长调用指令。 LCALL addr16(指向相应中断入口地址) 对于外部中断0响应 LCALL 0003H 存在下列情况之一,中断响应无法进行 1)CPU正在处于一个同级或高级的中断服务中; 2)查询中断请求的机器周期不是当前执行指令的最后一个 机器周期; 3)当前指令是返回指令(RET,RET1)或访问IE,IP指令。 中断响应时间:3~8个机器周期
1)定时器/计数器中断硬件撤除; 中断响应后自动清TF0(TF1)标志位。 6-1-5 中断请求的撤消 2)外部中断自动与强制撤除; 中断响应后硬件自动清IE0(IE1)标志位 脉冲请求方式,自动撤除; 电平请求方式强制撤除。
电平方式外部中断请求撤除电路 电平方式外部中断请求信号的真正撤除,是通过软件实现的 3)串行中断软件撤除 标志位TI,RI不能通过硬件清零。只能在中断响应后用软件 清除。
6-2 MCS-51单片机的定时器/计数器 6-2-1 定时方法概述 软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但增加CPU开销。 硬件定时:通过硬件电路实现定时,不占用CPU时间,但使用不够方便。 可编程定时器定时:通过对系统时钟脉冲的计数实现定时。计数值通过程序设定,定时准确,使用方便灵活。
6-2-2 定时器/计数器的定时和计数功能 MCS-51系列单片机有两个可编程定时器/计数器:T0、T1, 16位寄存器,加法计数结构,地址为: T0(TH0,TL0):8CH,8AH T1(TH1,TL0):8DH,8BH 特殊功能寄存器 每个寄存器(T0,T1)都具有定时和计数功能
MCS-51定时/计数器核心是一个16位计数器(寄存器)。MCS-51定时/计数器核心是一个16位计数器(寄存器)。 加1信号来源:外部计数脉冲、内部时钟脉冲。 信号来源方式:由特殊功能寄存器TMOD设置位C/T确定。 ,计数方式(外部); ,定时方式(内部)。
定时方式: MCS-51典型的指令周期(执行一条指令的时间)为一个机器周期。机器频率是振荡频率的12分频。 主频为12MHz,机器周期为1μs,也就是说12M晶振时,每1μs定时寄存器完成加1操作。 一旦振荡周期确定,机器周期亦确定。
计数方式 计数脉冲来源于T0(P3.4)、T1(P3.5)口。当检测到输入引脚的电平由高跳变到低时,计数器加1。 采样(S5P2)、加1(S3P1)操作。发生在两个机器周期,因此需要2个机器周期才能识别一个从“1”到“0”的跳变。最高计数频率为振荡频率1/24,计数频率周期必须大于2μs才能满足作为计数脉冲。
6-2-3 MCS-51定时/计数器控制与状态寄存器 工作方式控制寄存器TMOD(状态寄存器) 字节地址89H(不可以位寻址)
M1M0为操作方式选择位 :选择定时/计数器模式 ,计数模式; ,定时模式 GATE:选通控制 GATE=0,选通, 通过TRX启动定时器。 GATE=1, 端口高电平,通过TRX启动定时器。
启停与中断控制寄存器TCON(控制寄存器) 字节地址88H TCON由定时/计数器和中断系统合用。 TR0:定时/计数器0启停控制位 由软件控制定时/计数器0的启动/停止。 TR1:定时/计数器1启停控制位 由软件控制定时/计数器1的启动/停止。
TF0:定时/计数器0中断请求标志位 当定时/计数器0计数回0时,由内部硬件置位TF0(TF0=1),请求中断。中断服务程序一旦执行,硬件自动清0(TF0=0)。 TF1:定时/计数器1中断请求标志位 当定时/计数器1计数回0时,由内部硬件置位TF1(TF1=1),请求中断。中断服务程序一旦执行,硬件自动清0(TF1=0)。
IE0:外部中断0中断请求标志 IT0=1, 负跳变触发中断,硬件置IE0=1,当转向中断服务程序后,硬件自动清IE0=0。 IT0=0, 低电平触发中断。硬件置IE0=1,当转向中断服务程序后,硬件自动清IE0=0。 IE1:外部中断1中断请求标志 IT1=1, 负跳变触发中断,硬件置IE1=1,当转向中断服务程序后,硬件自动清IE1=0。 IT1=0, 低电平触发中断。硬件置IE1=1,当转向中断服务程序后,硬件自动清IE1=0。
IT0:外部中断0触发方式控制位 软件设置。IT0=1,外部中断 ,发生10跳变,产生中断请求,向主机申请中断。IT0=0,则 端口低电平触发中断。 IT1:外部中断1触发方式控制位 软件设置。IT1=1,外部中断 ,发生10跳变,产生中断请求,向主机申请中断。IT1=0,则 端口低电平触发中断。以上后四项用于中断系统。 TCON可位寻址,其位地址为88H—8FH。
4-3 定时/计数器的工作方式 设置 (TMOD寄存器)选择定时模式还是计数模式; 对M1M0的设置,用于选择T0、T1的四种操作(工作)方式。 TL0、TL1,TH0、TH1两对定时/计数器
(1)定时/计数方式0(13位计数器) 以定时/计数器0(T0)为例 TH0全部8位,TL0低5位构成13位定时/计数器。 当 时(定时方式),开关接至振荡12分频输出; 当 时(计数方式),开关接通T0(P3.4)当计数脉冲发生负跳变计数器加1。
定时/计数方式1(16位计数器) 逻辑结构和方式0完全一样,只是TL是8位计数器。 计数范围1—65536 如晶振6MHz,最小定时时间为:2s(机器周期) 最大定时时间为:131ms。
定时/计数方式2(自动再装入8位计数器) THx,TLx相互独立(x=0,1)。 TLx作为8位计数器,THx是初值寄存器。TLx溢出后,置TFx申请中断。THx初值重新装入TLx。只需通过软件设置一次,启动后无限次定时/计数运行。(自动进行下一次)
定时/计数方式3(T0分成两个8位计数器,T1无效)定时/计数方式3(T0分成两个8位计数器,T1无效) 将T0分成两个独立的8位计数器。TL0组成完整的8位定时/计数器;既能定时,又能计数。 TH0只能组成8位定时器(内部脉冲)。只能定时。 TL0占用T0全部控制信号及中断请求标志位(TR0、TF0等) TH0只能借用TR1和TF1。 P3.5口(T1外部计数脉冲输入口)不能占用。
4-4 定时/计数器应用 基本步骤: 工作方式控制字(TMOD)的设置; 计数初值的计算并装入THx、TLx; 中断允许位Etx、EA的设置,使主机开放中断; 启/停位TRx的设置。
定时应用有查询、中断两种方式。 计数初值的确定 在方式0下,当为计数方式时,计数值范围1—8192(213) 在方式1下,当为计数方式时,计数值范围1—65536(216) 在方式2下,当为计数方式时,计数值范围1—256(28 )
当为定时方式时, 定时时间:(2n –计数初值)*机器周期
如晶振周期6MHz,机器周期为2s。 在方式0下 最小定时时间为:2s 最大定时时间为:16384s(8192*2) 在方式1下 最小定时时间为:2s 最大定时时间为:131ms(65536*2)
例题:生成周期为500 s的等宽正方波。机器晶振 6MHz。使用T1以方式0工作,由P1.0输出 500 s 机器周期:2 s。定时时间250 s。 以250 s为周期在P1.0端交替输出高低电平。
8067-4096=3971 1 3971-2048=1923 1 1923-1024=899 1 899-512=387 1 387-256=131 1 131-128=3 1 64 0 32 0 16 0 8 0 4 0 二进制表示: 1111110000011
程序设计(查询方式): MOV TMOD,#00H ;设置T1 MOV TH1,#0FCH ;计数初值 MOV TL1,#03H ; MOV IE,#00H ;禁止中断 SETB TR1 ;启动定时 LOOP: JBC TF1,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1: MOV TH1,#FCH ;重新设置计数初值 MOV TL1,#03H ; CLR TF1 ;清溢出标志 CPL P1.0 ;输出 AJMP LOOP ;重复循环
定时工作方式1(16位计数器) T1,通过中断方式完成
程序设计(中断方式): MOV TMOD,#10H ;设置T1 MOV TH1,#0FFH ;计数初值 MOV TL1,#0A1H ; SETB EA ;开中断 SETB ET1 ;T1允许中断 LOOP: SETB TR1 ;定时开始 HERE: SJMP HERE INIT: MOV TH1,#0FFH ;重新设置计数初值 MOV TL1,#0A1H ; CPL P1.0 ;输出 RET1 ;中断返回
使用T1,以工作方式1,定时5秒 定时100ms,循环50次,进入中断服务程序。