精华内容
下载资源
问答
  • 51单片机定时器
    千次阅读
    2022-01-05 09:46:32

    定时器的使用方法

    1.选择工作方式(设置M1,M0)

    设置TMOD的值

    选择控制方式(设置GATE)

    选择定时器还是计数器模式(设置C/T)

    给定时/计数器赋初值(设置THx和TLx)

    2.开启定时器中断(设置ET0或ET1)=1

    3.开启总中断(设置EA)=1

    4.打开计数器(设置TR1或TR0)=1

    程序

    1. #include<reg52.h>  
    2. unsigned char i=0,x=0;  
    3. void main()  
    4. {  
    5.     TMOD=0x01;    //定时器0  
    6.     TH0=(65536-50000)/256; //赋初值  
    7.     TL0=(65536-50000)%256;  
    8.     EA=1;                 //打开总开关  
    9.     ET0=1;                //打开定时器开关  
    10.     TR0=1;                //打开计数器  
    11.     P1=0xf0;              //LED灯亮前4  
    12.     while(1)  
    13.     {  
    14.     ;     
    15.     }  
    16. }  
    17. void dinshi0() interrupt 1  
    18. {  
    19.     TH0=(65536-50000)/256; //重装初值  
    20.     TL0=(65536-50000)%256;  
    21.     i++;  
    22.     if(i>=20)  
    23.     {  
    24.         i=0;  
    25.         x=!x;  
    26.         P1=~P1;  
    27.     }         
    28. }  

    更多相关内容
  • 51单片机定时器总结

    2020-08-28 19:34:35
    C/T这一位用来控制定时器工作方式。本来T上面有一横表示低电平有效。c为计数,也即是及外部脉冲的个数,也会是定时器溢出及中断。GATE这一位用来设定外部中断脉冲是否可启动定时器。 意思就是当GATE=1时,定时器的...
  • MCS-51单片机定时器和计数器的4种工作方式解析一、定时器/计数器定时器/计数器T0由特殊功能寄存器TH0、TL0构成定时器/计数器T1由特殊功能寄存器TH1、TL1构成特殊功能寄存器TMOD用于控制和确定 定时器/计数器 T0、T1...
  • 51单片机定时器计算工具.zip
  • 索引任务要求Proteus仿真图程序代码 如果有朋友对定时器还不太了解,可以看一下这篇文章 链接: 《单片机定时器总结》—用最简洁的方式学会51单片机定时器。. 任务要求
  • 这里我们主要说的是波特率和定时器2的应用。一般来说,我们串口通讯用到的都是异步串行通讯,工作的方式为方式1.方式1即为发送一个完整的信号为10个bit.起始信号为低电平,终止信号为高电平,串口通讯的两根线在平常...
  • 本文为大家介绍了51单片机定时器/计数器的结构和原理。
  • 51单片机定时器控制数码管与led共同闪烁.rar
  • 51系列单片机为控制器,实现按键次数的统计工作,并在计满一定的次数后可以产生预定的输出;采用中断方式,对按键的计数及产生的输出放在中断服务模块当中,每当按键按下便产生一次中断,没有按键按下时,主程序...
  • (1)利用单片机定时器/计数器设计一个秒表,由 P0 口连接 LED 灯,采用 BCD 码 显示,发光二极管亮表示 1,暗则表示 0,计满 100s 后从头开始,依次循环。利用一只 按键控制秒表的启、停。请在 Proteus 中画出电路...
  • 定时/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数器还可作为串行通信中波特率发生器。
  • 单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。要点有以下几个: 1. 一定要知道英文缩写的原形,这样寄存器的名字就不用记了。 理解是最好的记忆方法。好的教材一定会给出所有英文...
  • 基于51单片机用汇编语言写的定时器中断功能,编译通过,可以参考下
  • 采用汇编语言,实现51单片机内部定时器产生脉冲的功能,附注释,方便自学。
  • 本文主要讲了51单片机定时器工作原理及用法,希望对你的学习有所帮助。
  • 51单片机定时器(实验)
  • 51单片机定时器

    千次阅读 2021-08-30 15:01:31
    1.原理: CPU 时序的有关知识: 1.振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡 周期)。 2....振荡周期又称 S 周 期或...实现的功能是:通过定时器 0 中断控制 D1 指示灯间隔 1 秒闪烁 4..

    1.原理:

    一.CPU 时序的有关知识:
      1.振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡 周期)。 
      2.状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周 期或时钟周期。 
      3.机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。 
      4.指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位
    
    二.学习定时器前需要明白的几点:
      1.51 单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之 为定时器/计数器。 
      2.定时器/计数器和单片机的 CPU 是相互独立的。定时器/计数器工作的过程 是自动完成的,
        不需要 CPU 的参与。 
      3.51 单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信 号对寄存器中的数据加 1。  
       有了定时器/计数器之后,可以增加单片机的效率,一些简单的重复加 1 的 工作可以交给定时器/计数
       器处理。CPU 转而处理一些复杂的事情。同时可以实 现精确定时作用。
    
    三.原理:
      定时/计数器的实质是加 1 计数器(16 位),由高8位和低 8 位两 个寄存器 THx 和 TLx 组成。
      它随着计数器的输入脉冲进行自加 1,也就是每来一个脉冲,计数器就自动加 1,当加到计数器为全1时,
      再输入一个脉冲就使计数 器回零,且计数器的溢出使相应的中断标志位置 1,向 CPU 发出中断请求
     (定时 /计数器中断允许时)
    
    四.相关寄存器:
        51 单片机定时/ 计数器的工作由两个特殊功能寄存器控制。
      1.TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能。
      2.TCON 是控制寄存器,控制 T0、 T1 的启动和停止及 设置溢出标志。
    

     TMOD寄存器:

    工作方式寄存器 TMOD 用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
    GATE 是门控位:
              GATE=0 时,用于控制定时器的启动是否受外部中断源信号 的影响。 只要用软件使                                       TCON 中的 TR0 或 TR1 为 1 ,就可以启动定时/计数器工作。
              GATA=1 时, 要用软件使 TR0 或 TR1 为 1 同时外部中断引脚 INT0/1 也为高电平
                                     时 ,才能启动定时/计数器工作。即此时定时器的启动条件,加上了                                         INT0/1 引脚为高电平这一条件。
    C/T :定时/计数模式选择位。
             C/T =0 为定时模式。
             C/T =1 为计数模式。
    M1M0:工作方式设置位。定时/计数器有四种工作方式, 见下表:

     TCON寄存器:

    TCON 的 低 4 位用于控制外部中断 ,已在前面介绍。 TCON 的高 4 位用于控制定
    时/计数器的启动和中断申请
    TF1(TCON.7): T1 溢出中断请求标志位 。T1 计数溢出时由硬件自动置 TF1 为 1。CPU                                  响应中断后 TF1 由硬件自动清 0。T1 工作时,CPU 可随时查询 TF1 的
                                  状态。所以,TF1 可用作查询测试的标志。TF1 也可以用软件置 1 或清                                  0,同硬 件置 1 或清 0 的效果一样。
    TR1(TCON.6): T1 运行控制位 。TR1 置 1 时,T1 开始工作;TR1 置 0 时, T1 停止工                                  作。TR1 由软件置 1 或清 0。所以,用软件可控制定时/计数器的启动
                                  与停止。
    TF0(TCON.5): T0 溢出中断请求标志位 ,其功能与 TF1 类同。
    TR0(TCON.4): T0 运行控制位 ,其功能与 TR1 类同

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

    1.方式 0:
        方式 0 为 13 位计数 ,由 TL0 的低 5 位 (高 3 位未用)和 TH0 的 8 位组成 。TL0 的低 5 位溢出时向 TH0 进位,TH0 溢出时,置位 TCON 中的 TF0 标志,向 CPU 发出中断请求。其结构图如下所示:
    计数初值与计数个数的关 系为:X=2(13)-N。
    2.方式 1:
        方式 1 的 计数位数是 16 位 ,由 TL0 作为低 8 位 TH0 作为高 8 位 ,组成了 16 位加 1 计数  器。其结构图如下所示:

     计数初值与计数个数的关 系为:X=2(16)-N。

    3.方式 2:
     方式 2 为 自动重装初值的 8 位计数方式 。工作方式 2 特别适合于用作较 精确的脉冲信号发生器。其结构图如下所示:
    计数初值与计数个数的关系为:X=2(8)-N。
    4.方式 3:
    方式 3 只适用于定时/计数器 T0 , 定时器 T1 处于方式 3 时相当于 TR1=0, 停止计数。工作方式 3 将 T0 分成为两个独立的 8 位计数器 TL0 和 TH0 。其 结构如下所示:
    这几种工作方式中应用较多的是方式 1 和方式 2。定时器中通常使用定时器
    方式 1,串口通信中通常使用方式 2

     定时器初值计算:

    1.机器周期的概念,它是 CPU 完成一个基本操作所需要的时间。 其计算公式是:机器周期         =1/单片机的时钟频率。
    2.51 单片机内部时钟频率是外部 时钟的 12 分频,也就是说当外部晶振的频率输入到单片机      里面的时候要进行 12 分频。比如说你用的是 12MHZ 晶振,那么单片机内部的时钟频率        就12/12MHZ,
    3.当你使用 12MHZ 的外部晶振的时候,机器周期=1/1M=1us。如果我们想定时 1ms 的初值是多少呢?1ms/1us=1000。也就是要计数 1000 个,初值=65535-1000+1(因为实际上计数器计数到 66636(2 的 16 次方)才溢出,所以后面要加 1) =64536=FC18H,
    所以初值即 为 THx=0XFC,TLx=0X18。

     例:定时器 0 为例介绍配置定时器工作方式 1、设定 1ms 初值,开启定时 器计数功能以及总中断

    void Timer0Init() { 
       TMOD|=0X01;//选择为定时器 0 模式,工作方式 1,仅用 TR0 打开启动。 
       TH0=0XFC; //给定时器赋初值,定时 1ms 
       TL0=0X18; 
       ET0=1;//打开定时器 0 中断允许 
       EA=1;//打开总中断 
       TR0=1;//打开定时器 
    }

    2.电路图(普中A2):

    3.程序说明:

    实现的功能是:通过定时器 0 中断控制 D1 指示灯间隔 1 秒闪烁

    4.源程序:

    #include <reg51.h>
    
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    sbit LED=P2^0;
    
    /*定时器0初始化*/
    void InitT0()
    {
    	TMOD=0x01;//方式0,定时
    	TH0=0xFC;
    	TL0=0x18;
    	ET0=1;
    	EA=1;
    	TR0=1;
    }
    
    void main()
    {
    	InitT0();
    	while(1);
    }
    
    void IntT0() interrupt 1
    {
    	 static u16 i=1;
    	 TH0=0xFC;
    	 TL0=0x18;
    	 i++;
    	if(i==1000)
    	{
    		i=0;
    		LED=~LED;
    	}
    }
    	

    5.开发板运行结果:

     实验现象:LED亮一秒,再灭一秒。


    以上就是51单片机的外部中断实验了 

    想要了解更多的单片机实验,请查看我的51单片机专栏

    展开全文
  • 基于51单片机定时器的智能交通灯系统(含仿真),通过外部中断实现的,交通路口交通灯,有数码管倒计时显示数字。里面有PR仿真程序。
  • 基于51单片机定时器C语言程序
  • 1、根据定时器/计数器0方式1逻辑结构图,分析门控位GATE取不同值时,启动定时器的工作过程。 答:当GATE=0:软件启动定时器,即用指令使TCON中的TR0置1即可启动定时器0。
  • 本文给大家分享了51单片机定时器计数器中断总结。
  • 51单片机定时器做300s倒计时器,适用于初学者
  • 在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。本文就来介绍一下MCS-51单片机定时器和计数器区别。
  • 定时器/计数器简称定时器,其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。
  • MCS-51单片机定时器课件讲解
  • 51单片机定时器实验

    2017-11-10 12:50:45
    51单片机定时器实验,代码简洁全面,均有标注,通俗易懂。
  • 51单片机定时器0与计数器1复用定时输出1S
  • 51单片机定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成 定时器作用: (1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作 (2)替代长时间的Delay,提高CPU的运行...

    定时器

    定时器介绍:

    51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成

    定时器作用:
    (1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作
    (2)替代长时间的Delay,提高CPU的运行效率和处理速度

    (…)

    定时器0初始化

    在这里插入图片描述

    定时器1初始化

    在这里插入图片描述

    中断源

    在这里插入图片描述

    #include "reg52.h"
    
    typedef unsigned int u_int;
    sbit LED1 = P2^1;
    sbit LED0 = P2^0;
    
    void Timer0Init()			//12MHz
    {
    	TMOD |= 0x01;		//0000 0001,低四位用于T0,GATE=0;C/T=0;M1M0=01:16位定时/计数器,与运算为了不让其它位受影响
    	TH0 = 0xFC;			//给定时器赋初值,分为两个寄存器,一个配置高位,一个配置低位,单位是1us
    					   //这里定时1ms,1ms=1000us,初值=65535-1000+1=64536,转为十六进制是0xFC18;
    	TL0 = 0x18;
    	ET0 = 1;		//打开定时器0中断允许
    	EA = 1;			//打开中断总开关
    	TR0 = 1;		//控制寄存器TCON的TR0,置1时定时器开启工作,置0时停止工作
    }
    
    //当定时器满时,会跳到中断处理函数
    void Timer0interrupt() interrupt 1
    {
    	u_int mount;
    	static u_int i;			//设定一个全局变量
    	TH0 = 0xFC;				//当计时满溢出后,这两个标志位会清零,这时要给其重新上初始值
    	TL0 = 0x18;
    	i++;
    	if(i == 1000)			//如果计时满1秒
    	{
    		i = 0;
    		LED1 = ~LED1;			//LED灯亮灭
    		
    		//D2亮10次后点亮D1
    		if(LED1 == 0)
    		{
    			mount++;
    			if(mount == 10)
    			{
    				mount = 0;
    				LED0 =~ LED0;
    			}
    		}
    		
    	}
    }
    int main()
    {
    	Timer0Init();
    	while(1)
    	{
    	}
    }
    

    注意:定时器的的中断处理函数不一定要放到main.c文件中,也可以放到其他的文件,处理函数要用到变量可以在对应文件中声明,如果该变量要在main函数中改变的,如PWM控制的compare比较值,可以在main.c文件的开头声明该变量,用extern关键字

    extern unsigned char compare
    
    展开全文
  • 51单片机定时器0产生200mS方波keil工程文件C源文件,包含keil的工程文件,C语言源码,头文件等。程序注释非常详细,用keil5可以直接打开。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,868
精华内容 11,947
关键字:

51单片机定时器