Chinaunix首页 | 论坛 | 博客
  • 博客访问: 447420
  • 博文数量: 122
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 1538
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-17 11:10
文章分类

全部博文(122)

文章存档

2011年(1)

2008年(86)

2007年(35)

我的朋友

分类:

2007-10-28 22:53:11

    8051的两个定时器/计数器是16位的(据说是16+1位的),分别用寄存器TH1(高8位)和TL1(低8位)、TH0和TL0表示。
   
    1.Timer/Counter的启动
   
    由TCON的TR1和TR0来设置。(软件设置)
   
    2.Timer/Counter工作方式的设置:TMOD

 GATEC/T
 M1 M0

 GATE

 C/T M1 M0

    高四位控制1,低四位控制0。各位意义如下:
    GATE:为1时,对Timer/Counter1来说,启动受到双重控制,即RT1和/INT1同时为高;GATE为0时仅受TR0和TR1控制。
    C/T:为1时,工作在Counter状态,计数通过T0(P3.4)和T1(P3.5)的负脉冲来触发;为0时工作在Timer状态,由内部振荡进行计时。
    M1、M0:设计工作方式,
       M1M0=00,满计数值为2^13,TL存低5位,TH存高8位;
       M1M0=01,满计数值为2^16;
       M1M0=10,满计数值为2^8,初值自动重装;
       M1M0=11,(各资料上说的不一样)

    3.Timer设定初值的方法

    Timer工作时,对机器周期计数。如果 fosc = 6 MHz,一个机器周期为 12/fosc = 2 us,则:
       方式0:最大定时间隔 = 2^13 * 2 us = 16.384 ms;
       方式1:最大定时间隔 = 2^16 * 2 us = 131.072 ms;
       方式2:最大定时间隔 = 2^8 * 2 us = 512 us;
    对于方式1,要求定时 1ms,计数器初值为 x,则有:
       (2^16 - x) * 2 us = 1000 us,可求出 x

    4.Counter设定初值的方法
      
       方式0:计满数值 = 2^13  = 8192 ;
       方式1:计满数值 = 2^16  = 65536;
       方式2:计满数值 = 2^8  = 256;
    对于方式2,如果要计10个脉冲值,则设初值为 256-10 。      
阅读(3066) | 评论(0) | 转发(0) |
0

上一篇:sed

下一篇:mc8051的移位指令

给主人留下些什么吧!~~