1 / 33

第五章 MCS-51 定时 / 计数器、串行口及中断系统

第五章 MCS-51 定时 / 计数器、串行口及中断系统. 本章重点讨论:. 1. 定时 / 计数器;. 2. 全双工串行口;. 3. 中断系统。. 5.1 MCS-51 定时 / 计数器. 5.1.1 定时器 / 计数器的基本概念 5.1.2 MCS-51 定时 / 计数器的组成 5.1.3 定时器 / 计数器的控制方法 5.1.4 定时器、计数器的初始化 5.1.5 举例 5.1.6 定时计数器总结. 计数概念的引入 1.

isaac-cox
Download Presentation

第五章 MCS-51 定时 / 计数器、串行口及中断系统

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. 第五章MCS-51定时/计数器、串行口及中断系统 本章重点讨论: 1. 定时/计数器; 2. 全双工串行口; 3. 中断系统。

  2. 5.1 MCS-51定时/计数器 5.1.1 定时器/计数器的基本概念 5.1.2 MCS-51定时/计数器的组成 5.1.3 定时器/计数器的控制方法 5.1.4 定时器、计数器的初始化 5.1.5 举例 5.1.6 定时计数器总结

  3. 计数概念的引入1 生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等。再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。

  4. 计数概念的引入2 石油工业中,也有大量计数的问题。 比如如何确定油层的深度?通常采用的方法是在裸眼井完钻测井以后,需要下金属套管固井,每一根套管的长度是一样的,比如10米,在每根套管的接箍处都打上磁标记。 下完套管就要用水泥固井,然后套管就被永久埋在地下。为了产出石油,下一步就是在测井以后确定的层位处射孔。这时在射孔枪的上面就通过电缆接了一根磁定位仪器,这个仪器可以测量到套管接箍上的磁标记,并且可以计量磁标记的数目,因此就可以确定射孔枪的目标油层的深度。当然10m以内的深度是靠地面测量电缆长度确定的。

  5. 计数器的容量1 从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。 那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65535。

  6. 计数器的容量2 一般的下井电缆长度在7000m,根据井眼长度的不同还有更长或更短的电缆,可以依据需要选取。 因此,计数器的容量就是由电缆长度决定的。

  7. 计数与定时的关系 • 8031中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如学校的打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢? • 一个闹钟,将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次后闹响,所以时间就转化为秒针走的次数,也就是计数的次数了。可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。 • 因此只要计数脉冲的间隔相等,计数脉冲的周期已知,则计数值就代表了时间的流逝。

  8. 溢出 • 让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。 • 水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。

  9. 溢出2 如果电缆的最大长度为7000m ,那么磁标记计数器计满700以后,就要产生一个溢出信号,这个溢出信号意味着电缆已经放到头了,需要地面的缆车立即停止工作,否则可能造成射孔枪落井的事故。 计数器溢出后会引发什么事件,我们下次课再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1?

  10. 任意定时及计数的方法 刚才已研究过,MCS-51计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。问题是在现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢? • 提示:如果是一个空的盆要10000滴水滴进去才会满,如果在开始滴水之前就先放入一勺水,还需要10000滴吗? • 我们采用预置数的方法,要计数100次,那就先放进65436,再来100个脉冲,不就到了65536了吗。 • 定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒。如果现在只要10毫秒定时怎么办? • 10个毫秒为10000个微秒,所以,只要在计数器里面放进65536-10000=55536就可以了。

  11. OV Set D0 G0 [1] D1 G1 [2] [ …… ] .. .. [32768] D15 G15 图5-1 数字电路中计数器的逻辑图 MCS-51中的16位可预置加法计数器

  12. 输 入 输 出 set cp D0 D1 …. D15 G0 G1 …. G15 0 × × × × × × × 0 0 0 0 1 0 × ↑ d0 d1 …. d15 d0 d1 …. d15 1 1 1 ↑ × × × × 计 数 表5-1 计数器的真值表 计数器真值表

  13. T1 5.1.2 MCS-51定时/计数器的组成

  14. T0由两个8位的寄存器TH0和TL0组成 • T1由两个8位的寄存器TH1和TL1组成 • T0和T1都是16位的可预置加1计数器 • T0和T1都是16位的可编程定时/计数器 与定时/计数器相关的特殊功能寄存器 特殊功能寄存器 : TH0 TH1 存放计数初值的高8位 TL0 TL1 存放计数初值的低8位 TMOD (定时器工作模式寄存器) TCON (定时器控制寄存器 )

  15. 5.1.3 定时器/计数器的控制方法 定时器/计数器的工作由TCON和TMOD控制。由软件把控制字写入TCON和TMOD,用来设置T0和T1的工作方式和控制功能。当8051系统复位时,TCON和TMOD所有位都被清0。

  16. 一.工作模式控制寄存器—TMOD(89H) 控 制 T 控 制 T 1 0 GATE M M GATE M M C/T C/T 89H 1 0 1 0 M M 方 式 1 0 和T 类同 0 00 方式0 01 方式1 10 方式2 11 方式3 0 定时器模式 1 计数器模式 与INT 无关 0 0 与INT 有关 1 0 定时器工作模式寄存器TMOD

  17. 二.定时器控制寄存器—TCON(88H) 定时器工作模式寄存器TCON

  18. M1和M0 工作方式选择位 这两位可形成四种编码,对应四种工作方式: M1 M0 方式 功 能 描 述 0 0 0 为13位定时器/计数器,TL存放低5位,TH存高8位 0 1 1 为16位定时器/计数器 1 0 2 常数自动装入8位定时器/计数器 1 1 3 仅适于T0,两个8位定时器/计数器 三.定时器/计数器的四种工作模式

  19. 方式0 高8位和低5位的一个13位计数器的运行方式,见下图. 当TL1的低5 位溢出时,向TH1进位,而TH1溢出(回零)时向TF1标志进位(硬件置位TF1),并申请中断。还可以通过查询TF1是否置位来判断TH1是否回零溢出。

  20. 启动控制B=TR1A =TR1(INT1+/GATE ) GATE TRx INTx 启动情况 0 0 X 停止 0 1 X 启动定时/计数 1 0 X 停止 1 1 启动定时/计数 1 1 停止 其中: 1 表示高电平,0表示低电平,X表示任意状态

  21. 方式1 方式1是一个16为定时器/计数器,见下图。 方式1的结构几乎与方式0完全一样,唯一的差别是:方式1中的TH1(TH0)和TL1(TL0) 均是8位的,构成16位计数器。

  22. 方式2 在方式2时,T/C被拆成一个8位的寄存器TH1(TH0)和一个8位计数器TL1(TL0),两者构成可以自动重装载的8位T/C,如图所示。

  23. 每当它计满回零时 1. 将溢出标志TF1置“1”,若中断开放,向CPU发出溢出中断请求; 2. 从TH1(或TH0)中重新获得初值并启动计数; 也就是CPU 自动将TH1(或TH0)中存放的初值重新装回到TL1(或TL0),并在此初值的基础上对TL1(或TL0)开始新一轮计数,周而复始,直到下停止计数或更改工作方式命令为止。?

  24. 方式3 方式3只适合于定时器T0,TH0和TL0按两个独立的8位计数器工作.

  25. 5.1.4 定时器、计数器的初始化 1. 初始化的步骤 MCS-51内部的T/C是可编程的,其工作方式和模式通过程序进行设定和控制,称为对T/C的初始化。初始化的步骤是: 1) 确定工作方式,即根据题目要求先给TMOD送一个方式控制字。 2)计算计数初值/定时初值,并写入TH0、TL0或 TH1、 TL1中。 3)根据需要,置位EA使CPU开放中断,同时置位ETx允许T/C中断。IP设定中断优先级。 4)给TCON送命令控制字,即置位TRx启动T/C计数。

  26. 2.计数器初值的计算 T/C在计数模式下,计数之前必须给它的计数器TH0、TL0或TH1、TL1选送计数初值。T/C的计数器是在计数初值的基础上加1计数的,当计数器回“0”时自动产生溢出,置位TFx中断标志,向CPU 提出中断请求。 设需要计数器计数的个数为 X,计数初值为C,由此可得出如下计算计数初值的通式: 计数初值: C = M - X (5—1) 式中,M为计数器的模值,该值和计数器的工作方式有关。 当方式0时 M= 当方式1时 (5—2) 当方式2、3时

  27. [例5-1] 利用T0方式1产生1ms的定时,在P1.0引脚上输出周期为2ms的方波。设单片机晶振频率fosc = 12MHZ。 解: (1)确定T0的工作方式 要在P1.0输出周期为2ms的方波,只要使P1.0每隔1ms 取反一次即可。 (2)确定T0的方式控制字 若用方式1,设置TMOD=01H

  28. (3)计算定时初值 Tcy=12/fosc=12/(12×106)S=1μs 计数个数 : X=1ms/1μs=1000 定时初值:1〉若采用方式0,13位,则 C=( -X)= 8192-1000 = 7192D =1C18H = 11100000 11000B 高8位0E0H 低5 位18H TH0初值为0E0H,TL0初值为18H 。 2〉若采用方式1,16位,则 定时初值: C = 65536-1000 = 64536 = FC18H TH0初值为0FCH,TL0初值为18H

  29. START 设定工作方式 启动T0定时 载入初值 否 TF0=0? 是 输出方波 软件TF0=0 END ORG 0000H SJMP 0030H ORG 0030H MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0FCH MOV TL0,#18H JNB TF0,$ CPL P1.0 CLR TF0 SJMP LOOP END 查询方式

  30. 4)     查询方式: 还可以使CPU采用查询TF0的方式处理T/C0定时溢出,编程简单,但效率较低。 程序中查询采用JNB TF0,$ 指令,目的是当判到TF1=1后,必须用软件复位TF1,为下次计数器回零溢出做好准备,这条指令具有判TF1为1后清零的双重功能。 [例5-2] 利用GATE门控位测量从INT1引脚输入的正脉冲宽度。解:1. 确定工作方式 (1)送方式控制字 (TMOD)=1001 0000B=90H ; T/C1定时,方式1 ,GATE=1 。

  31. (2)计算初值 由于被测正脉冲宽度未知, 假设宽度<= 65.536ms,fosc=12MHz ,则: 计数个数:X=65536(最大) 定时初值:C=65536-X=65536-65536=0, (TH1)=00H,(TL1)=00H。 (3)编程方法 对P3.3(INT1)引脚输入的脉冲采用查询的方法。 P3.3 (INT1) 被测脉宽 置1 TR1 TH1TL1从0开始计数 清0 TR1,停止T/C1计数 脉冲测试原理

  32. 程序清单: ORG 0000H SJMP 0030H ORG 0030H MAIN:MOV TMOD,#90H ;置T1方式控制字 MOV TL1,#00H ; MOV TH1,#00H ;T1从0开始计数 JB P3.3,$;等 低电平 SETB TR1 ; T1允许计数 JNB P3.3, $;等 高电平 JB P3.3, $;等 低电平 CLR TR1 ;停止计数

  33. 5.1.6 定时计数器总结 在单片机实时应用系统中,定时和对外部事件计数的功能 。 定时:对周期已知的脉冲信号计数 计数:对外部事件计数,对周期未知的外来脉冲信号计数 采用软件占用CPU的时间,降低了CPU的使用效率;  采用专门的硬件电路,参数调节不便; 采用可编程的定时器/计数器是较好的方法; 可以方便灵活地修改定时或计数的参数或方式; 与CPU并行工作,大大提高了CPU的工作效率

More Related