导航:首页 > 操作系统 > 单片机定时器2

单片机定时器2

发布时间:2023-10-22 01:20:48

单片机c语言里怎么用2个定时器

有几个步骤。
首先说明一下几个和定时器有关的寄存器。
第一,方式控制寄存器TMOD,地址89H,不可位寻址,这个寄存器可以对定时器的工作方式进行设置。
第二,TCON寄存器,地址88H,可以位寻址,控制寄存器的开启关闭,寄存器的溢出标志也在这个寄存器中。
第三,中断控制寄存器IE,用来控制各中断的开启或关闭。
现在开始介绍2个定时器的用法
1。设置TMOD
2。分别给两个定时器赋初值
3。开中断
4。开启定时器
5。设置循环语句等待中断
下面举一个例子:
#include
void
main(void)
{
TMOD=0x01;//前四位控制t1,后四位控制t0
TH0=0x00;//赋初值
TL0=0x00;
TH1=0x43;
TL1=0x32;
EA=1;//开总中断
ET0=1;//开t0中断
ET1=1;//开t1中断
TR0=1;//开启定时器t0
TR1=1;//开启定时器t1
while(1)//等待中断
{
}
}

⑵ mcs-51单片机定时器工作方式2是指的什么工作方式

不同工作方式对应计数器位数不同

方式2是八位自动重装载定时器,也就是计数器最多记256个数,之后会自动重装初始值

⑶ 52单片机定时器2,T2口怎么用

T2CON(T2的控制寄存器),字节地址0C8H:
位地址
符号TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/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:启动T2
C/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:
D7D6D5D4D3D2D1D0
------------T2OEDCEN
T2OE: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*[65536-(RCP2H,RCP2L)]}式中(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)。

阅读全文

与单片机定时器2相关的资料

热点内容
编译后程序块过大不适合 浏览:669
李煜pdf 浏览:843
python写游戏逻辑 浏览:489
pdf转换成word免费版在线转换 浏览:462
荒废了三年还能做程序员吗 浏览:656
阿里云内网vpn服务器 浏览:103
l命令第一个点对第二个点对不上 浏览:829
oracle导出表命令 浏览:909
怎么写域名加密 浏览:1003
手机文件压缩出错 浏览:522
如何登录毒app 浏览:836
汽车中控台加密 浏览:862
海南农村信用社app如何开通短信 浏览:809
phpdns缓存 浏览:415
ipad腾讯视频app如何播放本地视频 浏览:990
虾米服务器关闭如何找到以前的歌 浏览:18
php自动建站 浏览:475
命令与征服3游侠网 浏览:970
腾讯云买哪个地区服务器 浏览:251
香港哪里有app卖内地零食 浏览:685