最全面的AVRmega16定时计数器的学习笔记分解.docxVIP

  • 23
  • 0
  • 约1.86万字
  • 约 17页
  • 2017-03-30 发布于湖北
  • 举报

最全面的AVRmega16定时计数器的学习笔记分解.docx

定时计数器学习笔记 ATmega16一共配置了2个8位和1个16位,共3个定时计数器,它们是8位的定时计数器T/C0、T/C2和16位的定时计数器T/C1。 一、学习和使用定时计数器时,必须注意以下的基本要素: 1、脉冲信号源。脉冲信号源是指输入到定时计数器的计数脉冲信号。通常用于定时计数器计数的脉冲信号可以由外部输入引脚提供,也可以由单片机内部提供。 2、计数器类型。计数器类型是指计数器的计数运行方式,可分为加一(减一)计数器,单程计数或双向计数等。 3、计数器的上下限。计数器的上下限指计数单元的最小值和最大值。一般情况下,计数器的下限值为零,上限值为计数单元的最大计数值,即255(8位)或65535(16位)。需要注意的是,当计数器工作在不同模式下时,计数器的上限值并不都是计数单元的最大计数值255或65535,它将取决于用户的配置和设定。 4、计数器的事件。计数器的事件指计数器处于某种状态时的输出信号,该信号通常可以向MCU申请中断。如当计数器计数到达计数上限值255时,产生“溢出”信号,向MCU申请中断。 二、8位定时计数器T/C0、T/C2 (一) T/C0、T/C2的特点: (1) 单通道计数器。 (2) 比较匹配时清零计数器(自动重装特性,Auto Reload)。 (3) 可产生无输出抖动(glitch-free)的,相位可调的脉宽调制(PWM)信号输出。 (4) 频率发生器。 (5) 外部事件计数器(仅T/C0)。 (6) 带10位的时钟预分频器。 (7) 溢出和比较匹配中断源(TOV0、OCF0和TOV2、OCF2)。 (8) 允许使用外部引脚的32kHz手表晶振作为独立的计数时钟源(仅T/C2)。 (二) 寄存器 1、 TCNT0——TC0计数寄存器 TCNT0是T/C0的计数值寄存器。写TCNT0寄存器将在下一个定时器时钟周期中阻塞比较匹配。因此,在计数器运行期间修改TCNT0的内容,有可能将丢失一次TCNT0与OCR0的匹配比较操作 2、 OCR0——输出比较寄存器 8位寄存器OCR0中的数据用于同TCNT0寄存器中的计数值进行匹配比较。在T/C0运行期间,比较匹配单元一直将寄存器TCNT0的计数值同寄存器OCR0的内容进行比较。一旦TCNT0的计数值与OCR0的数据匹配相等,将产生一个输出比较匹配相等的中断申请,或改变OC2(PD7)的输出逻辑电平。 3、TIMSK——定时计数器中断屏蔽寄存器 位 7 6 5 4 3 2 1 0 $39($0059) OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 TIMSK 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 初始化值 0 0 0 0 0 0 0 0 OCIE2(OCIE0):T/C2(T/C0)输出比较匹配中断允许标志位。 当OCIE2(OCIE0)被设为“1”,且状态寄存器中的I位被设为“1”时,将使能T/C2(T/C0)的输出比较匹配中断。若在T/C2(T/C0)上发生输出比较匹配,即OCF2=1(OCF0=1)时,则执行T/C2(T/C0)输出比较匹配中断服务程序 TOIE2(TOIE0):T/C2(T/C0)溢出中断允许标志位 当TOIE2(TOIE0)被设为“1”,且状态寄存器中的I位被设为“1”时,将使能T/C2(T/C0)溢出中断。若在T/C2(T/C0)上发生溢出,即TOV2=1(TOV0=1)时,则执行T/C2(T/C0)溢出中断服务程序。 4、 TIFR——定时计数器标志寄存器 位 7 6 5 4 3 2 1 0 $38($0058) OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 TIFR 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 初始化值 0 0 0 0 0 0 0 0 OCF2(OCF0):T/C2(T/C0)比较匹配输出的中断标志位 当T/C2(T/C0)输出比较匹配成功,即TCNT2=OCR2(TCNT0=OCR0)时,OCF2(OCF0)位被设为“1”。当转入T/C2(T/C0)输出比较匹配中断向量执行中断处理程序时,OCF2(OCF0)由硬件自动清零。写入一个逻辑“1”到OCF2(OCF0)标志位将清除该标志位。当寄存器SREG中的I位、OCIE2(OCIE0)以及OCF2(OCF0)均为“1”时,T/C2(T/C0)的输出比较匹配中断被执行。 TOV2(TOV0):T/C2(T/C0)溢出中断标志位 当T/C2(T/C0)产生溢出时,TOV2(TOV0)位被设为“1”。当转入T/C2(T/C0)溢出中断向量执行中断处理程序时,TOV2

文档评论(0)

1亿VIP精品文档

相关文档