52单片机定时器2,T2口怎么用?51单片机定时器2的最短定时时间怎么有限制
本文目录
- 52单片机定时器2,T2口怎么用
- 51单片机定时器2的最短定时时间怎么有限制
- 52单片机的定时器2是如何使用的
- 关于AT89S52定时器2的问题!
- STC89C52单片机定时器2
- 51单片机的定时器2的用法
- 求助,关于at89c52的定时器2
52单片机定时器2,T2口怎么用
T2CON(T2的控制寄存器),字节地址0C8H:位地址 0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8H符 号 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2各位的定义如下:TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。EXF2也是只能通过软件来清除的。RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获或重装,并置位EXF2,申请中断。TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2C/T2:T2的定时方式或计数方式选择位。只能通过软件的置位或清除;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=1或TCLK=1时,CP/RT2控制位不起作用的,被强制工作于定时器溢出自动重装载模式。T2MOD(方式寄存器),字节地址0C9H:D7 D6 D5 D4 D3 D2 D1 D0-- -- -- -- -- -- T2OE DCENT2OE:T2输出允许位,当T2OE=1的时候,允许时钟输出到P1.0。(仅对80C54/80C58有效)DCEN:向下计数允许位。DCEN=1是允许T2向下计数,否则向上计数。T2的数据寄存器TH2、TL2和T0、T1的用法一样,而捕获寄存器RCAP2H、RCAP2L只是在捕获方式下,产生捕获操作时自动保存TH2、TL2的值。 以上是T2的相关寄存器的描述,其实用法上跟T0、T1是差不多的,只是功能增强了,设置的东西多了而已。定时/计数器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 的溢出速率根据下式确定:方式1和3的波特率=定时器的溢出率/16定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0)。定时器2 作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12 振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2 振荡频率)寄存器的值加1。波特率的计算公式如下: 方式1和3的波特率=振荡频率/{32*}式中(RCAP2H,RCAP2L)是RCAP2H和RCAP2L中的16 位无符号数。 定时器2 作为波特率发生器使用的电路如图7 所示。T2CON 中的RCLK 或TCLK=1 时,波特率工作方式才有效。在波特率发生器工作方式中,TH2 翻转不能使TF2 置位,故而不产生中断。但若EXEN2 置位,且T2EX 端产生由1 至0 的负跳变,则会使EXF2 置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入TH2 和TL2 中。所以,当定时器2 作为波特率发生器使用时,T2EX 可作为附加的外部中断源来使用。需要注意的是,当定时器2 工作于波特率器时,作为定时器运行(TR2=1)时,并不能访问TH2 和TL2。因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。 然而,对RCAP2 则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。在访问定时器2或RCAP2 寄存器之前,应将定时器关闭(清除TR2)。
51单片机定时器2的最短定时时间怎么有限制
51单片机定时器,晶振是12MHZ、12分频,理论上最短定时时间1微秒,但是,CPU 运行指令 需要时间,只要中断服务程序 的运行时间 不超过定时器 定时时间,并且 有些余量,则就不成问题,如果没有余量,则中断结束 又进入 中断,如果 超过定时器 定时时间,则来不及 处理 定时也就不准确了。用 C 语言编程,有可能 定时时间 过短 会有问题,有不好 计算中断用去多少时间。如果用 汇编语言 编程,晶振是12MHZ、12分频,只是产生一个方波信号,30KHz 频率没有问题。当然你要检测 准确性 加入计数程序后 会占用时间,一般编程时, 在中断 服务程序中 尽量少占用时间,能不在中断服务程序中处理的 事尽量 不在中断服务程序中 处理。
52单片机的定时器2是如何使用的
要用T2作为计数器了来计数外部脉冲了P1.0作为I/O口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,可以参照T0和T1的方式2的用法,不过寄存器是不一样的,要看一下pdf资料。中断用的是5,就是interrupt 5.89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统。
关于AT89S52定时器2的问题!
定时器中断2不是有入口地址吗0003h外中断0000bh定时器00013h外中断1001bh定时器10023h串口中断002bh定时器2org0000hljmpmainorg0023hljmpset_t2_out_modeorg0050hmain:movsp,#0e0hmovp1,#0ffhmovdptr,#0000hwait1:sjmpwait1set_t2_out_mode:movrcap2h,dphmovrcap2l,dplmovt2con,#0movt2mod,#02setbtr2ret这样在试试。
STC89C52单片机定时器2
/*使用的是12MHz晶振*/#include《reg52.h》#defineucharunsignedchar#defineuintunsignedintsbitwave=P0^1;//设P0.1接受外部脉冲uintcount=0;uintf;voidinti()//初始化{TMOD=0x21;//选T1工作方式2定时,计数器T0工作方式1计数ET1=1;//开T1定时器中断TH1=-250;//装初值TL1=-250;TH0=0;TL0=0TR1=1;//开定时器TR0=1;//开计数器EA=1;//开总中断}voidmain(){inti();//定时器初始化while(1);}voidtimeer()interrupt3//定时器T1中断{if(count++==4000)//定时1s,1s采集刷新一次数据{f=TH0*256+TL0;//外部信号频率计算(即一秒内收到的脉冲数)}}至于显示函数就不写了,很简单自己加到主函数里就行啦
51单片机的定时器2的用法
波特率给错了。因为用T2作波特率发生器是十六位定时器,不是8位。计算公式是:波特率=Fosc/12/(2*16*(65536-))比如9600波特率11.0592MHz晶振:=65536-11059200/12/(32*9600)=65533RCAP2H=65533/256;RCAP2L=65533%256;
求助,关于at89c52的定时器2
没有影响,默认设置中,t0优先于t2。具体默认优先级如下: 1、外部中断0 2、定时器0 3、外部中断1 4、定时器1 5、串行中断 6、定时器2 如果你想把定时器2的优先级置为最高,在IP寄存器中只把PT2位置为1即可。
更多文章:
诺基亚5130保密码忘了怎么办(诺基亚5130手机保密码忘记了怎么找回或更改)
2024年6月18日 19:15
x50pro玩家版和k30pro(三千块钱左右买个啥手机合适啊)
2024年6月22日 13:53
诺基亚n97强制恢复出厂设置(诺基亚N97恢复出厂设置的密码是多少)
2024年3月25日 07:35
天语u86手机(天语u86手机支不支持电信3G卡然后电信网络是不是到处都有)
2024年10月17日 13:30
魅族4怎么恢复出厂设置(魅族4设置里找不到“关于手机”如何重置手机)
2023年12月20日 20:40
三星柱31芯和33芯的区别(金彭前减震朱丽叶31和33点有什么区别)
2023年10月29日 09:30
红米1s屏幕多大(红米1s和红米note1屏幕大小一样吗,就比如说红米note1的手机壳红米1s能用)
2024年7月31日 00:30
iphone4s刷机正在发送基代(iphone4刷机问题,,正在发送restore配置文件)
2023年6月18日 19:30
n5100处理器相当于i几(英特尔赛扬的N5100与N5095哪个处理器更好)
2024年7月24日 10:02