780 likes | 949 Views
模块五. 80C51 的中断系统及定时 / 计数器. 本章主要内容. 中断的概念. 80C51 中断系统的结构与使用方法. 80C51 定时 / 计数器的结构与使用方法. +5V. 项目五:闪烁灯. 1 、项目内容. 由 80C51 单片机 P1.0 口控制一只发光二极管以 50ms 间隔闪烁。. 2 、项目电路. 单片机. P1.0. 3 、前面所学的程序设计. 用软件定时. +5V. ORG 0030H. START: CLR P1.0. ACALL DELAY. 单片机. P1.0. SETB P1.0.
E N D
模块五 80C51的中断系统及定时/计数器 本章主要内容 中断的概念 80C51中断系统的结构与使用方法 80C51定时/计数器的结构与使用方法
+5V 项目五:闪烁灯 1、项目内容 由80C51单片机P1.0口控制一只发光二极管以50ms间隔闪烁。 2、项目电路 单片机 P1.0
3、前面所学的程序设计 用软件定时 +5V ORG 0030H START: CLR P1.0 ACALL DELAY 单片机 P1.0 SETB P1.0 ACALL DELAY AJMP START DELAY:MOV R7,#200 DEL1: MOV R6,#123 NOP DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET ▼让CPU循环执行一段程序,通过选择指令和安排循环次数,以实现软件定时。 ▼软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。 END
4、采用80C51片内集成的定时/计数器工作于定时模式,一到50ms即将P1.0口的内容取反的程序设计。4、采用80C51片内集成的定时/计数器工作于定时模式,一到50ms即将P1.0口的内容取反的程序设计。 ORG 0000H ▼定时时间到了,CPU才去处理定时中断事务,处理完毕后,又返回主程序继续执行。 AJMP START ORG 000BH AJMP ST0 ▼该设计既不占用硬件资源,又不占用CPU时间,提高了CPU的利用率。 ORG 0030H START: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H ;中断服务程序 ST0: CPL P1.0 SETB ET0 SETB EA SETB TR0 MOV TH0,#03CH MOV TL0,#0B0H RETI SJMP $ END
一、中断的概念 看书 生活中的中断例子 电话响 接 电 话 你正在看书, 突然电话铃响, 你记下书的页码, 去接电话, 接完电话后, 继续看书。 继 续 看 书 挂电话
1、 80C51单片机的中断过程示意 主程序(事件A) 执行主程序 ▼中断是指某种更重要的事件发生,单片机暂停现行的程序,转去执行另一程序,已处理发生的事件,处理完毕后,又回到原来的程序执行。 中断请求 中断响应 断点 中断服务子程序(处理事件B) 继续执行主程序 返回主程序
2、中断的基本概念 1)中断源:引起CPU中断的根源。 2)中断请求:中断源向CPU提出的处理请求。 3)中断响应过程:CPU暂时中断原来的事务A, 转去处理事件B的过程。 4)中断服务:对事件B的整个处理过程。 5)中断返回:处理完毕后,再回到原来被中断的地方 (即断点)。 6)中断系统(中断机构):实现上述中断功能的部件。
3、中断技术的优点 1)分时操作: 分时为多个I/O设备服务。 2)实时响应: 处理随机事件。 3)可靠性高: 处理设备故障及断电等突发事件。
二、 80C51中断系统的结构与使用方法 80C51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套。 ▼本小节主要内容: 1、80C51的中断源; 2、80C51的中断系统结构; 3、80C51的中断处理过程; 4、中断系统实例。
单片机 1、 80C51的中断源 五个中断源 /INT0 1)外部中断输入/INT0 (P3.2) 或 T0 /INT1 2)外部中断输入/INT1 (P3.3) 或 T1 3)片内定时/计数器T0溢出中断TF0(TCON.5) 串行口 4)片内定时/计数器T1溢出中断TF1(TCON.7) 5)串行接口中断RI(SCON.0)或TI(SCON.1)
1 PX0 EX0 INT1 INT0 1 1 0 PT0 1 EX1 PX1 1 0 ET1 PT1 0 ES PS ≧1 TI 2、 80C51中断系统的结构 80C51中断系统有5个中断源,2个优先级,可实现二级中断嵌套 TCON IE IP 硬件查询 1 IE0 高 级 EA 自 然 优 先 级 0 TF0 1 ET0 T0 0 入口 1 IE1 0 1 TF1 低 级 T1 自 然 优 先 级 0 1 RX RI 0 入口 TX
▼定时/计数器控制寄存器TCON锁存2个定时/ 计数器的溢出中断标志及外部中断/INT0和/INT1的中断标志,以及两个外部中断采用何种触发方式。 ▼中断允许寄存器IE控制CPU是否响应中断请求。 ▼中断优先级寄存器IP安排各中断源的优先级。
中断请求标志 ▼各中断源通过中断请求标志向CPU请求中断。 中断源 中断标志 CPU 1)/INT0 IE0 IE1 2)/INT1 TF0 3)T0 TF1 4)T1 RI (接收) TI(发送) 5)串行口
外部中断/INT0触发方式控制位 当IT0=0时,/INT0为电平触发 当IT0=1时,/INT0为下降沿触发 控制T0的 启动停止 T0的中断 请求标志 /INT0中断 请求标志 1) TCON的中断标志 ▼应用哪种中断,采用哪种触发方式,要由TCON和SCON的相应位进行规定。 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
▼当IT0=0时,/INT0为电平触发方式,若采样到/INT0引脚为低电平时,置IE0=1表示/INT0向CPU请求中断;若采样到高电平时,将IE0清0。▼当IT0=0时,/INT0为电平触发方式,若采样到/INT0引脚为低电平时,置IE0=1表示/INT0向CPU请求中断;若采样到高电平时,将IE0清0。 外部中断的触发方式 ▼当IT0=1时, /INT0为边沿触发方式,若第一个周期采样到/INT0=1,第二个周期采样到/INT0=0,则置IE0=1,产生中断请求。
2) SCON的中断标志 SCON TI RI RI:串行接口接收中断标志位。当允许串行接口接收数据时,每接收完一个串行帧,由硬件置位RI。RI必须由软件清除。 TI:串行接口发送中断标志位,当CPU将一个发送数据写入串行接口发送缓冲器时,就启动了发送过程。每发送完一帧,由硬件置为TI,TI必须由软件清除。
外部/INT0 中断允许位 CPU 中断允许位 串行口 中断允许位 定时/计数器T0 中断允许位 3) 中断允许控制寄存器 ▼IE寄存器某位设定为1,相应的中断源中断允许;某位设定为0,相应的中断源中断屏蔽。 IE EA ES ET1 EX1 ET0 EX0
外部中断/INT0 优先级设定位 串行口中断 优先级设定位 T0中断 优先级设定位 4) 中断优先级控制寄存器 ▼中断优先级寄存器IP某位设定为1,相应的中断源为高优先级中断;某位设定为0,相应的中断源为低优先级中断。 IP PS PT1 PX1 PT0 PX0
外部中断INT0 外部中断INT1 ▼同一优先级中的中断申请不止一个时,由中断系统硬件确定的自然优先级形成。 自然优先级顺序 中断源 高 定时/计数器T0 定时/计数器T1 低 串行接口RI或TI
80C51中断优先级三条原则 1) CPU同时接到几个中断时,首先响应优先级别最高的中断请求; 2) 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断; 3) 正在进行的低优先级中断服务,能被高优先级中断请求所中断。
5) TCON和SCON复位后状态及位操作说明 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SCON TI RI ▼单片机复位后,TCON和SCON各位清0。 ▼TCON和SCON寄存器既可字节操作,又可位操作。
IE和IP复位后的状态及位操作说明 IE EA ES ET1 EX1 ET0 EX0 IP PS PT1 PX1 PT0 PX0 ▼单片机复位后,IE各位清0,禁止所有中断,IP各位清0,各中断源同位低优先级中断。 ▼IE和IP寄存器既可字节操作,又可位操作。
分电平触发 和边沿触发 硬件自动清0 要用软件清除 6)、中断请求的撤除 TCON IE0 TF1 TR1 TF0 TR0 IE1 IT1 IT0 SCON TI RI
中断请求的撤除 CPU响应某中断请求后,在中断返回前,应该撤除该中 断请求,否则会引起另一次中断。 ▼电平触发的外部中断:CPU响应中断时不会自动清除IE0或IE1标志,所以在响应中断后应立即撤除INT0或INT1引脚上的低电平。 ▼边沿触发的外部中断:CPU在响应中断后,也是用硬件自动清除有关的中断请求标志IE0或TE1。
中断请求的撤除 ▼定时器0或1溢出:CPU在响应中断后,硬件清除了有关的中断请求标志TF0或TF1,即中断请求是自动清除的。 ▼串行口中断:CPU响应中断后,没有硬件清除TI、RI,故这些中断不能自动清除,而要靠软件来清除相应的标志。
3、 80C51中断处理过程 ▼本小节主要内容: 1)、中断响应条件 2)、中断服务 3)、中断返回
中断处理过程示意图 CPU 中断处理过程分为三个阶段: 主 程 序 中断响应 1)、中断响应 中 断 服 务 断点 2)、中断响应过程 主 程 序 3)、中断返回 中断返回
1)、中断响应条件 CPU CPU响应中断的条件: 主 程 序 中断响应 ① 中断源有中断请求; 中 断 服 务 ② 此中断源的中断允许位为1; 断点 ③ CPU开中断(即EA=1)。 主 程 序 三个条件缺一不可! 中断返回
2)、中断响应过程 中断响应:在满足CPU的中断响应条件之后,CPU对中断源中断请求予以处理。 CPU 中断响应过程: 主 程 序 ①将相应的优先级状态触发 器置1; 中断响应 中 断 服 务 ②执行硬件LCALL指令 断点 ▼保护断点地址; 主 程 序 ▼相应的中断服务程序入 口地址送入PC; 中断返回 ③执行中断服务。
中断受阻 若遇到下列任一条件,硬件将受阻,不能产生LCALL指令: ① CPU正在处理同级或高优先级。 ② 当前查询的机器周期不是所执行指令的最后一个 机器周期。即在完成所执行指令前,不会响应中断。 ③ 正在执行的指令为RET、RETI或任何访问IE或IP寄 存器的指令。
ROM 中断响应过程实例 以外部中断0为例 0003H 主 程 序 中断响应 中断响应过程由 硬件自动完成! 断点 地址 ①将相应的优先级状态触发器置1 ② 保护断点地址 ③相应的中断服务程序入口地址送入PC;
中断响应过程实例 ROM 以外部中断0为例 0003H 8个字节 AJMP SINT0 主 程 序 中断响应 中 断 服 务 断点 地址 SINT0: 8个字节一般不够存放中断服务程序!
中断服务程序编写注意事项 ①两个相邻中断服务程序入口地址相距只有8个 单元,一般中断程序是不够存放的,通常是在相应的中断服务程序入口地址单元放一条转移指令LJMP或AJMP; ②硬件LCALL指令,只将PC内的断点地址压入堆栈保护,对程序状态字寄存器PSW、累加器A等的内容并不作保护处理。
表5.1中断服务程序入口地址表 中断源 入口地址 外部中断0 003H 定时/计数器0 000BH 外部中断1 0013H 定时/计数器0 001BH 串行接口 0023H 入口地址是固定的!
3)、中断返回(RETI) CPU RETI自动完成: 主 程 序 ① 将压入堆栈保存的断点地址从栈顶弹出送回PC,CPU从原来中断地方继续执行程序 中断响应 中 断 服 务 断点 地址 ②将相应中断优先级状态触发器清0,通知中断系统, 中断服务程序已执行完毕。 主 程 序 中断返回 不能用RET指令代替RETI指令!
中断响应条件是否满足? 中断是否受阻? 把断点地址压入堆栈 相应中断源的入口地址送入PC,转向中断服务程序 返回 4)、中断处理过程流程图 中断源发出中断请求 由 硬 件 自 动 完 成 N Y N Y
4、单外部中断源实例 1)实例内容: 将P1接口设置成数据输入口,外围设备每准备好一个 数据时,发出一个选通信号(正脉冲),使得D触器 Q端置1,经/Q端向/INT0送入一个低电平中断请求信 号。
+5V Q VCC D CLR CLK INT0 80C51 74LS74 2)实例电路图及其分析: D7 . . . D0 P1.7 . . . P1.0
清除IE0标志 Q CLR INT0 CLR IT0 ;设/INT0为电平触发方式 从P3.0脚输出负 脉冲使得74LS74 复位,从而/Q脚 为高电平,以撤 除/INT0引脚的 低电平触发信号 D7 . . . D0 P1.7 . . . P1.0 VCC D P3.0 CLK 80C51 74LS74
4)主程序: 3)绘流程图: 主程序流程图 ORG 0000H START: AJMP MAIN 程序开始 ORG 0003H LJMP SINT0 设置外部中断0入口 设置外部中断0 为电平触发方式 ORG 0030H MAIN: CLR IT0 开总中断 SETB EA SETB EX0 允许/INT0中断 MOV DPTR,#1000H SJMP $ 设置数据区地址指针
4)中断服务程序: 3)绘流程图: SINT0 :PUSH PSW 中断服务程序流程图 PUSH ACC 保护现场 CLR P3.0 NOP NOP SETB P3.0 P3.0输出负脉冲以清除中断请求标志 置P1口为输入口 MOV P1,#0FFH 输入数据,并存入1000H开始的单元 MOV A,P1 MOVX @DPTR,A 修改数据指针 INC DPTR 恢复现场 POP ACC POP PSW 返回 RETI
5、多外部中断源实例 1)实例内容: 将设有5个外部中断源,中断优先级排队顺序为XI0、 XI1、XI2、XI3、XI4。试设计它们与80C51单片机的 接口。 2)设计思路: 采用中断和查询相结合的外部中断扩展法。
+5V INT0 INT1 80C51 XI0 ▼由于外部中断0自然优先级比外部中断1高,所以XI0优先级最高。 XI1 XI2 XI3 ▼XI1~XI4的优先级通过中断服务程序先后查询P1.0~P1.3来区分。 XI4 P1.3 P1.2 P1.1 P1.0
P1.0是高电平吗? P1.1是高电平吗? P1.2是高电平吗? P1.3是高电平吗? 恢复现场 返回 中断服务程序流程图 保护现场 Y N 处理XI1 Y N 处理XI2 Y N 处理XI3 Y N 处理XI4
部分主程序 ORG 0003H LJMP INSE0;转外部中断0服务程序入口 ORG 0013H LJMP INSE1;转外部中断1服务程序入口 … … … …
外部中断0服务子程序 INSE0:PUSH PSW;XI0中断服务子程序 PUSH ACC … … … … POP ACC POP PSW RETI
外部中断1服务子程序 INSE1:PUSH PSW;XI1中断服务子程序 PUSH ACC JB P1.0,DV1;P1.0为1,转XI1中断服务程序 JB P1.1,DV2;P1.1为1,转XI2中断服务程序 JB P1.2,DV3;P1.2为1,转XI3中断服务程序 JB P1.3,DV4;P1.3为1,转XI4中断服务程序 INRET:POP ACC POP PSW RETI
XI1~XI4中断服务程序 DV1:… … ;XI1中断服务程序 AJMP INRET DV2:… … ;XI2中断服务程序 AJMP INRET DV3:… … ;XI3中断服务程序 AJMP INRET DV4:… … ;XI4中断服务程序 AJMP INRET
三、80C51的定时/计数器 ▼80C51单片机片内集成两个可编程的定时/计数器; T0和T1。即可工作于定时模式,也可工作于外部事件计 数模式。 ▼多种定时方法: ① 软件定时,让CPU循环一段程序。 ② 采用时基电路定时,如采用555电路。 ③采用可编程芯片定时,典型的可编程定时芯片,如Intel 8253。
80C51的定时/计数器 ▼本大节主要内容: 1、定时/计数器的结构及工作原理 2、定时/计数器的控制 3、定时/计数器的工作方式 4、定时/计数器的应用实例