单片机定时器工作模式TMOD设置

 单片机定时器工作模式TMOD设置

TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER)
  定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。
  其格式为:
                        

TMOD结构图
=================================================================================
  其中低四位定义定时器/计数器T0,高四位定义定时器/计数器T1,各位的说明:
  Ⅰ,GATE——门控制。
  ●GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。
  当INT0引脚为高电平时TR0置位,启动定时器T0;
  当INT1引脚为高电平时TR1置位,启动定时器T1。
  ●GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。
  Ⅱ,C/T——功能选择位
  C/T=0时为定时功能,C/T=1时为计数功能。
  置位时选择计数功能,清零时选择定时功能。
  Ⅲ,M0、M1——方式选择功能
  由于有2位,因此有4种工作方式
================================================================
  M1M0 工作方式 计数器模式 TMOD(设置定时器模式)
  0 0 方式0 13位计数器 TMOD=0x00
  0 1 方式1 16位计数器 TMOD=0x01
  1 0 方式2 自动重装8位计数器 TMOD=0x02
  1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03
单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10
   没有用到的定时器一般设置为0
================================================================

 

初始化定时器0

TH0=(65535-50000)/256;Tl0=(65535-50000)%256;

在51单片机中,如果你的定时器0选择的是“方式一”,则表示定时器0的计数器从0开始加到50000,其中每加一次的时间为你的晶振频率的倒数。如12MHz,则每加一个数的时间为 1*12/12000000 秒。你的公式中是加50000次,即 50000*1*12/12000000 = 50MS。注:数值只能从0加到65535,否则就会溢出。如果需要定时的时间长,可在定时器中断函数中,使用全局变量计数。如使用你的公式进行定时器初始化,想要实现1S的定时,则等到全局变量从0加至20时,即定时器0发生20次中断,就可以了。
为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/eagle200901/blog/item/38a887adf26ca4da7dd92a0c.html
  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在8051系列单片机中,16位定时器/计数器通常指的是定时器/计数器1。要初始化定时器/计数器1,需要进行以下几个步骤: 1. 设置定时器/计数器1的工作模式,使用TMOD寄存器的高4位(即TMOD.4-TMOD.7)来设置。如果需要使用16位定时器/计数器,则需要将TMOD的高4位设置为“0x10”,表示使用模式2,其中计数器/定时器1被设置为16位自动重载模式。 2. 设置定时器/计数器1的重载值,使用TH1和TL1寄存器分别设置定时器/计数器1的高8位和低8位重载值。 3. 启动定时器/计数器1,使用TR1寄存器的位控制定时器/计数器1的启动和停止。将TR1的值设置为1即可启动定时器/计数器1。 4. 定时器/计数器1中断的使能和优先级设置,使用IE寄存器的位来设置。如果需要开启定时器/计数器1中断,则将IE的EA位和ET1位都设置为1。如果需要设置定时器/计数器1中断的优先级,则可以使用IP寄存器的位来设置。 下面是一个示例代码,展示了如何初始化定时器/计数器1,并以1ms的时间间隔产生中断。 ``` void Init_Timer1(void) { TMOD |= 0x10; // 设置定时器1为16位自动重载模式 TH1 = 0xFC; // 设置重载值为0xFC67,产生1ms的时间间隔 TL1 = 0x67; TR1 = 1; // 启动定时器1 ET1 = 1; // 开启定时器1中断 EA = 1; // 开启总中断 } ``` 其中,TMOD |= 0x10; 语句将TMOD寄存器的高4位设置为“0x10”,从而将定时器1设置为16位自动重载模式。TH1和TL1分别设置了定时器1的高8位和低8位重载值,产生1ms的时间间隔。TR1 = 1; 启动了定时器1。ET1 = 1; 开启了定时器1中断。EA = 1; 开启总中断。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值