1 / 50

单片机原理及应用

单片机原理及应用. 第五章 中断与定时. §5.1 MCS-51 单片机的 中断系统. 一、单片机中断技术概述 1 、有关中断术语: 中断源、断点、中断服务程序 开中断、关中断、中断优先级 2 、 中断技术:中断技术是解决资源竞争实现资 源共享的方法 3 、 程序中断与调用子程序的区别: 在于是否可预知 4 、中断的功能 实现 CPU 与外设的速度匹配 实时控制 故障及时发现. §5.1 MCS-51 单片机的 中断系统. 二、中断源 5 个中断源,分高低两级中断优先级别

quinto
Download Presentation

单片机原理及应用

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. 单片机原理及应用 第五章 中断与定时

  2. §5.1 MCS-51单片机的中断系统 • 一、单片机中断技术概述 1、有关中断术语: 中断源、断点、中断服务程序 开中断、关中断、中断优先级 2、中断技术:中断技术是解决资源竞争实现资 源共享的方法 3、程序中断与调用子程序的区别:在于是否可预知 4、中断的功能 • 实现CPU与外设的速度匹配 • 实时控制 • 故障及时发现 yjia@zjip.com

  3. §5.1 MCS-51单片机的中断系统 • 二、中断源 5个中断源,分高低两级中断优先级别 1、外中断:2个,/INT0、/INT1 • 产生原因:P3.2、P3.3的引脚电平变化 • 可控制为:低电平或边沿(下降沿)触发中断 • CPU根据控制方式和P3.2、P3.3引脚电平置有关标志位 • 转向中断服务程序时,自动清除标志位 • 中断入口地址:0003H、0013H • 撤销方式: 边沿方式自动撤销;电平方式外加硬件电路撤销中断 yjia@zjip.com

  4. §5.1 MCS-51单片机的中断系统 • 二、中断源 5个中断源,分高低两级中断优先级别 2、定时器中断:2个,T0、T1 • 产生原因:计数溢出 • 可控制为:4种方式(计8192、65536、256、256 ) • CPU根据溢出置有关标志位 • 转向中断服务程序时,自动清除标志位 • 中断入口地址:000BH、001BH • 撤销方式:自动撤销 yjia@zjip.com

  5. §5.1 MCS-51单片机的中断系统 • 二、中断源 5个中断源,分高低两级中断优先级别 3、串行口中断:1 个 • 产生原因:串行口(P3.0、P3.1)接收或发送完一组(帧)数据。 • 可控制为:4种方式 • CPU置有关标志位 • 转向中断服务程序时,不自动清除标志位,软件清除 • 中断入口地址:0023H • 撤销方式:标志清除后撤销 yjia@zjip.com

  6. §5.1 MCS-51单片机的中断系统 • 三、单片机对中断源的管理 由IE寄存器控制中断是否被允许 由IP寄存器控制各中断源的中断优先级别 由TCON寄存器控制外中断的触发方式、外中断及定时器中断的标志位设置 由SCON寄存器控制串行口中断的工作方式及其标志设置。 yjia@zjip.com

  7. §5.1 MCS-51单片机的中断系统 • 三、单片机对中断源的管理 1、TCON:定时器控制寄存器 定时器 外中断 • TF:定时器溢出标志, TF=1时表示溢出 如:TF1=1,T1溢出; TF0=1,T0溢出 • TR:定时器启动标志, TR =1时启动 如:TR1=1,启动T1计数; TR0=1,启动T0计数 • IE:外中断标志位,IE=1,表示有外中断 • IT:外中断触发控制(0:低电平触发;1:边沿触发) yjia@zjip.com

  8. §5.1 MCS-51单片机的中断系统 • 三、单片机对中断源的管理 1、TCON:定时器控制寄存器 定时器 外中断 例:TCON=11001010B,即CAH 表示: yjia@zjip.com

  9. §5.1 MCS-51单片机的中断系统 • 三、单片机对中断源的管理 2、IE:中断允许寄存器 • EA:EA=1 ,允许CPU响应中断,中断总允许 • ES:ES=1 ,允许串行口中断 • ET1: ET1=1 ,允许定时器1中断 • EX1: EX1=1 ,允许外中断1中断 • ET0: ET0=1 ,允许定时器0中断 • EX0: EX0=1,允许外中断0中断 例如:若要允许T0产生中断,必须ET0=1且EA=1 yjia@zjip.com

  10. §5.1 MCS-51单片机的中断系统 • 三、单片机对中断源的管理 3、IP:中断允许寄存器 某位=1,对应中断源处于高优先级 • PS:PS=1 ,串行口中断处于高优先级 • PT1: PT1=1 ,定时器1中断处于高优先级 • PX1: PX1=1 ,外中断1中断处于高优先级 • PT0: PT0=1 ,定时器0中断处于高优先级 • PX0: PX0=1,外中断0中断处于高优先级 注意:复位后,IE=00H,IP=00H,表示。。。。 yjia@zjip.com

  11. §5.1 MCS-51单片机的中断系统 四、中断优先级的控制原则: MCS-51具有两级优先级,两级中断服务嵌套功能,控制原则是: • 低优先级的中断请求不能打断高优先级的服务,高优先级的中断请求可以打断低优先级的服务。 • 如果一个中断请求已被响应,则同级的中断服务将被禁止。 • 同级的中断同时出现,CPU响应中断的顺序是: 外中断0、T0、外中断1、T1、串行口 例如:若设置IP=12H,则CPU响应中断的顺序是: T0、串行口、外中断0、外中断1、T1 yjia@zjip.com

  12. §5.1 MCS-51单片机的中断系统 五、中断响应过程: 1、中断采样: 2、中断查询: 3、 中断响应:产生LCALL指令 • 中断响应时间:3~8个机器周期 (标志位查询) 1+(LCALL)2=3 (IE、IP、RET、RETI)2+(MUL、DIV)4+ (LCALL) 2=8 yjia@zjip.com

  13. §5.1 MCS-51单片机的中断系统 五、中断请求的撤销: 目的:使一次中断请求执行中断服务一次 1、定时中断请求:转向中断服务程序自动撤销 2、串行中断请求:在中断服务程序中使用指令撤销 软件撤销。 3、 边沿触发方式的外中断请求:转向中断服务程序自动撤销 4、电平触发方式的外中断请求:外加硬件电路撤销 P145 图6.2 yjia@zjip.com

  14. §5.2 MCS-51定时器/计数器的控制 • 一、定时方法种类: 1、软件定时、 2、硬件定时、 3、可编程定时器定时 • 二、定时和计数功能综述: 1、由两个16位的加法计数器(TH0TL0、TH1TL1)进行计数,通过对TH0TL0和TH1TL1的初值设置,可控制计数长度 2、定时功能是对内部机器周期计数,计数功能是对T0、T1引脚进行计数。 3、计数频率: 定时:一个机器周期,fosc/12 计数:外来信号,频率≤ fosc/24 yjia@zjip.com

  15. §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 通过控制TCON 、IE、 IP、TMOD寄存器达到目的 1、 TCON 、IE 、 IP有关位的控制意义 yjia@zjip.com

  16. §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 1、IP、IE、TCON有关位的控制意义 2、TMOD寄存器介绍 T0 T1 • GATE:门控位 GATE=0,当TR=1时,启动定时器,软启动 GATE=1,当TR=1且INT=1时,启动定时器,硬启动 • C/T=1,计数功能; C/T=0,定时功能。 • M1M0:定时器工作方式,00~11指定工作方式0~3 yjia@zjip.com

  17. §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 1、IP、IE、TCON有关位的控制意义 2、TMOD寄存器介绍 • 3、初始化定时器/计数器的步骤: • 设置TMOD,控制定时器的工作方式 • 设置TH、TL计数初值 • 设置IE、IP yjia@zjip.com

  18. §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 4、计数初值X的计算: • 计数方式:M-X=要计的数 例如:使用T0工作于方式1计数,每计1000就溢出 求计数初值 65536-X=1000,得X=64536D=FC18H 某种方式下最长计数值 方式0:M=8192 方式1:M=65536 方式2、3:M=256 系统要求 yjia@zjip.com

  19. §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 4、计数初值X的计算: • 定时方式:(M-X)×机器周期=要定时的时间 例如:使用T1工作于方式1定时10mS,若fosc=6MHz, 则计数初值=? ( 65536-X)×2uS=10mS,得X=60536D=EC78H 某种方式下最长计数值 方式0:M=8192 方式1:M=65536 方式2、3:M=256 系统要求 系统给出 yjia@zjip.com

  20. §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 1、IP、IE、TCON有关位的控制意义 2、TMOD寄存器介绍 3、初始化定时器/计数器(T/C)的步骤 • 4、定时器/计数器(T/C)的使用步骤 • 初始化T/C(TMOD、THTL、IE、IP) • 启动T/C:SETB TR • 查询方式:判TF,若=1,则转相应处理 中断方式:当TF=1时硬件自动转向中断入口地址,在 中断入口地址处按排相应处理程序即可 yjia@zjip.com

  21. 初始化T/C 启动T/C TF=1? N Y 清TF位 重送TH、TL 溢出处理 §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 4、定时器/计数器(T/C)的使用步骤 • 初始化T/C • 启动T/C:SETB TR • 查询方式:判TF,若=1,则转相应处理 yjia@zjip.com

  22. 初始化T/C 重送TH、TL 启动T/C 溢出处理 (其它处理),并等待中断 中断返回 §5.2 MCS-51定时器/计数器的控制 三、定时器/计数器的控制: 4、定时器/计数器(T/C)的使用步骤 • 初始化T/C • 启动T/C:SETB TR • 中断方式:当TF=1时硬件自动转向中断入口地址,在中断入口地址处按排相应处理程序即可 主程序: 中断服务程序: yjia@zjip.com

  23. §5.3 MCS-51定时器/计数器工作方式 • 一、方式0 1、13位计数器:TH8TL5 2、计数长度:1~8192 定时长度:(1~8192)×机器周期 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式0产生500uS的等宽正方波连续脉冲,问计数初值应为多少? yjia@zjip.com

  24. §5.3 MCS-51定时器/计数器工作方式 • 一、方式0 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式0产生500uS的等宽正方波连续脉冲,问计数初值应为多少? 解:(1)方式0最大的计数长度M=8192 (2)当fosc= 6MHz, 机器周期为2uS 设计数初值为X,则(8192-X)× 2uS =250 Us 解得X=8067D=11111100,00011B 所以,TH1=FCH,TL1=03H yjia@zjip.com

  25. §5.3 MCS-51定时器/计数器工作方式 • 二、方式1 1、16位计数器:TH8TL8 2、计数长度:1~65536 定时长度:(1~65536)×机器周期 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式1产生500uS的等宽正方波连续脉冲,并从P1.0输出,试编程。 yjia@zjip.com

  26. §5.3 MCS-51定时器/计数器工作方式 • 二、方式1 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式1产生500uS的等宽正方波连续脉冲,并从P1.0输出,试编程。 解:(1)计算计数初值 设计数初值为X,则(65536-X)× 2uS =250 uS 解得X=65411D=11111111,10000011B 所以,TH1=FFH,TL1=83H (2)TMOD、IE、IP的确定 (3)查询方式编程、中断方式编程 yjia@zjip.com

  27. §5.3 MCS-51定时器/计数器工作方式 • 二、方式1 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式1产生500uS的等宽正方波连续脉冲,并从P1.0输出,试编程。 解:(2)TMOD、IE、IP的确定 TMOD:0001,XXXX 即10H IE:查询方式:00H; 中断方式:1XX0,1000 即88H IP:00H yjia@zjip.com

  28. (3)查询方式编程 MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#83H MOV IE,#00H MOV IP,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP LOOP1:MOV TH1,#0FFH MOV TL1,#83H CPL P1.0 AJMP LOOP 初始化T/C 启动T/C TF1=1? N Y 清TF1位 重送TH1、TL1 溢出处理 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式1产生500uS的等宽正方波连续脉冲,并从P1.0输出,试编程。 yjia@zjip.com

  29. (3)中断方式编程 MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#83H MOV IE,#88H MOV IP,#00H SETB TR1 SJMP $ T1PRO:MOV TH1,#0FFH MOV TL1,#83H CPL P1.0 RETI 初始化T/C 重送TH1、TL1 启动T/C 溢出处理 (其它处理),并等待中断 中断返回 主程序: 中断服务程序: yjia@zjip.com

  30. (3)中断方式编程 ORG 0000H AJMP MAIN ORG 001BH AJMP T1PRO ORG 0030H MAIN: MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#83H MOV IE,#88H MOV IP,#00H SETB TR1 SJMP $ T1PRO:MOV TH1,#0FFH MOV TL1,#83H CPL P1.0 RETI yjia@zjip.com

  31. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 1、8位计数器:TL8,TH8用来保存TL8的初值 2、计数长度:1~256 定时长度:(1~256)×机器周期 例:用定时器1方式2实现计数,每计100次,累加器加1,试编程。 yjia@zjip.com

  32. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 例:用定时器1方式2实现计数,每计100次,累加器加1,试编程。 解:(1)计算计数初值 设计数初值为X,则:256-X=100 解得X=156D=9CH 所以,TH1=9CH,TL1=9CH (2)TMOD、IE、IP的确定 (3)查询方式编程、中断方式编程 yjia@zjip.com

  33. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 例:用定时器1方式2实现计数,每计100次,累加器加1,试编程。 解:(2)TMOD、IE、IP的确定 TMOD:0110,XXXX 即60H IE:查询方式:00H; 中断方式:1XX0,1000 即88H IP:00H yjia@zjip.com

  34. (3)查询方式编程 MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H MOV IP,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP LOOP1: INC A AJMP LOOP 初始化T/C 启动T/C TF1=1? N Y 清TF1位 重送TH1、TL1 溢出处理 例1:用定时器1方式2实现计数,每计100次,累加器加1,试编程。 yjia@zjip.com

  35. (3)中断方式编程 MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#88H MOV IP,#00H SETB TR1 SJMP $ T1PRO: INC A RETI 初始化T/C 重送TH1、TL1 启动T/C 溢出处理 (其它处理),并等待中断 中断返回 主程序: 中断服务程序: yjia@zjip.com

  36. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 例2:使用定时器0工作于方式2产生100uS的定时,从P1.0输出200uS的等宽正方波连续脉冲,单片机晶体振荡频率为6MHz,试编程。 解:(1)计算计数初值 设计数初值为X,则(256-X)× 2uS =100 uS 解得X=206D=CEH 所以,TH0=CEH,TL0=CEH (2)TMOD、IE、IP的确定 (3)查询方式编程、中断方式编程 yjia@zjip.com

  37. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 例2:使用定时器0工作于方式2产生100uS的定时,从P1.0输出200uS的等宽正方波连续脉冲,单片机晶体振荡频率为6MHz,试编程。 解:(2)TMOD、IE、IP的确定 TMOD: XXXX , 0010 即02H IE:查询方式:00H; 中断方式:1XX0,0010 即82H IP:00H yjia@zjip.com

  38. (3)查询方式编程 MOV TMOD,#02H MOV TH1,#0CEH MOV TL1,#0CEH MOV IE,#00H MOV IP,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP LOOP1:CPL P1.0 AJMP LOOP 初始化T/C 启动T/C TF0=1? N Y 清TF0位 重送TH0、TL0 溢出处理 例2:使用定时器0工作于方式2产生100uS的定时,从P1.0输出200uS的等宽正方波连续脉冲,单片机晶体振荡频率为6MHz,试编程。 yjia@zjip.com

  39. (3)中断方式编程 MOV TMOD,#02H MOV TH1,#0CEH MOV TL1,#0CEH MOV IE,#82H MOV IP,#00H SETB TR1 SJMP $ T1PRO:CPL P1.0 RETI 初始化T/C 重送TH0、TL0 启动T/C 溢出处理 (其它处理),并等待中断 中断返回 主程序: 中断服务程序: yjia@zjip.com

  40. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形方波,试编程。 • 思路: • 即所求矩形方波高电平为40uS,低电平为360uS。 • 使T0定时40uS。当P1.0为高电平时,每定时时间到使P1.0变为低电平;当P1.0为低电平时,每定时时间到使R7减1,(R7初值为9),当R7减到0时,使P1.0变为高电平。 yjia@zjip.com

  41. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形方波,试编程。 解: (1)计算计数初值 设计数初值为X,则(256-X)× 1uS =40uS 解得X=216D=D8H 所以,TH0=D8H,TL0=D8H (2)TMOD、IE、IP的确定 (3)查询方式编程、中断方式编程 yjia@zjip.com

  42. §5.3 MCS-51定时器/计数器工作方式 • 三、方式2— 8位重装计数初值 例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形方波,试编程。 解:(2)TMOD、IE、IP的确定 TMOD: XXXX , 0010 即02H IE:查询方式:00H; (中断方式:1XX0,0010 即82H) (IP:00H) yjia@zjip.com

  43. 溢出处理: 初始化T/C、R7 启动T/C TF0=1? N P1.0=1? Y Y N 清TF0位 P1.0=0 R7-1=0? N 重送TH0、TL0 Y R7=09H 溢出处理 P1.0=1 例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形方波,试编程。 yjia@zjip.com

  44. (3)查询方式编程 MOV R7,#09H MOV TMOD,#02H MOV TH1,#0CEH MOV TL1,#0CEH MOV IE,#00H MOV IP,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP 例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形方波,试编程。 • 溢出处理: LOOP1:JB P1.0,LOOP2 DJNZ R7,LOOP3 MOV R7,#09H SETB P1.0 LOOP3: AJMP LOOP CLR P1.0 AJMP LOOP3 yjia@zjip.com

  45. §5.3 MCS-51定时器/计数器工作方式 • 四、方式3 特点: • T0:被拆分成两个独立的8位计数器TH0、TL0,TL0能作计数器用也能作定时器用,TH0只能作定时器用,TH0占用了T1的溢出标志TF1和启动控制位TR1。 • T1:当T0工作于方式3时,T1可工作于方式0、1、2,用作波特率发生器用。 yjia@zjip.com

  46. §5.3 MCS-51定时器/计数器工作方式 • 五、定时器/计数器的应用 例1:用51定时器/计数器0工作于方式1产生时钟计时,每秒到给内部RAM的SEC地址加1,每60秒到给内部RAM的MIN地址加1,并使SEC清0。fosc=6MHz 解: (1)计算计数初值 (2)TMOD、IE、IP的确定 (3)查询方式编程、中断方式编程 yjia@zjip.com

  47. §5.3 MCS-51定时器/计数器工作方式 • 五、定时器/计数器的应用 例1:用51定时器/计数器0工作于方式1产生时钟计时,每秒到给内部RAM的SEC地址加1,每60秒到给内部RAM的MIN地址加1,并使SEC清0。fosc=6MHz 思路:设T0工作于方式1定时100mS,每定时时间到R7减1(R7的初值为10),当R7=0时即1秒到 (1)计算计数初值 计数初值为X,则(65536-X)× 2uS = 100mS 解得X=15536D=3CB0H 所以,TH0=3CH,TL0=B0H yjia@zjip.com

  48. §5.3 MCS-51定时器/计数器工作方式 • 五、定时器/计数器的应用 例1:用51定时器/计数器0工作于方式1产生时钟计时,每秒到给内部RAM的SEC地址加1,每60秒到给内部RAM的MIN地址加1,并使SEC清0。fosc=6MHz 解:(2)TMOD、IE、IP的确定 TMOD:XXXX,0001 即01H IE:中断方式:1XX0,0010 即82H IP:00H yjia@zjip.com

  49. 主程序流程 中断服务流程 重送TH0、TL0 初始化T/C 初始化R7 初始化SEC、MIN N R7-1≠0? Y (SEC)=(SEC)+1 启动T/C N (SEC)=60? (其它处理),并等待中断 Y (SEC)=0 (MIN)=(MIN)+1 中断返回 程序流程: yjia@zjip.com

  50. 主程序 ORG 0000H AJMP STR ORG 000BH AJMP T0P ORG 0030H STR: MOV R7,#10 MOV SEC,#00H MOV MIN,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV IE,#82H MOV IP,#00H SETB TR0 SJMP $ 中断服务流程 T0P:MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,T0P0 INC SEC CJNE SEC,#60,T0P0 MOV SEC,#00H INC MIN T0P0: RETI 程序: yjia@zjip.com

More Related