zoukankan      html  css  js  c++  java
  • 单片机 定时器/计数器

    一、什么是定时器/计数器

    在51单片机中,定时器/计数器是用来实现定时功能,并且具有计数的功能,来实现对外部信号的计数。

    二、定时器/计数器有什么类型

    在51单片机中,分为软件定时器,不可编程硬件定时器,可编程定时器。 
    软件定时:CPU每执行一条指令时,是需要固定时间的,所以,通过执行空指令可以达到延时的效果,这样子做的代价是占用CPU时间,所以一般很少这么做。

    不可编程硬件定时器:是由电路和硬件来完成定时功能的,一般采用基电路,外接定时部件(电阻和电容),通过改变电阻的阻值和电容的电容值来修改定时值,一量确定后件不能通过软件修改,这样子做的优点是不需要占用CPU时间。

    可编程定时器:通软件来确定定时值及其范围,可编程定时器功能强大,灵活性高。这是本文详细讲解的定时器。

    三、定时器的内部结构及工作原理

    8051单片机有定时器0(T0)和定时器1(T1)两个定时器。 
    定时器0(T0)和定时器1(T1)是两个16位加法计算器。 
    定时器0是由TH0和TH1两个8位计数器组成的,定时器1也是一样。

    定时器内部还有以下寄存器:
    8位的方式寄存器(TMOD) 
    8位控制寄存器(TCON) 
    选择定时器模式寄存器(C/T) 
    启动方式寄存器(GATE)
    工作方式及发出启动信号寄存器(TR0或TR1)

    内部结构如下图: 

    四、定时器工作方式

    定时器的工作方式主要是通过THOD低4位是定时器0的工作方式控制位,高4位为定时器1的工作方式控制方式。均为M1M0

    工作方式M1M0功能
    0 0 0 13位计数器
    1 0 1 16位计数器
    2 1 0 8位计数器,初值自动装入
    3 1 1 T0分成两个8位计数器,T1停止工作

    五、使用定时器

    timer_count.c

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    #include<reg52.h>
    
    unsigned char i;
    sbit LED0 = P1^0;
    
    void main(void)
    {
      TMOD = 0x01;
      TH0 = 0;
      TL0 = 0;
      ET0 = 1;
      TR0 = 1;
      EA = 1;
      while(1);
    }
    
    void t0_delay(void) interrupt 1
    {
      i++;
      TR0 = 0;
      TH0 = 0;
      TL0 = 0;
      if(i == 20)
      {
          i = 0;
          LED0 = ~LED0;
      }
      TR0 = 1;
    }
    

    原文地址:http://yingbing.github.io/blog/2015/02/07/scm-timer-counter/

  • 相关阅读:
    PDA固定资产条码管理系统软件-解决固定资产实物清查的瓶颈问题,大大提高清查效率
    互联网+下PDA移动智能手持POS超市收银开单软件
    搭建免费代理池
    解析库beautifulsoup
    爬取汽车之家新闻
    请求库之requests库
    网络状态码301与302
    正向代理与反向代理
    垃圾回收机制详解
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/yingbing/p/4282035.html
Copyright © 2011-2022 走看看