1 / 62

第一讲 80C51 的中断系统

第一讲 80C51 的中断系统. 第二讲 80C51 的中断处理过程. 第三讲 80C51 的定时 / 计数器. 本章学习目标. MCS-51 单片机中断源的种类及工作方式 中断控制寄存器 IE 、中断优先级寄存器 IP 及定时器 / 计数器及外部中断控制寄存器 TCON 的使用方法 MCS-51 型单片机中断响应过程 外部中断的结构及原理 熟练编制中断服务程序. 第一讲 80C51 的中断系统. 中断的概念. 一、 80C51 的中断系统结构. 实际生活. 计算机. 看电视. 主程序. 中断请求. 电话铃响. 事件发生. 接听电话.

merrill
Télécharger la présentation

第一讲 80C51 的中断系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第一讲 80C51的中断系统 第二讲 80C51的中断处理过程 第三讲 80C51的定时/计数器

  2. 本章学习目标 • MCS-51单片机中断源的种类及工作方式 • 中断控制寄存器IE、中断优先级寄存器IP及定时器/计数器及外部中断控制寄存器TCON的使用方法 • MCS-51型单片机中断响应过程 • 外部中断的结构及原理 • 熟练编制中断服务程序

  3. 第一讲 80C51的中断系统

  4. 中断的概念 一、80C51的中断系统结构 实际生活 计算机 看电视 主程序 中断请求 电话铃响 事件发生 接听电话 事件处理 中断处理 中断返回 看电视 主程序

  5. 中断的概念: 主程序 中断响应 执行主程序 执行中断处理程序 中断请求 断点 继续执行主程序 中断返回

  6. INT0 T0 INT1 T1 TX RX MCS-51单片机的中断系统 中断允许控制 中断优先级 中断请求标志 高级 内 部 查 询 入口地址 低级 内 部 查 询 ≥1 EA 入口地址 中断源

  7. 二、中断源 1.中断源 共有五个中断源,分别是外部中断两个、定时中断两个和串行中断一个,它们是: 外部中断0--INT0,由P3.2提供, 外部中断1—INT1,由P3.3提供, 外部中断有两种信号方式,即电平方式和脉冲方式。(IT0 、IT1) T0溢出中断; 由片内定时/计数器0提供 T1溢出中断; 由片内定时/计数器1提供 串行口中断RI/TI; 由片内串行口提供

  8. 2、中断源入口地址 具体入口如下: 中断源 入口地址 INT0 0003H T0 000BH INT1 0013H T1 001BH RI/TI 0023H 在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。

  9. 三、 中断控制的寄存器 与中断控制有关的控制寄存器有四个: TCON----定时控制寄存器, IE----中断允许控制寄存器, IP----中断优先级控制寄存器, SCON----及串行口控制寄存器。 定时控制寄存器TCON 触发方式选择 0 低电平1 下降沿 中断请求标志

  10. 串行口控制寄存器SCON 串行中断请求标志 中断允许控制寄存器IE 0 禁止,1允许 中断优先级控制寄存器(IP) 0 低级别,1高级别

  11. 例:IP=09H=0000 1001 PT1、PX0高 INT0、T1、T0、INT1、串行口 IP=55H=0101 0101 Ps px1 px0同级别,都为1 PT0 PT1同级别,都为0 处理顺序为PX0 PX1 PS PT0 PT1 INT0 INT1 RX/TX T0 T1

  12. TCON的中断标志 • 1、中断请求标志 TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 • IT0,外中断0触发方式控制位。 =0,电平触发方式。 =1,边沿触发方式(下降沿有效)。 • IE0,外中断0中断请求标志位。 • TF0,T0溢出中断请求标志位。 IT1 、IE1、 TF1类同

  13. SCON (98H) • 2、SCON的中断标志 TI RI • RI,接收中断标志位。 • TI,发送中断标志位。 注意:RI和TI由硬件置位、由软件清除。 SETB TI SETB 99H

  14. IE (A8H) EA ES ET1 EX1 ET0 EX0 • 3、中断允许控制 EX0,外中断0允许位; ET0,T0中断允许位; EX1,外中断0允许位; ET1,T1中断允许位; ES ,串口中断允许位; EA , CPU中断允许(总允许)位。

  15. IP (B8H) PS PT1 PX1 PT0 PX0 • 4、中断优先级控制 PX0,外中断0优先级设定位; PT0,T0优先级设定位; PX1,外中断0优先级设定位; PT1,T1优先级设定位; PS ,串口优先级设定位。 MOV IP,#10H MOV 0B8H,#10H SETB PS

  16. 同一优先级的优先权排队如下表:

  17. 同时收到几个中断时,响应优先级别最高的 • 中断过程不能被同级、低优先级所中断 • 低优先级中断服务,能被高优先级中断 中断优先级三条原则: 有2个优先级状态触发器: • 高优先级状态触发器 • 低优先级状态触发器

  18. 第二讲 80C51单片机中断处理过程

  19. 一、中断响应条件和时间 • 中断响应条件 • 有中断请求; • 对应中断允许位为1; • 开中断(即EA=1)。 • 同时满足时,才可能响应中断。

  20. 硬件受阻,不产生LCALL的几种情况: • 正在处理同级或高优先级中断; • 当前查询的机器周期不是所执行指令的最后一个机器周期。 • 正执行的指令为RET、RETI或任何访问IE或IP的指令(只有在这些指令后面至少再执行一条指令时才能接受中断请求)。 受阻未得到响应的中断,若条件消失时该中断标志已不再有效,该中断将不被响应。

  21. 二、 中断响应过程 • 相应优先级状态触发器置1 • 执行硬件LCALL指令 • 把PC的内容入栈 • 相应中断服务程序的入口送PC • 执行中断服务程序。 中断响应过程的前两步是由中断系统内部自动完成的,而中断服务程序则要由用户编写程序来完成。

  22. P1口 数据 P3.0 INT0 Q 1 CLR +5V D 8031 CLK 选通信号 例1:单外中断源 三、中断程序举例

  23. 主程序: ORG 0000H START:LJMP MAIN ;跳转到主程序 ORG 0003H LJMP EXXX;转中断服务程序 ORG 0030H ;主程序 MAIN:SETB EA ;CPU开放中断 SETB EX0;允许中断 MOV DPTR,#1000H ;设置数据区指针 SJMP $ ……

  24. 中断服务程序: ORG 0200H EXXX:CLR P3.0 ;由P3.0输出0 NOP NOP SETB P3.0 ;由P3.0输出1,撤除 MOV A,P1 ;输入数据 MOVX @DPTR,A ;存入数据存储器 INC DPTR ;修改指针,指向下一单元 …… RETi;中断返回

  25. 例2.中断和查询相结合 一个外中断扩展成多个外中断的原理图

  26. 由图可知: (1)4个外部扩展中断源通过 4个OC门电路组成线或取非后再与 P3.2相连; (2)4个外部扩展中断源EXINT0~EXINT3中有一个或几个出现高电平则输出为0,使.P3.2脚为低电平,从而发出中断请求。 (3)因此,这些扩充的外部中断源都是电平触发方式(高电平有效)。 (4)CPU执行中断服务程序时,先依次查询P1口的中断源输入状态,然后,转入到相应的中断服务程序,4个扩展中断源的优先级顺序由软件查询顺序决定,即最先查询的优先级最高,最后查询的优先级最低。

  27. 中断服务程序如下:ORG 0003H ;外部中断0入口AJMP INT0 ;转向中断服务程序入口…INT0: PUSH PSW ;保护现场PUSH ACCJB P1.0,EXT0 ;中断源查询并转相应中断服务程序JB P1.1,EXT1JB P1.2,EXT2JB P1.3,EXT3EXIT: POP ACC ;恢复现场POP PSWRETI…EXT0: … ;EXINT0中断服务程序AJMP EXITEXT1: … ;EXINT1中断服务程序AJMP EXITEXT2: … ;EXINT2中断服务程序AJMP EXITEXT3: … ;EXINT3中断服务程序AJMP EXIT同样,外部中断1也可作相应的扩展。

  28. INT0 1 XI0 +5V 1 INT1 XI1 1 XI2 1 XI3 80C51 1 XI4 P1.3 P1.0 例3、5个外部中断源系统

  29. ORG 0000H LJMP MAIN ORG 0003H LJMP INSE0 ;转外部中断0服务程序入口 ORG 0013H LJMP INSE1;转外部中断1服务程序入口 MAIN:SETB EA SETB EX0 SETB EX1 SJMP $ INSE0: PUSH PSW ;XI0中断服务程序 PUSH ACC POP ACC POP PSW RETI

  30. INSE1:PUSH PSW ;中断服务程序 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 DV1:……;XI1中断服务程序 AJMP INRET DV2:……;XI2中断服务程序 AJMP INRET DV3: ……;XI3中断服务程序 AJMP INRET DV4:……;XI4中断服务程序 AJMP INRET

  31. 第三讲 80C51的定时/计数器

  32. 实现定时常用的三种方法: • 软件定时:占用CPU时间,效率低。 • 用555电路:不可编程。 • 可编程芯片:功能强,需要另外扩展。 单片机内部有2个16位的定时/计数器:使用灵活,编程方便。--优先选用

  33. 一、定时/计数器的结构 1、定时/计数器的结构和工作原理 • 加1计数器(高8位、低8位) • TMOD,工作方式设置; • TCON,启动、停止及设置溢出标志。

  34. 2、定时/计数器的工作原理 • 计数器脉冲来源: • 振荡器脉冲经过12分频 • T0或T1引脚的外部脉冲 定时功能----计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。 计数功能----计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。 在TMOD中,各有一个控制位(C/T),分别用于控制定时/计数器T0和T1工作在定时器方式还是计数器方式。

  35. 定时模式,对内部机器周期计数 定时时间 t =计数值N x Tcy • 计数模式,对外部事件脉冲计数 计数脉冲周期要大于2 Tcy • 计数值:溢出时计数器值-计数初值。 • 计数器全1时,再输入1个脉冲就回零,并发生溢出(TCON中TF0或TF1置1),发中断请求。

  36. 二、定时器/计数器的控制寄存器 与定时器/计数器有关的控制寄存器有: 定时器控制寄存器TCON 启动定时/计数器 触发方式选择 中断请求标志 0 停止 1 启动 0 低电平1 下降沿

  37. D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 C/T—计数/定时选择 工作方式控制寄存器TMOD T1控制 T0控制 GATE—门控位 M1 M0—工作方式选择

  38. 振荡器 1/12 C/T=0 TL0 TH0 TF0 C/T=1 T0 低5位 8位 TR0 & 1 ≥1 GATE INT0 三、、定时器/计数器的工作方式 1. 方式0—13位方式。由TL0的低5位和TH0的8位组成。TH0溢出时,置位TF0标志,向CPU发出中断请求。 定时器 13位计数器 计数器 计数脉冲输入 计数初值:X=213-N • 定时= (213–X)*12*1/fosc • 8*10-3=(213-x)*12*1/12*106 • 8192*10-6s=8.192ms • TMOD=0000 gate C/T M1M0 • =0000 0 1 00=04H • 0000 0 0 00=00H

  39. 振荡器 1/12 C/T=0 8位 8位 TL0 TH0 TF0 16位计数器 C/T=1 T0 TR0/TR1 & 1 GATE ≥1 INT0 2. 方式1—16位方式 16位计数,由TL0作为低8位、TH0作为高8位 。 16位计数,由TL1作为低8位、TH1作为高8位 初值:X=216-N 定时= (216–X)*12*1/fosc 1*10-3=(216-X)*12*1/6*106 1000=(65536-X)*2 X=65036 FE0CH

  40. 振荡器 1/12 C/T=0 TL0 TF0 C/T=1 T0 TR0 & TH0 1 GATE ≥1 INT0 3. 方式2—8位自动装入时间常数方式 自动重装初值的8位计数方式,适合于用作较精确的脉冲信号发生器。 初值:X=28-N

  41. 4. 方式3—2个8位方式 仅T0可以工作在方式3,T1处于方式3时停止计数。—此时T0分成2个独立的计数器—TL0和TH0 ,前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。 (1)TH0由TR1启动/停止,溢出TF1 (2)TL0由TR0启动/停止,溢出TF0 (3)TH0只能定时,TL0可以定时/计数,且都是8位 定时T=(28-X)*12*1/fosc TL0计数初值 X=28-N

  42. 例:在方式3下,用TH0产生200US方波,TL0计算TH0产生的方波数。12MHZ。例:在方式3下,用TH0产生200US方波,TL0计算TH0产生的方波数。12MHZ。 (1)初值 TH0定时 100*10-6=(28-X)*12*(1/12*106) 100=256-X X=9CH TH0=9CH (2)TM0D GATE C/T M1M0 GATE C/T M1M0 0000 0 1 11

  43. (3)ORG 0000H AJMP START ORG 30H START: CLR A MOV TL0,A MOV TH0,#9CH MO TMOD,#07H SETB TR0 SETB TR1 LOOP: JNB TF1,$ CLR TF1 CPL P3.4 ;TH0输出方波 MOV A,TL0 CPL A MOV P1,A AJMP LOOP END

  44. 设计数器最大计数值为M,选择不同的工作方式最大计数值不同。12MHZ设计数器最大计数值为M,选择不同的工作方式最大计数值不同。12MHZ 方式0:M=213=8192 , 8.192ms 方式1:M=216=65536, 65.536ms 方式2:M=28=256, 256us 方式3:M=28=256, 256us

  45. 四、应用举例 可编程器件在使用前需要进行初始化: ①确定TMOD控制字:编程时将控制字送TMOD; ②计算计数器的计数初值: 编程时将计数初值送THi、 TLi; ③开中断(如果使用中断方式): 编程实置位EA、ETi ④TRi位置位控制定时器的启动和停止。

  46. 【例1】: 用T0的方式1产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波。采用中断方式,设系统时钟频率为12 MHz。 • 解:1、计算计数初值X: 10*10-3=(216-x)*12*(1/12*106) 10 000=65536-x X=55536=D8 F0H TL0=0F0H TH0=0D8H 2、求T0的方式控制字TMOD: GATE C/T M1M0 GATE C/T M1M0 0 0 0 0 0 0 01 01H

  47. ORG 0000H LJMP MAIN ;跳转到主程序 ORG 000BH ;T0的中断入口地址 LJMP DVT0 ;转向中断服务程序 ORG 0100H MAIN:MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0D8H ;装入计数初值 MOV TL0,#0F0H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP $ ;等待中断 DVT0:CPL P1.0 ;P1.0取反输出 MOV TH0,#0D8H ;重新装入计数值 MOV TL0,#0F0H RETI ;中断返回 END

  48. ORG 0000H;T1 方式1 500US LJMP MAIN ORG 0100H MAIN:MOV TMOD,#10H LOOP:MOV TH1,#0FEH MOV TL1,#0CH SETB TR1 JNB TF1,$ CLR TF1 Sjmp LOOP END

  49. 【例2】若单片机晶振为12MHz,要求产生500μs的定时,试计算X的初值。 解:采用方式0: 500*10-6=(213-X)*12*1/fosc x=7692=1E0CH=1 1110 000 0 1100 F0H 0CH 即将F0H装入TH0,0CH装入TL0。 TMOD=GATE C/T M1M0 GATE C/T M1M0 0 0 0 0 0 0 00 00H 采用方式1: 500*10-6=(216-X )*12*1/fosc x=65036=FE0CH 即将FEH装入TH1,0CH装入TL1。 TMOD=GATE C/T M1M0 GATE C/T M1M0 0 0 01 0 0 0 0 10H

  50. 【例3】用定时器1,方式0实现1s的延时。 解:因方式0采用13位计数器,其最大定时时间为:8192*1μs=8192μs,因此,定时时间可选择为8ms,再循环125次;或者定时时间选择为5ms,再循环200次。本例我们选择前者。定时时间选定后,再确定计数值为5000,则定时器1的初值为 5*10-3 =(213-X)*12*1/fosc 5000=(8192-X)*12/12 X=8192-5000=3192 =0C78H = 0110 0 011 0001 1000 6 3 H ( TH1 ) 1 8 H(TL1) 又因采用方式0定时,故TMOD=00H。 TMOD=GATE C/T M1M0 GATE C/T M1M0 0 0 0 0 0 0 00

More Related