0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

80C51单片机的定时器/计数器介绍

CHANBAEK 来源: 无限琢磨 作者: 工具人 2023-11-01 12:29 次阅读

定时器/计数器介绍

定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。

TF1:定时器1溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除。或用软件清除。

TF0:定时器0溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除,或用软件清除。

在现在很多新MCU中,不只有两个 定时/计数器,例如STC15系列就有四个定时/计数器,但是在使用上操作上是大同小异的。

定时器内部框图和结构介绍

定时器/计数器有定时器0(简称T0),定时器1(简称T1),定时器方式寄存器TMOD和定时器控制寄存器TCON四部分组成。该逻辑框图如下所示。

图片

红线

TMOD(工作方式寄存器):从该命名就可也知道,该寄存器控制的是选择哪一个定时器,T0或者T1。用什么方式,作为定时器使用,还是作为计数器使用。这个都将由TMOD对应的位决定。

由TMOD的2位的C/T和6位的C/T位决定。

蓝色

TCON(控制寄存器):控制寄存器的高四位负责管理定时器/计数器和中断申请,低四位则是负责与外部中断有关的设置。选择了定时器的工作方式之后,就需要由一个寄存器来允许它是否可以工作,TCON就是这个功能。

黄色

则是外部计数,外部每产生一个脉冲,计数器加1,当计数器都为一,产生一次溢出。由TH0,TL0(值得是定时器0的高八位和低八位)或者TH1,TH0(值得是定时器1的高八位和低八位

进行累计。就比如需要一个计数器,则就需要由该IO进行计数。

紫色

当定时器1和定时器0计数器累计加一,当计数器全为一的时候,长生一次溢出,向TCON中的TF0或者TF1置1。

绿色

由TCON向CPU申请中断。

黑色

则是外部中断直接向CPU进行中断申请;

寄存器介绍

工作方式寄存器TMOD

图片

GATE:门控卫,当GATE=0时候,只需要在软件上使TCON置TR0或者TR1为1,既可以启动定时器/计数器。当GATE=1时,不仅需要在软件上使TCON置TR0或者TR1为1,还需要由外部中断引脚INT0————或INT1————为高电平的时候,才能启动定时器/计数器。

C/T-: 定时器/计数器选择位, C/T-=1时,为计数模式。C/T-=0时,为定时模式。

M1、M0:工作方式设置位。四种工作方式由M1、M0进行设置。如下表

图片

控制寄存器

TCON的高四位用于控制定时/计数器的启动和中断申请。低四位与外部中断相关,在前面的中断中已经做了介绍。

图片

TF1:T1中断溢出中断请求位。计数溢出时由硬件自动置TF1为1。CPU响应中断了之后,TF1由硬件自动清0。在T1工作的时候,CPU可以随时查询TF1的状态。

TR1:T1运行控制位。当TR1为1时,则表示T1开始工作。当TR1为0时,则表示T1停止工作。TR1需要由软件置1或者0;

TF0:T0中断溢出中断请求位。功能与TF1相同。

TR0: T0运行控制位。功能与TF1相同。

定时/计数器的工作方式

在新的8051结构的单片机中,2个定时/计数器都有四种工作模式,既通过TMOD的M1和M0选择。但是在传统的Intel 8051的单片机中,T0有四种工作方式(方式0、1、2、3),T1有三种工作方式(方式0、1、2),以上除了所使用的寄存器,有关的控制位,标志位不同外,在操作方式上是一样的。以下就以参见的工作方式1(既计数位数是16位)为例。

方式1

图片

方式1的计数方式是16位,TH0作为高八位, TL0作为第八位。其逻辑结构图如所示。组成了16位的加一计数器,计数个数和计数初值的关系为:

图片

计数的初值在0 ~ 65535之间,计数范围为1~65536 。

例如,若要求定时器在T0 的工作模式下,定时时间为1ms。当晶振为6MHZ的时,求送入TH0和TL0的值。由于晶振为6MHZ,所以该机械周期为图片=12/晶振频率,即为2us。

图片

将X值写入TH0和TL0时,分别将X值得高八位赋值给TH0,第八位赋值给TL0,格式如下:

TH0=(65536-5000)/256 //定时器的高八位赋值

TL0=(65536-5000)%256 //定时器的第八位赋值

所以一个该程序部分代码为:

TMOD=0X01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TF0=0TR0=1

使用方式1的工作模式,进行1s的延时,通过LED的闪烁呈现出来。

写法一

#include < reg51.h >


typedef unsigned char u8;
typedef unsigned int u16;


sbit LED=P2^0;


void delay_1s()
{
  u8 num=0;  
  TMOD=0X01;
  TR0=1;
  while(1)
  {
    TH0=(65536-18432)/256;
    TL0=(65536-18432)%256;
    num++;
    do
    {
      TF0=0;
    }while(!TF0);
    if (num==25)
    {
      num=0;
      break;
    }
  }
}


int main()  
{


  while(1)
  {
    LED=~LED;
    delay_1s();  
  } 
}

写法二

#include < reg51.h >


typedef unsigned char u8;
typedef unsigned int u16;


sbit LED=P2^0;


u8 num;


void TIM0init(void)
{
     TMOD=0x01;            //设置定时器0为工作方式0
     TH0=(65536-18432)/256;
     TL0=(65536-18432)%256;   
     EA=1;    //开总中断
     ET0=1;   //开定时器中断
     TR0=1;   //启动定时器0
}


void T0_time()  interrupt 1      
{
    TH0=(65536-18432)/256;//重装初值,如果不重装,中断只触发一次
    TL0=(65536-18432)%256;
     num++;
}
/*
interrupt 0  指明是外部中断0;
interrupt 1  指明是定时器中断0; 
interrupt 2  指明是外部中断1;
interrupt 3  指明是定时器中断1;
interrupt 4  指明是串行口中断;
函数名字可以随便起,但定时器0的中断号是固定为1的
*/




void main()
{
    TIM0init(); 
    while(1)
    {
    if(num==25)     //如果到了25,说明一秒时间到
       {
         num=0;
         LED=~LED;   //让发光管状态取反
       }
    }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43975

    浏览量

    620860
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343639
  • 计数器
    +关注

    关注

    32

    文章

    2123

    浏览量

    92985
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112040
  • 80C51单片机
    +关注

    关注

    4

    文章

    34

    浏览量

    18166
收藏 人收藏

    评论

    相关推荐

    AVR单片机如何用C语言写定时器/计数器的中断?

    求助:AVR单片机如何用C语言写定时器/计数器的中断?各位大侠,小弟我以前只用C51单片机,现在
    发表于 07-23 17:47

    51单片机有几个定时器计数器

    51单片机有几个定时器计数器定时器/计数器什么是定时器
    发表于 07-14 06:29

    51单片机中的定时器/计数器中断

    51单片机中有2个 定时器/计数器 中断,之所以叫定时器/计数器,是因为它既可以当
    发表于 11-09 06:29

    51单片机什么时候处于定时器\计数器的工作方式

    51单片机定时器\计数器的工作原理定时器/计数器的结构:何时处于
    发表于 11-18 06:41

    51单片机定时/计数器的配置步骤

    51单片机定时/计数器是一种可编程部件。它的工作方式、计数初值以及启停操作均应在定时/
    发表于 12-01 08:14

    80C51单片机定时器/计数器详解(含工作方式)

    80C51单片机要实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。下面我们将对
    发表于 11-09 20:10 5.6w次阅读
    <b class='flag-5'>80C51</b><b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>/<b class='flag-5'>计数器</b>详解(含工作方式)

    单片机教程之80C51的中断系统及定时计数器的详细资料概述

    本文档的主要内容详细介绍的是单片机教程之80C51的中断系统及定时计数器的详细资料概述主要内容包括了:1、
    发表于 11-13 19:05 9次下载
    <b class='flag-5'>单片机</b>教程之<b class='flag-5'>80C51</b>的中断系统及<b class='flag-5'>定时</b>和<b class='flag-5'>计数器</b>的详细资料概述

    单片机教程之定时器计数器原理及应用

      本文档的主要内容详细介绍的是单片机教程之定时器计数器原理及应用主要内容包括了:定时器计数器
    发表于 01-14 17:20 4次下载
    <b class='flag-5'>单片机</b>教程之<b class='flag-5'>定时器</b>和<b class='flag-5'>计数器</b>原理及应用

    51单片机计数器定时器的详细资料讲解

    80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和
    发表于 09-03 17:27 1次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>计数器</b>和<b class='flag-5'>定时器</b>的详细资料讲解

    80C51单片机内部定时器计数器的结构及原理解析

    80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和
    发表于 11-19 15:53 1.4w次阅读
    <b class='flag-5'>80C51</b><b class='flag-5'>单片机</b>内部<b class='flag-5'>定时器</b>和<b class='flag-5'>计数器</b>的结构及原理解析

    基于51单片机定时器计数器硬件设计

    基于51单片机定时器计数器硬件设计
    发表于 09-06 15:05 4次下载

    51单片机定时器\计数器的工作原理

    51单片机定时器\计数器的工作原理定时器/计数器的结构:何时处于
    发表于 11-11 11:36 10次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>之<b class='flag-5'>定时器</b>\<b class='flag-5'>计数器</b>的工作原理

    51单片机定时器计数器配置

    一、51单片机定时/计数器的工作原理在了解了单片机的时钟频率、时钟周期、机器周期之后,显然我们可以知道
    发表于 11-11 13:51 17次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>、<b class='flag-5'>计数器</b>配置

    51单片机定时器计数器

    难的东西学不会是因为简单的知识没学好基础不牢,地动山摇1.01.0.1定时器(1)51单片机定时器是一个内部外设。(2)定时器相当于CPU
    发表于 11-11 20:06 11次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>定时器</b>与<b class='flag-5'>计数器</b>

    51单片机定时器/计数器

    一、课前须知:1、51单片机有两组定时器/计数器,因为既可以定时,也可以计数,所以称之为
    发表于 11-20 20:06 46次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>/<b class='flag-5'>计数器</b>