52单片机T2用法

52单片机中定时/计数器2的研究
分类: 电子电工技术(硬件) 2011-05-17 19:23 514人阅读 评论(1) 收藏 举报
      毕业设计要用到外部中断和定时器,定时器和外部中断都要三个,当时晕,定时器可以弄三个,但是外部中断不好弄。而且外部中断是下降沿中断的那种而且三个中断信号还有那种不是特别固定的关系,想了想中断扩展,想了很久也没想出个法子来。后来根据实际情况,到52定时器2可以用作外部中断使用,特别是下降沿中断的那种。因为我做的东西刚好是中断后开始定时的那种,因此定时和中断也不冲突。
      网上关于讲52单片机定时/计数器2的资料不是很多,因为它被用得较少,后来我只能根据网上的资料和我的不断的尝试,从简单实例入手去研究,才才搞透定时/计数器2的使用,才实现了中断和定时的复用。下面是我搜到的定时器2寄存器的一些资料,比较可靠。
定时器T2的功能比T1T0都强大,但描述它的资料不多,可能是使用得比较少的缘故吧。它是一个16位的具有自动重装和捕获能力的定时/计数器,它的计数时钟源可以是内部的机器周期,也可以是P1.0输入的外部时钟脉冲。T2的控制寄存器的功能描述如下:
T2CONT2的控制寄存器),字节地址0C8H
位地址  0CFH    0CEH  0CDH  0CCH  0CBH  0CAH  0C9H  0C8H
    TF2    EXF2  RCLK  TCLK  EXEN2  TR2    C/T2  CP/RT2
各位的定义如下:
TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(RCLK=1TCLK=1),T2溢出时不对弗洛伊德TF2置位。
EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。EXF2也是只能通过软件来清除的。
RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1RCLK=0)还是T2RCLK=1)来作为串行接收的波特率产生器
TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1TCLK=0)还是T2TCLK=1)来作为串行发送的波特率产生器
EXEN2T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2EXEN2=1:当T2未用作串行波特率发生器时,允许外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获或重装,并置位EXF2,申请中断。
TR2T2的启动控制标志;TR2=0:停止T2TR2=1:启动T2
C/T2T2的定时方式或计数方式选择位。只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。
CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。CP/RT2=0时,选择重装载方式,这时若T2溢出(EXEN2=0时)或者T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2重装载;CP/RT2=1时,选择捕获方式,这时若T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2捕获操作。但是如果RCLK=1TCLK=1时,CP/RT2控制位不起作用的,被强制工作于定时器溢出自动重装载模式。
T2MOD(方式寄存器),字节地址0C9H
 
D7    D6    D5    D4    D3    D2    D1    D0
--      --      --      --      --      --      T2OE  DCEN
T2OET2输出允许位,当T2OE=1的时候,允许时钟输出到P1.0。(仅对80C54/80C58有效)
DCEN:向下计数允许位。DCEN=1是允许T2向下计数,否则向上计数。
 
T2的数据寄存器TH2TL2T0约翰 纳什T1的用法一样,而捕获寄存器RCAP2HRCAP2L只是在捕获方式下,产生捕获操作时自动保存TH2TL2的值。
    以上是T2的相关寄存器的描述,其实用法上跟T0T1是差不多的,只是功能增强了,设置的东西多了而已。
定时/计数器2其实用到最多的就是T2CON这个寄存器啦,它设定的定时和计数的方式。有三种工作方式,捕获,自动重装,波特率发生器。下面我是在百度百科里面的少许资料:
捕获方式:
  在捕获方式下,通过T2CON 控制位EXEN2 来选择两种方式。如果EXEN2=0,定时器2 是一个16 位定时器或计数器,计数溢出时,对T2CON 的溢出标志TF2 置位,同时激活中断。如果EXEN2=1,定时器2 完成相同的操作,而当T2EX 引脚外部输入信号发生1 0 负跳变时,也出现TH2 TL2 中的值分别被捕获到RCAP2H RCAP2L 中。另外,T2EX 引脚信号的跳变使得T2CON 中的EXF2 置位,与TF2 相仿,EXF2 也会激活中断。捕获方式如图4 所示。
自动重装载(向上或向下计数器)方式:
  当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器T2CON(见表5)的用人不察DCEN 位(允许向下计数)来选择的。复位时,DCEN 位置“0”,定时器2 默认设置为向上计数。当DCEN置位时,定时器2 既可向上计数也可向下计数,这取决于T2EX 引脚的值,参见图5,当DCEN=0 时,定时器2 自动设置为向上计数,在这种方式下,T2CON 中的EXEN2 控制位有两种选择,若EXEN2=0
定时器2 为向上计数至0FFFFH 溢出,置位TF2 激活中断,同时把16 位计数寄存器RCAP2H RCAP2L重装载,RCAP2H RCAP2L 的值可由软件预置。若EXEN2=1,定时器2 16 位重装载由溢出或外部输入端T2EX 1 0 的下降沿触发。这个脉冲使EXF2 置位,如果中断允许,同样产生中断。
定时器2 的中断入口地址是:002BH ——0032H
  当DCEN=1 时,允许定时器2 向上或向下计数,如图6 所示。这种方式下,T2EX 引脚控制计数器方向。T2EX 引脚为逻辑“1”时,定时器向上计数,当计数0FFFFH 向上溢出时,置位TF2,同时把16 位计数寄存器RCAP2H RCAP2L重装载到TH2 TL2 中。 T2EX 引脚为逻辑“0工业品外观设计”时,定时器2 向下计数,当TH2 TL2 中的数值等于RCAP2H RCAP2L中的值时,计数溢出,置位TF2,同时将0FFFFH 数值重新装入定时寄存器中。
当定时/计数器2 向上溢出或向下溢出时,置位EXF2 位。
波特率发生器:
  当T2CON(表3)中的TCLK RCLK 置位时,定时/计数器2 作为波特率发生器使用。如
果定时/计数器2 作为发送器或接收器,其发送和接收的波特率可以是不同的,定时器1 用于其它功能,如图7 所示。若RCLK 受弯TCLK 置位,则定时器法制时空2工作于波特率发生器方式。
  波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2 翻转使定时器2 的寄存器用RCAP2H RCAP2L 中的16位数值重新装载,该数值由软件设置。
  在方式1 和方式3 中,波特率由定时器2 的溢出速率根据下式确定:
方式13的波特率=定时器的溢出率/16
定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0)。定时器2 作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12 振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2 振荡频率)寄存器的值加1。波特率的计算公式如下:
  方式13的波特率=振荡频率/{32*[65536-(RCP2H,RCP2L)]}式中(RCAP2HRCAP2L)是RCAP2H RCAP2L中的16 位无符号数。
  定时器2 作为波特率发生器使用的电路如图7 所示。T2CON 中的RCLK TCLK=1 时,波特率工作方式才有效。在波特率发生器工作方式中,TH2 翻转不能使TF2 置位,故而不产生中断。但若EXEN2 置位,且T2EX 端产生由1 0 的负跳变,则会使EXF2 置位,此时并不能将(RCAP2HRCAP2L)的内容重新装入TH2 TL2 中。所以,当定时器2 作为波特率发生器使用时,T2EX 可作为附加的外部中断源来使用。需要注意的是,当定时器2 工作于波特率器时,作为定时器运行(TR2=1)时,并不能访问TH2 TL2。因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。
  然而,对RCAP2 则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。在访问定时器2RCAP2 寄存器之前,应将定时器关闭(清除TR2)。
    回到主题,其实我要研究,是如何先让定时器先产生下降沿中断,软后中断函数里面又开始定时。其实说来也很简单,因为只要置EXEN2=1,而且不开启定时功能,也就是置TR2=0后,如果有外部下降沿脉冲输入T2EXP1.1)引脚,那么就产生中断,那么就可以在中断函数中置TR2=1,设置定时器初值,这样就开启了定时器,实现了定时功能。总之,这个TR2设置很关键。这样就实现了先中断,软后立即定时。其实也可以用T2EX口完
全做外部下降沿脉冲的中断的,只要一直设置TR2=0就行了,我这里只不过是要用到定时功能而已。
下面我是用汇编语言写的一个单片机程序,实现了先做外部中断后定时的功能。
 
[vb] view plaincopyprint?
1. T2CON   EQU  0C8H 
2. T2MOD   EQU  0C9H 
3. CP      EQU  T2CON.0 
4. TR2     EQU  T2CON.2 
5. EXEN2   EQU  T2CON.3 

本文发布于:2024-09-23 18:25:05,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/32804.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   方式   计数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议