zoukankan      html  css  js  c++  java
  • 51单片机定时/计数器学习笔记

    定时器和计数器

    定时/计数器简介:

    11

    12

    晶振12M, 振荡周期 1/12us, 机械周期 1/12 * 12 = 1us.

    定时器/计数器寄存器:

    13

    TH0-高八位寄存器,TL0-低八位寄存器

    TMOD:工作方式选择寄存器

    14

    15

    0123位设置T0定时/计数器;

    4567位设置T1定时/计数器;

    通常使用将GATE = 0的方式。

    /T表示低电平有效。

    16

    从上到下依次为工作方式0123;

    工作方式0(M0 = 0, M1 = 0):

    0~2^13-1(最大计数个数为2^13,因为从0开始计数,故减1)

    工作方式1(M0 = 0, M1 = 1):

    0~2^16-1(0~65535)

    工作方式2(M0 = 1, M1 = 0):

    通常用在串口通信的波特率发生器;

    自动装入:高8位TH放开始计数的初始值(如80),低8位TL负责计数(2^8=256),计数溢出时,将高8位TH中的值(如80)放入低8位,低8位从此值(如80)重新开始计数,如此循环计数。

    工作方式3(M0 = 1, M1 = 1):

    仅适于T0定时/计数器

    17

    TF2:溢出标志;

    EXF2: 外部标志(信号引发);

    RCLK/TCLK:接收/发送时钟位;

    EXEN: 外部引脚使能位;

    TR2: 启动位;

    C//T2: 选择定时计数器;

    CP//RL2: 捕获、重载标志位;

    定时器/计数器工作方式:

    18

    C//T:

    选为0,使用定时器,使用系统机械周期(1us)

    选为1,使用计数器,计算T0引脚的脉冲信号;

    19

    21

    定时器/计数器使用方法:

    22

    23

    示例:

     1 #include "reg52.h"
     2 #include "intrins.h"
     3 
     4 typedef unsigned char u8;
     5 typedef unsigned int u16;
     6 
     7 sbit LED = P2^0;
     8 
     9 void Timer0Init()//定时器0中断初始化
    10 {
    11     TMOD |= 0x01; //GATE C/~T M1 M0 GATE C/~T M1 M0,T1不变,T0工作方式1,所以进行与操作,0000 0001
    12     TH0 = 0xFC;    //定时器0初始化,定时1ms
    13     TL0 = 0x18;
    14     ET0 = 1;//定时器0使能
    15     EA = 1; //打开总中断使能
    16 
    17     TR0 = 1; //定时器0开始计数
    18 
    19 } 
    20 
    21 int main()
    22 {
    23     Timer0Init();
    24     while(1);
    25 }
    26 
    27 void Timer0() interrupt 1 //定时器0中断
    28 {
    29     static u16 i;
    30     TH0 = 0xFC;//定时器0重新赋初值
    31     TL0 = 0x18;
    32     i++;
    33     if(i == 1000)//1S
    34     {
    35         LED = ~LED;
    36     }
    37 
    38 }

    另外:发现一个强大的资料神器,STC官方出品的STC-ISP烧录软件,它不仅是烧录软件,我感觉它更像一个STC芯片资料词典

    image

    功能1:烧录,串口调试;

    功能2:为keil C51软件提供STC芯片资料包

    新安装的keil C51软件有时会发现编程时找不到STC系列的芯片,打开STC-ISP,在右上方找到Keil仿真设置选项,点击下方的添加型号和头文件到keil中,添加STC仿真驱动到Keil中,然后弹出窗口,选择Keil的安装目录(目录下必须有C51目录和UVx目录存在),之后点击确定即可。

    image

    功能3:程序示例。

    找到范例程序,在单片机系列中选择单片机型号以及需要实现的功能,就会看到软件给出的c语言示例

    image

    功能4:小工具波特率计算器、定时器计算器、软件延时计算器

    同样在软件的右上方可以找到这些实用小工具。

    image

     本文目的在于学习分享,无商业目的。部分资源来自于网络,如有侵权,请联系作者删除,谢谢!

     

     

  • 相关阅读:
    前缀和
    hdu6290奢侈的旅行
    make_pair
    New Year and Buggy Bot
    STL next_permutation 算法原理和自行实现
    前端面试题集合
    node设置cookie
    黑客与geek
    xss
    node async
  • 原文地址:https://www.cnblogs.com/brian-sun/p/12410469.html
Copyright © 2011-2022 走看看