1 / 69

第 章 定时 / 中断系统

第 章 定时 / 中断系统. 本章内容. 定时器及其应用 中断源和中断标 志 单片机中断系统. 定时器 / 计数器. 本章内容: 定时 / 计数器的结构与工作原理 定时 / 计数器的方式寄存器与控制寄存器 定时 / 计数器的 4 种工作方式 定时器应用举例. 一、 MCS-51 单片机定时器/计数器组成: 定时器 / 计数器 0(T0) : 16 位的加计数器( TH0,TL0 ) 定时器 / 计数器 1(T1) : 16 位的加计数器 (TH1,TL1) 定时器方式寄存器: TMOD (用于设定定时器工作方式)

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. 定时器/计数器 • 本章内容: • 定时/计数器的结构与工作原理 • 定时/计数器的方式寄存器与控制寄存器 • 定时/计数器的4种工作方式 • 定时器应用举例

  3. 一、MCS-51单片机定时器/计数器组成: • 定时器/计数器0(T0):16位的加计数器(TH0,TL0) • 定时器/计数器1(T1):16位的加计数器(TH1,TL1) • 定时器方式寄存器:TMOD(用于设定定时器工作方式) • 定时器控制寄存器:TCON(用于控制定时器启动/停止) • 二、定时器/计数器的功能 • 对外部输入信号的计数功能。芯片引脚P3.4 、P3.5 外来脉冲进行计数。 • 定时功能。定时器/计数器的定时功能也是通过计数实现的,对机器周期计数。

  4. 定时器/计数器的控制 • 定时器/计数器的控制主要是通过以下几个寄存器实现的: • TCON---定时器/计数器控制寄存器 • TMOD---定时器/计数器工作方式控制寄存器 • IE ---中断允许控制寄存器

  5. GATE —— 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制; GATE = 1 启动受/INT0 或/INT1 的控制。 C/T —— 外部计数器 / 定时器方式选择位 C//T = 0 定时方式; C //T = 1 计数方式。 M1M0—— 工作模式选择位(编程可决定四种工作模式)。 TMOD 89H

  6. T N个方波 = 0 ——定时; = 1 —— 对外计数。 定时:fosc / 12 = 1 /(12/fosc)= 1 / T 波形等间隔,次数已定,时间确定 即对机器周期进行计数。 左图定时时间为 N*T 计数:脉冲不等间隔。 每个下降沿计数一次 确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。

  7. TR0 —— 定时 / 计数器0运行控制位。 软件置位,软件复位。 TR1 —— 定时 / 计数器1运行控制位。(用法与TR0类似) TCON 88H TF0、TF1 分别是定时、计数器T0、T1的溢出标志位。

  8. (1)定时/计数器的工作方式 • M1M0—— 工作模式选择位(编程可决定四种工作模式) • 0 0 13位定时/计数器 模式0 • 0 1 16位定时/计数器 模式1 • 0 8 位定时/计数器(自动重装初值) 模式2 • 1 1 T0 8位定时/计数 模式3 • 1 1 T1 停止工作 模式3

  9. 1)工作方式0 T0的等效逻辑结构

  10. 2)工作方式1 T0的等效逻辑结构

  11. 3)工作方式2 T0的等效逻辑结构

  12. 4)工作方式3

  13. 定时/计数器的初始化 定时/计数器初始化就是它运行前的一些准备工作: (1)确定工作方式——对TMOD赋值; (2)预置定时计数器中计数的初值——直接写入TH和TL; (3)根据需要开放定时器/计数器的中断——对IE位赋值; (4)启动定时器/计数器; 如:任务中的SETB TR0 指令

  14. 初值的计算方法 X=M-计数值 M是定时器的最大计数值。视工作方式不同而不同。 工作方式0: 13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。 工作方式1: 16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。 工作方式2和工作方式3:都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。

  15. 预置值计算: 用最大计数量减去需要的计数次数即可。 通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。 首先我们看一下下面的程序段。 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#4CH SETB TR0 以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。

  16. 定时器应用举例 定时器是单片机应用系统中的重要部件,利用它可以简化程序设计、简化外围电路和减轻CPU负担。以下是应用举例: • 方式0、方式1的应用 • 方式2的应用

  17. 实例一:定时器/计数器实现固定时间的定时 • 题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周期为2ms,占空比为1:1的方波信号。 • 解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生定时,每隔1ms将P1.0取反即可。 • 编程步骤: • 计算TMOD的值 •        由于GATE=0;M1M0=00;C/T=0; •        所以 (TMOD)=00H • 计算初值(单片机振荡频率为12MHZ) •  所需要的机器周期数: • n=(1000us/1us)=1000 • 计数器的初始值: • X=8192-1000=7192 • 所以:(TH0)=0E0H,(TL0)=18H

  18. 程序清单 • ORG 0000H • LJMP MAIN • ORG 0100H • MAIN:MOV SP,#50H ;开辟堆栈 • MOV TMOD,#00H ;工作方式设置 • MOV TH0,#0E0H ;初始值设置 • MOV TL0,#18H • SETB TR0 ;运行T0 • DEL:JBC TF0,REP • AJMP DEL • REP:CPL P1.0 ;定时到,输出取反 • MOV TH0,#0E0H ;重新加载初战值 • MOV TL0,#18H • AJMP DEL • END

  19. 实例二:利用方式1定时 • 题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟、占空比为1:1的方波信号。 • 解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时,每隔1分将P1.0取反即可。由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次,可以实现1分钟定时。 • 编程步骤: • 1、计算TMOD的值 •        由于:GATE=0;M1、M0=0、1;C/T=0; •        所以:(TMOD)=10H • 2、计算初值(单片机的振荡频率为12MHZ) •  所需要的机器周期数: • n=(50000us/1us)=50000 • 计数器的初始值:X=65536-50000=15536 • 所以:(TH0)=3CH;(TL0)=0B0H

  20. 程序清单 • ORG 0000H • LJMP MAIN • ORG 0100H • MAIN:MOV SP,#50H ; 开辟堆栈 • MOV TMOD,#10H ; 工作方式设置 • MOV TH1,#3CH ; 初始值设置 • MOV TL1,#0B0H • SETB TR1 ; 运行T0 • MOV 20H,#20 • MOV 21H,#60 • LP1:JBC TF0,LP2 • SJMP LP1 • LP2: MOV TH1,#3CH ;初始值重新设置 • MOV TL1,#0B0H • DJNZ 20H,LP1 • MOV 20H,#20 • DJNZ 21H,LP1 • MOV 21H,#60 • CPL P1.0 ;定时到,输出取反 • SJMP LP1 • END

  21. 例5.4 用单片机定时器/计数器设计一个秒表,由P1、P0口连接两个七段数码管。计满60s后从头开始,依次循环。 解:定时器T0工作于定时方式1,产生1s的定时,程序类似于实训5步骤1),这里不再重复。定时器T1工作在方式2,当1s时间到,由软件复位T1(P3.5)脚,产生负跳变,再由定时器T1进行计数,计满60次(1分种)溢出,再重新开始计数。 按上述设计思路可知: 方式寄存器TMOD的控制字应为:61H 定时器T1的初值应为:256  60 = 196 = C4H

  22. 其源程序可设计如下: ORG 0000H MOV TMOD,#61H;T0方式1定时,T1方式2计数 MOV TH1,#0C4H ;T1置初值 MOV TL1,#0C4H SETB TR1 ;启动T1 DISP: MOV A,#00H ;计数显示初始化 MOV P1,A CONT: ACALL DELAY CLR P3.5 ;T1引脚产生负跳变 NOP NOP SETB P3.5 ;T1引脚恢复高电平 INC A ;累加器加1 DA A ;将16进制数转换成BCD数 MOV P1,A ;点亮发光二极管

  23. JBC TF1,DISP ;查询T1计数溢出 SJMP CONT ;60s不到继续计数 DELAY: MOV R3,#14H ;置50ms计数循环初值 MOV TH0,#3CH ;置定时器初值 MOV TL0,#0B0H SETB TR0 ;启动T0 LP1: JBC TF0,LP2 ;查询计数溢出 SJMP LP1 ;未到50ms继续计数 LP2:MOV TH0,#3CH ;重新置定时器初值 MOV TL0,#0B0H DJNZ R3,LP1;未到1s继续循环 RET ;返回主程序 END

  24. 测量每1秒钟之内的按键按下次数 要求: • 每秒的次数用发光管显示出来 • 每秒钟按键的按下次数不超过255次

  25. 工作原理 • 实现的方法:利用T0计数器对从T0输入的脉冲进行计数,利用T1工作于定时。每定时达到1秒钟,取出计数器的值进行显示。由于每秒钟按键的按下次数不超过255次,所以只需要显示TL0的内容即可。 • 步骤: • 由于定时器的最大定时时间不能够达到1秒钟,我们设定T1定时100mS,每10次取一次计数值。 • 设定TMOD,TH1,TL1的内容,(fosc)=6MHz • 所以:(TMOD)=51H • (TH1)=3CH • (TL1)=0B0H

  26. 程序清单 • ORG 0000H • LJMP MAIN • ORG 001BH • LJMP SER • MAIN: MOV TMOD,#51H • MOV TH1,#3CH • MOV TL1,#0B0H • MOV TL0,#00H • MOV TH0,#00H • SETB EA • SETB TR0 • SETB TR1 • SETB ET1 • MOV P1,#00H • SJMP $ 中断程序的主程序和中断服务程序的布局 主程序 T0和T1初始化 T1定时,T0计数 启动T0计数,T1定时,开T1中断

  27. 中断程序清单 关T0和T1 重新对T1赋值 • SER:CLR TR0 • CLR TR1 • MOV TH1,#3CH • MOV TL1,#0B0H • DJNZ R1,#10,LL • MOV R1,#10 • MOV A,TL0 • MOV P1,A • MOV TH0,#00H • MOV TL0,#00H • LL: SETB TR0 • SETB TR1 • RETI • END 判断是否到10次 取值显示 清除T0的计数值 开T0和T1,返回

  28. 测量在(P3.2)端出现的正脉冲宽度 T P3.2

  29. 工作原理 • 实质:利用门控制位GATE实现对定时器/计数器的启/停控制,来测量脉冲宽度。 • 当GATE为1,TR1(TR0)为1时,只有INT1(INT0)引脚输入高电平时,T1(T0)才允许计数。 • 当GATE为0,只要TR1(TR0)为1时,T1(T0)就允许计数。 利用GATE=1时的这个功能,可测试INT1(P3.3)和INT0(P3.2)上正脉冲的宽度。

  30. 开始 T0初始化(TMOD,TL0,TH0赋值) N P3.2=0? Y 启动T0工作 N N P3.2=1? P3.2=0? Y Y 停止T0工作 取出TH0和TL0的值送入30H和31H 结束 流程图:

  31. 程序如下: • ORG 4000H • MOV TMOD,#09H ;定时器T0模式1定时 • MOV TH0, #00H ;设定初值 • MOV TL0, #00H ; • JB P3.2, $ ;等待INT1变低 • SETB TR0 ;启动T1 • JNB P3.2, $ ;等待INT1变高 • JB P3.2, $ ;开始计数,等待变低 • CLR TR0 ;停止计数 • MOV 30H,TH1 ;取出T1中的高八位 • MOV 31H,TL1 ;取出T1中的低八位 • SJMP $ • END 对T0进行初始化 T0计数过程 取计数值

  32. 第章中断系统 Single Chip Microcomputer 本章内容 中断的基本概念 MCS-51的中断系统 中断源和中断标志 中断的允许和优先权 中断的处理过程 外部中断源的扩展 中断的应用

  33. 中断的基本概念 • 日常生活中断的例子 • 单片机中的中断概念 • 中断技术的优点

  34. 日常中断的例子 你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。 返回

  35. 计算机中的中断概念 • 中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。 • 将能引起中断的事件称为中断源。 • CPU现行运行的程序称为主程序。 • 处理随机事件的程序称为中断服务子程序。 中断过程动画演示 返回

  36. 中断技术的优点 • 分时操作 • ——CPU可以同多个外设“同时”工作 • 实时处理 • ——CPU及时处理随机事件 • 故障处理 • ——电源掉电、存储出错、运算溢出

  37. MCS-51中断系统 • 中断源 • 中断标志 • 中断允许 • 中断优先级 • MCS-51中断系统结构 • 中断寄存器

  38. 外部输入中断源INT0(P3.2) INT0 或 或 T0 • 外部输入中断源INT1(P3.3) INT1 T1 • 片内定时器T0的溢出 • 片内定时器T1的溢出 串行口 • 片内串行口发送或接收中断源 MCS-51的中断系统——中断源 8051单片机有5个中断请求源: 单片机

  39. TI RI MCS-51的中断系统——中断标志 CPU 中断源 中断标志位 IE0 INT0 TF0 T0 主程序 IE1 INT1 TF1 T1 串口 • 每一个中断源都有相应的中断标志位; • 某一个中断源申请中断,相应中断标志位置1。

  40. TI RI MCS-51的中断系统——中断允许 CPU 中断源 中断标志位 中断允许 IE0 INT0 EX0 TF0 ET0 T0 主程序 IE1 INT1 EX1 TF1 T1 ET1 串口 ES EA • EA——总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断; • 某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。

  41. TI 低 SI MCS-51的中断系统——中断优先级 CPU 自然优先级 中断源 中断标志位 中断允许 优先控制 IE0 INT0 PX0 EX0 TF0 PT0 ET0 T0 主程序 IE1 PX1 INT1 EX1 TF1 T1 PT1 ET1 串口 PS ES EA • 单片机中有两个中断优先级,即高优先级中断和低优先级中断,前者优先权高于后者(在程序中设置,相应位=1,为高优先级); • 同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件形成,无法改变)。

  42. IT0=0 INT0 INT1 IT0=1 IT1=0 IT1=1 MCS-51的中断系统结构图 TCON IE IP 自然优先级 高级中断请求 PX0 IE0 EX0 PT0 TF0 T0 ET0 矢量地址 PX1 IE1 EX1 PT1 TF1 T1 自然优先级 ET1 低级中断请求 TI TXD PS RI RXD ES EA SCON 中断标志位 中断优先级 中断源允许 总允许 矢量地址

  43. TF1 TF0 IE1 IT1 IE0 IT0 7 6 5 4 3 2 1 0 TCON寄存器——T0和T1控制寄存器 TCON T1溢出中断标志(TCON.7): T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。

  44. TF1 TF0 IE1 IT1 IE0 IT0 7 6 5 4 3 2 1 0 TCON寄存器——T0和T1控制寄存器 TCON 88H • 外部中断INT1触发方式控制位(TCON.2): • IT1=0,电平触发方式 • IT1=1, 下降沿触发方式 外部中断INT1中断标志位(TCON.3) : IE1=1,外部中断1向CPU申请中断 • 注意:该寄存器可以位寻址。

  45. TI RI 7 6 5 4 3 2 1 0 SCON寄存器——串行口控制寄存器 SCON 98H • TI (SCON.1)——串行发送中断标志。 • RI (SCON.0)——串行接收中断标志。 • 注意:该寄存器可以位寻址。 返回

  46. EA ES ET1 EX1 ET0 EX0 7 6 5 4 3 2 1 0 IE寄存器——中断允许寄存器 IE A8H 例:允许定时器T0中断: SETB EA SETB ET0 或 MOV IE,#82H • 注意:该寄存器可以位寻址。 

  47. PS PT1 PX1 PT0 PX0 7 6 5 4 3 2 1 0 IP寄存器——中断优先级寄存器 IP B8H • 51单片机有两个中断优先级——高级和低级 • 专用寄存器IP为中断优先级寄存器,用户可用软件设定 • 相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级 • 系统复位时,均为低优先级 • 该寄存器可以位寻址

  48. 响 断 中 中 断 返 回 中断处理过程 • 中断处理过程分为三个阶段:中断响应、中断处理和中断返回。 • 中断响应 • 中断处理(又称中断服务) • 中断返回 • 中断请求的撤除

  49. 响 断 中 中断响应 中断服务子程序的入口地址 • 中断响应:在满足CPU的中断响应条件之后,CPU对中断源中断请求予以处理。 • 中断响应过程: • 保护断点地址; • 把程序转向中断服务程序的入口地址(通常称矢量地址)。 断点地址 • 特别注意:这些工作是硬件自动完成的! 

More Related