zoukankan      html  css  js  c++  java
  • 51单片机的定时器

    今天想尝试使用串口通信来控制舵机旋转的时候,由于同时用到了定时器T0和T1(用来设定波特率)。程序有点问题,运行不畅,所以现在想通过写篇文章重新来梳理对51单片机这两个定时器的理解。

    STC89C51系列单片机有两个定时器:定时器T0、定时器T1

    一、首先了解到51单片机的常用晶振是12MHz的,内部一般是12分频的,也就是12T。所以每计数一次需要1us的时间

    二、定时器的工作模式有四种,模式0,1,2的工作模式对T0 、T1都是相同的,但是模式3只有T0才有:

    模式0:13位计时器,有TL0的低5位和TH0的全8位构成一个13位的计时器。13位计时器计数溢出后会自动清零,同时把中断标记TF0置1。如果需要重新使用,需要重新去更新时间常数,并定时器的的中断标志位置0.

    模式1: 16位计时器,和模式0几乎完全相同,但是因为是16位(TL0有8位 、TH0有8位),所以计时范围大大增加(0~65535),一共是2的16次方。

    模式2: 8位自动重载模式。TL0计时结束后,单片机会自动把TH0的重载到TL0中,不需要像前两种模式那样手动重载。

    模式3:只有计时器T0才有模式3,计时器T1是没有模式3的。模式3的主要方式是把定时器T0的TL0和TH0分开看作是两个独立的8位定时器。两个定时器需要手动重载


    三、定时器的控制寄存器

    8051单片机有两个8位的特殊功能寄存器来控制定时器的工作状态;分别是TMOD、TCON

    1、工作模式控制寄存器TMOD

     

    这个是一个8位的寄存器,0-3位控制的是定时器T0; 4-7位控制的是定时器T1。

    GATE是门控位,用来设定P3^2或P3^3的电压对定时器的计数是够影响的。GATE=0时,表示计数器计数与否与两端口电压状态无关;GATA=1时,计数器是否计数要参考引脚的状态,即P3.2为高时T0才计数,P3.3为高时T1才计数。一般都是设置为0的。

    C/T位:计数/计时的选择位。C/T = 0时,定时模式; C/T = 1时,计数模式。

    M1M0两位决定了定时器的工作模式:

    2、工作状态控制寄存器TCON

  • 相关阅读:
    jdk动态代理
    mysql-索引方案
    闭包的有点以及出现的内存泄露2016/4/12
    表单2016/4/8
    cursor
    同一个事件绑定不同的函数
    a:link visited hover active
    对于属性操作,加入属性,移除属性
    offset获取位置
    清除浮动6中方法
  • 原文地址:https://www.cnblogs.com/xing-ting/p/10305958.html
Copyright © 2011-2022 走看看