精华内容
下载资源
问答
  • 51单片机——定时计数器

    千次阅读 2019-08-08 08:43:54
    *CPU时序: 振荡周期:为单片机提供定时信号...在51单片机中有两组定时计数器,与CPU相互独立,。 工作原理是随机器内部的时钟或者外部脉冲信号对寄存器数据加1,当计数器加到全1时,再加1便会置0溢出,使相应终端...

    *CPU时序:
    振荡周期:为单片机提供定时信号的振荡源周期(如晶振周期或外加周期)。
    状态周期:为两个振荡周期。用S表示(又称S周期或时钟周期)。
    机器周期:为六个状态周期。
    指令周期:完成一条指令所需要的全部时间,以机器周期为单位。
    在51单片机中有两组定时计数器,与CPU相互独立。
    工作原理是随机器内部的时钟或者外部脉冲信号对寄存器数据加1,当计数器加到全1时,再加1便会置0溢出,使相应终端位置1。(使用时,由溢出计时器的值减去计数初值才是加1计数器的计数值,ps:需输入的便是计数初值)。
    *
    相关结构图在文章结尾,请结合查看。

    定时计数器由高八位THx和低八位TLx两个寄存器组成。
    还有TMOD工作方式寄存器。
    TCON控制寄存器,控制T0、T1的启动停止及设置溢出标志。

    TMOD寄存器
    {
    *该寄存器用于控制定时计数器的工作方式。
    前四位为T1方式,后四位为T0方式。(图一)
    GATE是门控位:
    GATE=0时,只需软件将TCON中的TR0/1为高电平,便可启动定时计数器。
    GATE=1时,上述条件满足切同时外部中断引脚INT0/1为高电平,才可启动定时计数器。
    C/T:
    C/T=0为定时模式,C/T=1为计数模式。
    M1和M0:
    工作方式设置位,具体见图二。
    主要使用方式1;方式2一般用于串口通信(精确性)。
    *}
    TCON寄存器(图一)
    该寄存器高四位与控制定时计数器相关。(低四位控制外部中断)

    *TF0/1:
    T1/0溢出请求标志位,溢出置1,发送中断请求,CPU后自动清0,也可软件清0。
    T1/0工作时,CPU可随时查询TF1/0状态(所以T1/0可用作查询测试的标志)。

    TR1/0:
    T1/0运行控制位,置1时,T1/0开始工作;置0时,停止工作。
    *
    定时计数器工作方式
    以工作方式1为例(图三)
    若GATE=0/1,经过(1处)翻转为1/0,再经过或门:为1时,便不受外部中断控制,进入与门,此时便由TR1/0控制;为0时,外部中断控制此处为1或0,再进入下一步,此时便由外部中断和TR1/0控制。
    T1/0启动后,随振荡周期+1,低八位满便向高八位+1,满后溢出置1,TF1/0发送中断请求。
    【计数个数与计数初值关系:X=2(16次方)-N】

    定时器使用
    初始化:
    对TMOD赋值,确定T0/1工作方式。
    计算初值,并写入。
    中断方式,开启EA总中断,开放定时器中断。
    使TR0/1置位,启动定时或计数。
    以下为定时器T0使用方法

    void Timer0Init()
    {
    TMOD =TMOD | 0x01  //或运算           
    TR0 = 1;         //开始计时
    ET0 = 1;             //打开定时器0中断
    EA = 1;               //打开总中断
    TH0 = 0xfc;
    TL0 = 0xfc;        //设置初值,计算方法见文后
    }
    void main()
    {
       Timer0Init();
       //neirong
    }
    void Time0 () interrupt  1
    {
         //neirong
    }
    

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 训练任务6.1 简易方波输出控制 训练任务6.2 测试外部脉冲频率控制 6.2.1 训练目的与控制要求 1熟悉单片机定时/计数器的结构与功能 2学会进行定时/计数器初始值的分析与计算 3掌握计数器的编程与控制方法 4进一步掌握...
  • 51单片机定时/计数器

    2021-01-17 20:38:06
    定时计数器 什么是定时/计数器以及用处 51单片机有2个16位定时器/计数器:定时器0(T0为P3.4)和定时器1(T1为P3.5) 这里所说的16位是指定时/计数器内部分别有16位计数寄存器。 当工作再定时模式时,每经过一个机器...

    定时计数器

    什么是定时/计数器以及用处

    51单片机有2个16位定时器/计数器:定时器0(T0为P3.4)和定时器1(T1为P3.5)
    这里所说的16位是指定时/计数器内部分别有16位计数寄存器。

    当工作再定时模式时,每经过一个机器周期,寄存器的值就会加1,当这个寄存器装满时就会溢出。我们可以计算工作再定时模式时最高单次定时时间为65535*1.085 us= 时间(单位us)
    当工作再计数器模式时,T0(P3.4引脚),T1(P3.5引脚)每来一个脉冲,计数器加1.

    定时器的作用:定时计数器可以用于精确事件定时(比延时函数精确),PWM脉宽调制,波形发生,信号时序测量等方面。在这里插入图片描述

    使用定时/计数器的步骤

    1.启动定时/计数器(通过TCON控制器)

    在这里插入图片描述

    2.设置定时/计数器工作模式(通过TMOD控制器)

    在这里插入图片描述
    在这里插入图片描述

    1. TH0、TH1为高八位,TL 0、TL 1为低八位
    2. M0=1 (不可以这么写)应写成例:TMOD = 0x01
    3. 复位值为0x00

    3. 查询定时/计数器是否溢出(读TCON内TF位)

    实践

    使用定时计数器0的十六位模式

    定时器0的初始化

    void timer0Init()
    {
    	TR0 = 1;//启动定时器0
    	TMOD = 0x01;//定时器模式1,16位定时模式
    	TH0 = (65535-46082/256;
    	TL0 =  (65535-46082)%256;//定时50ms
    	
    }
     
    

    定时时间超过50 ms可在主函数写

    unsigned char msec,sec;
    if(TF0 == 1//判断是否溢出
    {
    	TF0 = 0;//软件清零溢出标志位
    	TH0 = 0x4b;
    	TL0 = 0xfd;//定时50ms
    	msec++;//50ms到
    	if(msec == 20)
    	{
    		msec = 0;
    		sec++;//一秒时间到
    	}
    	
    }
    

    定时/计数器的计数模式

    	TR0 = 1;//启动定时器0
    	TMOD = 0x05;//定时器模式1,16位计数模式
    
    展开全文
  • 电路设计 思路 汇编 ORG 0000H LJMP START ORG 000BH ;T0的中断服务程序入口 LJMP TIME ORG 0030H START:MOV SP,#60H ...设置初始值:2^16-50μs/1μs=3CB0H MOV TL0,#0B0H SETB EA SETB ET0 SET.

    具体要求

    电路设计

    电路设计

    思路

    汇编

    ORG 0000H
    LJMP START
    ORG 000BH		;T0的中断服务程序入口
    LJMP TIME
    ORG 0030H
    START:MOV SP,#60H
    	  MOV P0,#0FEH
    	  MOV R1,#00H		;软件计数器清零
    	  MOV TMOD,#01H		;T0采用工作方式1
    	  MOV TH0,#3CH		;设置初始值:2^16-50μs/1μs=3CB0H
    	  MOV TL0,#0B0H
    	  SETB EA
    	  SETB ET0
    	  SETB TR0
    LOOP:AJMP LOOP		;循环等待
    TIME:PUSH PSW
    	 INC R1
    	 CJNE R1,#20,TIME_JMP		;定时50μm二十次
    	 CPL P0.0		;改变P0.0状态
    	 MOV R1,#00H		;清空软件计数器
    TIME_JMP:MOV TH0,#3CH
    		 MOV TL0,#0B0H
    		 SETB TR0
    		 POP PSW
    		 RETI
    		 END
    

    C语言

    #include <reg51.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit LED = P0^0;
    uchar count = 0;
    
    void main()
    {
    	TMOD = 0x00;		//T0工作方式0
    	TH0 = (8192-5000)/32;		//定义初值:2^13-5000μs/1μs
    	TL0 = (8192-5000)%32;
    	IE = 0x82;		//允许T0中断
    	TR0 = 1;
    	while(1);
    }
    
    void LED_Flash() interrupt 1
    {
    	TH0 = (8192-5000)/32;
    	TL0 = (8192-5000)%32;
    	if(++count == 200)
    	{
    		LED = ~LED;
    		count = 0;
    	}
    }
    
    展开全文
  • 2.根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 。 3.根据需求,开放定时/计数器中断选项 4.设置 TCON,通过 TR0 置 1 来让定时器开始计数。 5.等待定时时间到,如果查询处理编写查询程序...

    定时/计数器的编程

    1.根据要求选择方式,确定方式控制字,写入TMOD寄存器,配置好工作模式。

    2.根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 。

    3.根据需求,开放定时/计数器中断选项

    4.设置 TCON,通过 TR0 置 1 来让定时器开始计数。

    5.等待定时时间到,如果查询处理编写查询程序判断溢出标志,溢出标志等于1,如果中断方式处理,编写中断服务程序。

    计算如何用定时器定时时间

    我们的晶振(系统时钟)是 11.0592M,时钟周期就是 1/11059200,机器周期是 12/11059200,假如要定时 20ms,就是 0.02 秒,要经过x 个机器周期得到 0.02 秒,我们来算一下x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我们就可以这样操作,先给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536,也就是溢出,溢出后可以通过检测 TF0 的值得知,就刚好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。
    使用16位定时/计数器

    • 定时方式
      在这里插入图片描述
      在这里插入图片描述
    • 计数方式
      在这里插入图片描述
      在这里插入图片描述

    实例1 设单片机的fosc=12MHz,采用T1定时方式1在P2.0脚上输出周期为2ms的方波。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    小结:使用定时/计数器的步骤
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    实例2 采用T0定时方式2在P2.0口输出周期为0.5ms的方波(设fosc=12MHz)

    方式2,采用8位计数器,TLx。可自动重装载计数初值(TLx溢出后, THx→TLx);没有装载计数初值的延误,方式2定时精度相对较高。
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 单片机定时/计数器

    2015-12-22 23:02:41
    工作方式2高8位用来放初始值,低8位用来计数,所以计数定时的范围为0-256  定时器/计数器定时/计数范围 工作方式0:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。 工作方式1:16位定时/...
  • 51单片机 定时/计数器

    2019-03-18 15:24:21
    51单片机中有两个定时/计数器T0、T1,既可以实现定时功能,也可以实现计数功能。 T0可工作在四种定时器模式下, 在定时方式1下,定时/计数器0的核心是一个16位宽的由计数脉冲触发的按递增规...
  • 单片机关于定时计数器的C编程

    千次阅读 2017-03-29 21:10:50
    /****************************************...函数名:定时/计数器初始化函数 调 用:T_C_init(); 参 数:无 返回值:无 结 果:设置SFR中T/C1和(或)T/C0相关参数 备 注:本函数控制T/C1和T/C0,不需要使用
  • 51定时计数器

    2020-04-25 16:14:54
    定时计数器初始化2.1 选择工作方式2.2 计算初值2.3 控制是否运行计数器或打开中断3.例子:计时输出脉冲 1. 定时计数器本质 ​ 定时计数器本质是计数。对机器周期计数,则可算得时间。也可以对外部脉冲计数。 ​ ...
  • 单片机定时/计数器7.1 概述7.2 定时/计数器结构和工作原理7.2.1 工作原理:7.2.2 定时工作方式 和 计数工作方式的区别:7.3 定时/计数器的控制寄存器7.4 定时/计数器的工作方式7.5 定时/计数器的应用程序设计7.5.1...
  • 51单片机笔记(四)定时/计数器5.1 结构和工作原理5.2 方式寄存器和控制寄存器5.2.1 方式寄存器TMOD(89H)5.2.2 控制寄存器TCON(88H)5.3 计时器的设置汇编程序6.1 把单片机片内的30H~7FH 单元清零6.2 片外RAM中1000H...
  • 第5章MCS51 单片机定时器/计数器 主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用 5.1概述 (1)定时器/计数器的概念 内部计数器一定时器 定时/计数器 外部计数器计数器 (2)MCS-51的...
  • 单片机定时/计数器

    千次阅读 2012-02-01 11:26:28
    上一篇,我们给大家讲述了单片机的一些简单入门知识,不知道对您是否有用呢,今天我将继续为大家献上单片机定时/计数器知识,欢迎和我一起讨论学习,嘻嘻。   在测量控制系统中,常常要求有一些实时时钟,以实现...
  • 定时/计数器初始初始化程序应完成如下工作: 1). 对TMOD赋值, 以确定T0和T1的工作方式. 2). 计算初值, 并将其写入 TH0, TL0 或者 TH1, TL1. 3). 使用中断方式时, 则对IE赋值, 开放中断. 4). 使 TR0 或 TR1...
  • 声明:【51单片机学习过程记录】全是我自己学习、实践所记录的过程,我只是菜鸟,所有论点和观点仅代表我个人,不能确定是这个技术的...定时计数器0 定时计数器1 定时计数器2 以及 串口中断,一共六个。 2 如何理解继
  • 8.2--定时计数器定时计数器原理CPU时序定时计数器介绍基本特点工作原理51单片机定时计数器结构定时计数器的控制定时计数器的工作方式定时计数器使用定时计数器编程 定时计数器原理 CPU时序 振荡周期:为单片机提供...
  • 单片机(AT89C51)定时/计数器详解及其实验案例

    千次阅读 多人点赞 2020-04-13 13:17:09
    单片机(AT89C51)定时/计数器及其实验案例 目录: 定时/计数器应用范围 定时/计数器概述 定时/计数器的结构和工作原理 定时/计数器的控制寄存器 定时/计数器的四种工作方式 定时/计数器的应用 定时/计数器...
  • 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。机器周期:1个机器周期含6个状态周期,12个振荡周期。指令...
  • 程序说明:使用定时计数器0定时,每秒在数码管显示0到9的变化 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #define uchar ...
  • 51单片机实验(一)定时/计数器及其中断

    万次阅读 多人点赞 2019-06-04 16:13:22
    如果没有学过汇编的小伙伴建议先去熟悉一下简单的汇编指令,之前简单的实验我就不记录了,我们从定时计数器实验开始吧。 首先来回顾一下和中断,定时有关的知识 51单片机中断级别 中断源 默认中断...
  • 声明:【51单片机学习过程记录】全是我自己学习、实践所记录的过程,我只是菜鸟,所有论点和观点仅代表我个人,不能确定是这个技术的真理。我的目的是学习和有可能成为可以向别人分享的经验,因此有错误我会虚心接受...
  • Arduino定时计数器 0、1、2的灵活使用

    万次阅读 多人点赞 2015-07-24 08:25:29
    Arduino定时计数器 0、1、2的灵活使用  本人刚接触Arduino不久,由于ArduinoIDE封装太多,相信不少初学者对Arduino定时计数器的概念和使用比较模糊,比如定时器0的用法。下面我就结合AVR GCC介绍一下如何在Arduino...
  • 定时/计数器结构(T0和T1) 16位寄存器T0、T1分别由TH0、TL0和TH1、TL1四个8位计数器组成 定时器的区别: T0可分成2个独立的8位定时器,而定时器1则不能; T1可作为串口的波特率发生器,而定时器0则...
  • 定时/计数器实现功能: (1)定时功能: 定时/计数器说明(最高单次计时时间是71毫秒=65535*1.085us,1.085us是机器周期): 使用51定时/计数器步骤: 定时/计算器控制寄存器: ...提前有一个初始值就可减少达到溢
  • 补充: 1.TMOD定时器/计数器工作方式寄存器 GATE=1时,定时器由INT和TR共同控制,用于测量脉宽; ...2.TCON定时器/计数器控制寄存器 ...1.设计思路:设置定时计数器工作在定时工作方式,在中断服...
  • 1、掌握80C51单片机外部中断的初始化及中断服务子程序设计方法。 2、掌握80C51单片机定时器/计数器的程序控制方法。 实验原理简介 中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理...
  • 我们先来看初始值计算公式: *定时时间=(2^16-X)12/晶体振荡器频率 2^16=65536, X是未知量,定时时间和65536单位都是微秒。 假设晶体振荡器频率为11.0592MHZ,我要定时0.5s,那么计算思路是这样的: 首先要知道1...
  • 定时/计数器

    2020-06-08 10:37:49
    综合整理《51单片机从0开始》的定时计数器章节 其他知识 不同周期的区别和联系 机器周期:单片机执行指令所消耗的最小时间单位,在此基础上又将一个机器周期划分成6个状态周期,也就是S1-S6,,每个状态周期由两个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,006
精华内容 1,202
关键字:

单片机定时计数器初始值