52单片机的t2如何定义才能用啊?求高手!求详细的定义过程!
答案:3 悬赏:20 手机版
解决时间 2021-04-04 19:36
- 提问者网友:我一贱你就笑
- 2021-04-04 11:49
T2CON和T2MOD能位寻址吗?
最佳答案
- 五星知识达人网友:青尢
- 2021-04-04 13:20
51系列的单片机中都有两个定时器T0和T1,网上的资料挺多的,52单片机比51单片机的资源多了一个定时器T2和128字节的ram。定时器T2的功能比T1、T0都强大,但描述它的资料不多,可能是使用得比较少的缘故吧。它是一个16位的具有自动重装和捕获能力的定时/计数器,它的计数时钟源可以是内部的机器周期,也可以是P1.0输入的外部时钟脉冲。T2的控制寄存器的功能描述如下:
T2CON(T2的控制寄存器),字节地址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:启动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:
D7 D6 D5 D4 D3 D2 D1 D0
-- -- -- -- -- -- T2OE DCEN
T2OE:T2输出允许位,当T2OE=1的时候,允许时钟输出到P1.0。(仅对80C54/80C58有效)
DCEN:向下计数允许位。DCEN=1是允许T2向下计数,否则向上计数。
T2的数据寄存器TH2、TL2和T0、T1的用法一样,而捕获寄存器RCAP2H、RCAP2L只是在捕获方式下,产生捕获操作时自动保存TH2、TL2的值。
以上是T2的相关寄存器的描述,其实用法上跟T0、T1是差不多的,只是功能增强了,设置的东西多了而已。
51波特率计算公式 :
如TH1=0xFD TL1=OXFD; Smod=0 Fose=11.0592*1000000
计算出来的是9600
TMOD=0x20; //定时器1工作方式2,8位自动重载
TH1=OXFD; //初值
TL1=OXFD;
PCON=0x00; //SMOD=0
TCON=0x40; //TR1=0
SCON=0x50 //,SM0=0,SM1=1,REN=1;
52波特率计算公式:
Fose/32(2(16次方)-初值)
如定义115200的波特率
SCON=0x50; // UART_mode=1,REN=1
RCAP2H=0xFF; RCAP2L=0xFD; // 11.0592MHz 115200B=0xFFFD(-3)
T2MOD=0;
T2CON=0x34; // Set T2 to baud rate register
T2CON(T2的控制寄存器),字节地址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:启动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:
D7 D6 D5 D4 D3 D2 D1 D0
-- -- -- -- -- -- T2OE DCEN
T2OE:T2输出允许位,当T2OE=1的时候,允许时钟输出到P1.0。(仅对80C54/80C58有效)
DCEN:向下计数允许位。DCEN=1是允许T2向下计数,否则向上计数。
T2的数据寄存器TH2、TL2和T0、T1的用法一样,而捕获寄存器RCAP2H、RCAP2L只是在捕获方式下,产生捕获操作时自动保存TH2、TL2的值。
以上是T2的相关寄存器的描述,其实用法上跟T0、T1是差不多的,只是功能增强了,设置的东西多了而已。
51波特率计算公式 :
如TH1=0xFD TL1=OXFD; Smod=0 Fose=11.0592*1000000
计算出来的是9600
TMOD=0x20; //定时器1工作方式2,8位自动重载
TH1=OXFD; //初值
TL1=OXFD;
PCON=0x00; //SMOD=0
TCON=0x40; //TR1=0
SCON=0x50 //,SM0=0,SM1=1,REN=1;
52波特率计算公式:
Fose/32(2(16次方)-初值)
如定义115200的波特率
SCON=0x50; // UART_mode=1,REN=1
RCAP2H=0xFF; RCAP2L=0xFD; // 11.0592MHz 115200B=0xFFFD(-3)
T2MOD=0;
T2CON=0x34; // Set T2 to baud rate register
全部回答
- 1楼网友:何以畏孤独
- 2021-04-04 14:59
在REG52.H头文件中有定义的,所以在写程序的时候将REG52.H头文件包括进去就可以了使用T2了。
T2CON的地址是C8H,可以位寻址,T2MOD是C9H,不能。
- 2楼网友:动情书生
- 2021-04-04 14:08
一样的控制字写入啊什么的!跟前面的一样啦
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯