精华内容
下载资源
问答
  • C51 定时器

    2018-05-01 21:19:22
    C51单片机 ZLG7289 代码包含 包含C8051f020和ZLG7289头文件
  • 51定时器计算51定时器计算51定时器计算51定时器计算
  • 51 定时器

    2018-07-22 16:18:39
    定时器0 void InitTimer0(void) { TMOD |= 0x01; /* 使用模式1,16位定时器 */ ET0 = 1; /* 允许定时器T0中断 */ EA = 1; ...

    定时器0

    void InitTimer0(void)
    {
        TMOD |= 0x01;                                   /* 使用模式1,16位定时器 */
        ET0 = 1;                                        /* 允许定时器T0中断 */
        EA  = 1;                                        /* 开总中断 */
        TR0 = 1;                                        /* 开定时器T0 */
    }
    
    void Timer0(void) interrupt 1
    {
        TH0 = 0xFE;                                     /* 频率,高8 */
        TL0 = 0xFE;                                     /* 频率,低8 */
    }

    定时器1

    void InitTimer1(void)
    {
        TMOD |= 0x01;                                   /* 工作方式1 */
        ET1 = 1; //打开定时器1中断
        EA = 1; //打开总中断
        TR1 = 1; //打开定时器        
    }
    
    void Timer1(void) interrupt 3
    {
        TH1 = 0xE;                                     /* 赋值,高8 */
        TL1 = 0xE;                                     /* 频率,低8 */
    }
    展开全文
  • 51定时器

    2017-07-29 14:23:52
    一、MCS-51单片机的定时器/计数器概念 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,...
    转自:http://bbs.elecfans.com/jishu_216681_1_1.html
    一、MCS-51单片机的定时器/计数器概念

    单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的,这个准确的时间间隔是1微秒;
    MCS-51单片机外接的是12MHZ的晶振(实际上是11.0592MHZ),所以,MCS-51单片机内部的工作频率(时钟脉冲频率)是12MHZ/12=1MHZ=1000000次/秒=1000000条指令/秒=1000000次/1000000微秒=1次/微秒=1条指令/微秒;也就是说,晶振振荡一次,就会给单片机提供一个时钟脉冲,花费的时间是1微秒,此时,CPU会执行一条指令,经历一个机器周期;即:1个时钟脉冲=1个机器周期=1微秒=1条指令;
    注:个人PC机上的CPU主频是晶振经过倍频之后的频率,这一点恰好与MCS-51单片机的相反,MCS-51单片机的主频是晶振经过分频之后的频率;
    总之:MCS-51单片机中的时间概念就是通过计数脉冲的个数来测量出来的;1个脉冲=1微秒=1条指令=1个机器周期;
    MCS-51单片机定时器/计数器的简单结构图:
     ‍

    8051系列单片机有两个定时器:T0和T1,分别称为定时器和定时器T1,这两个定时器都是16位的定时器/计数器;8052系列单片机增加了第三个定时器/计数器T2;它们都有定时或事件计数功能,常用于时间控制、延时、对外部时间计数和检测等场合;
    二、定时器/计数器的结构
    8051单片机的两个定时器T0和T1分别都由两个特殊功能寄存器组成;T0由特殊功能寄存器TH0和TL0构成,而T1则是由TH1和TL1构成;
    作为定时器使用时,定时器计数8051单片机片内振荡器输出经过12分频后的脉冲个数,即:每个机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,溢出后继续从0开始循环计数;所以,定时器的分辨率是时钟振荡频率的1/12;
    作为计数器使用时,通过引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数,当输入的外部脉冲信号发生从1到0的负跳变时,计数器的值就自动加1;计数器的最高频率一般是时钟振荡频率的1/24;
    由此可知,不论是定时器还是计数器工作方式,定时器T0和T1均不占用CPU的时间,除非定时器/计数器T0和T1溢出,才可能引起CPU中断,转而去执行中断处理程序;所以说,定时器/计数器是单片机中效率高而工作灵活的部件;
    三、定时器/计数器的工作模式
    除了可选择定时器和计数器的这两种工作方式外,每个定时器/计数器都有4种工作模式;
    在模式0、1和2时,T0和T1的工作模式相同;在模式3时,两个定时器/计数器的工作模式不同;
    工作模式0:
    由TL0的低5位和TH0的全部8位共同构成一个13位的定时器/计数器;定时器/计数器启动后,定时或计数脉冲个数加到TL0上,从预先设置的初值(时间常数)开始累加,不断递增1;当 TL0计满后,向TH0进位,直到13位寄存器计满溢出;溢出时,定时器/计数器硬件会自动地把13位的寄存器值清0,中断标记TF0置1;如果需要进一步定时/计数,需要使用相关指令重置时间常数,并把定时器/计数器的中断标记TF0置0;工作模式0的结构如下图:
     ‍

    工作模式1:
    模式1与模式0几乎完全相同,唯一的区别就是,模式1中的寄存器TH0和TL0共同构成的是一个16位定时器/计数器来参与操作,因此比模式0中的定时/计数范围更大;工作模式1的结构如下图:
     ‍

    工作模式2:
    这种模式又称为自动再装入预置数模式;当定时器/计数器的寄存器TH0/TL0的值溢出时,定时器/计数器硬件设备会自动把寄存器TH0/TL0的值清0,以重新开始操作;但是有时候,我们的定时/计数操作是需要多次重复定时/计数的,如果溢出时不做任何处理,那么,在第二轮定时/计数时就是从0开始定时/计数了,而这并不是我们想要的;所以,要保证每次溢出之后,在重新开始定时/计数的操作是我们想要的,那就要把预置数(时间常数)重新装入某个地方;而重新装入预置数的操作是硬件设备自动完成的,不需要人工干预所以,这种工作模式就叫自动再装入预置数方式;既然需要重新装入预置数,那么预置数就必须要存放在某个地方,才能保证重装操作成功;在工作模式2中,把自动重装入的预置数存放在定时器/计数器的寄存器的高8位中,也就是存放在TH0中,而只留下TL0参与定时/计数操作;显然,定时/计数的方位小了很多;
    注:这个工作模式常用于波特率发生器(串口通讯),T1工作在串口模式2;用于这种方式时,定时器就是为了提供一个时间基准;计数溢出之后,不需要做太多的事情,只做一件事就可以,就是重新装入预置数,再开始重新计数,而且中间不需要任何延时;工作模式2的结构如下图:
     ‍

    工作模式3:
    由于定时器/计数器T1没有工作模式3,如果把定时器/计数器T0设置为工作模式3,那么TL0和TH0将被分割成两个相互独立的8位定时器/计数器;工作模式3的结构如下图:
     ‍

    四、定时器/计数器的定时/计数范围
    工作方式0——13位定时器 / 计数器 工作 模式,最多可计数2的13次方 次,即:8192次,[0,8191];
    工作方式1——16位定时器/计数器 工作 模式,最多可计数2的16次方 次,即:65536次,[0,65535];
    工作方式2——8位定时器/计数器工作模式,计算次数最多为2^8,即256,,[0,255];
    工作方式3——8位定时器/计数器工作模式 ,计算次数最多为2^8,即256,,[0,255];
    预置数的计算公式:预置数=最大值-需要计数的次数;

    五、定时器/计数器的控制寄存器
    8051单片机设计了两个8位的特殊功能寄存器来控制定时器/计数器的工作状态;这两个特殊功能寄存器分别是TMOD和TCON;它俩都在特殊功能寄存器区;

    1、工作模式控制寄存器TMOD(89h):
     ‍
    2、工作状态控制寄存器TCON(88H):
     ‍
    六、定时器/计数器的初始化
    注:由于8051单片机的定时器/计数器使用的时钟脉冲是外部晶振(12MHZ)经过12分频(12MHZ/12=1MHZ)之后的频率,所以,一个时钟脉冲就是1微秒;所以,8192个脉冲=8192微秒=8.192毫秒; 65536个脉冲=65536微秒=65.536毫秒; 256个脉冲=256微秒=0.256毫秒;

    1、设置定时器/计数器的工作模式TMOD(常用的是模式1:TMOD=0x01);
    2、装入预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);
    3、如果工作在中断方式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;
    4、启动定时器/计数器:TR0/TR1=1;
    展开全文
  • 51定时器中断

    2017-02-27 13:59:43
    51定时器中断
  • 51定时器计算器

    2019-02-22 11:07:56
    51定时器计算,C51单片机程序编程时使用,方便计算定时器的初值,对使用定时器计时的设计起很大的帮助,只要输入系统频率,定时器类型和需定时多少ms,就可以得到一个数值,直接代入就可以。
  • 51定时器计算

    2017-07-06 17:46:52
    51定时器计算 根据定时器,晶振频率,定时时长 计算出初值
  • c51定时器程序

    2015-05-31 23:32:11
    C51定时器程序 , 此程序用c51编写,是菜鸟级入门要学习的
  • 51定时器计算工具

    2014-08-12 21:01:10
    51定时器计算工具,可用于51定时器计算,定时器自动计算
  • C51定时器计数器

    2021-03-16 16:16:09
    目录C51定时器计数器电路图定时/计数器的结构和工作原理相关寄存器 C51定时器计数器 电路图 定时/计数器的结构和工作原理 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器TH1,TH2组成 TMOD是...

    C51定时器计数器

    电路图

    1


    定时/计数器的结构和工作原理

    2

    1,定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器TH1,TH2组成
    TH1+TL0的模是65536,可表达范围0~65535,65535+1时就会溢出产生相关中断
    2,TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;
    3,TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志


    定时计数器相关寄存器

    TCON寄存器(中断的请求与外部中断的选择)

    D7 D6 D5 D4 D3 D2 D1 D0
    addr:88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
    中断源 T1 T1 T0 T0 INT1 INT1 INT0 INT0
    • IT0和IT1是设置外部中断的触发方式
      当其为0时,为低电平触发方式
      当其为1时,为负跳变触发方式

    • IE0和IE1是外部中断标志位

    • 下面是定时/计数器的控制
      TF0和TF1是定时器的中断标志
      TR1和TR0是打开相应的定时器

      TF1:T1溢出中断请求标志位,T1计数溢出时由硬件自动置 
      TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时
      查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软
      件置1或清0,同硬件置1或清0的效果一样。
      TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
      TF0:T0溢出中断请求标志位,其功能与TF1同。TR0
      TR0:T0运行控制位,其功能与TR1类同。
      

    IE寄存器(开关)

    D7 D6 D5 D4 D3 D2 D1 D0
    addr:A8H EA ES ET1 EX1 ET0 EX0
    中断源 T1 INT1 T0 INT0
    • EX0外部中断0允许位;
    • ET0定时/计数器T0中断允许位;
    • EX1 外部中断0允许位;
    • ET1 定时/计数器T1中断允许位;
    • ES 串行口中断允许位;
    • EA CPU中断允许(总允许)位;

    计数存放寄存器

    Mnemonic ADD NAME 7~0位
    TL0 8Ah Timer / Counter 0 Low Byte
    TH0 8Ch Timer / Counter 0 High Byte
    TL1 8Bh Timer / Counter 0 High Byte
    TH1 8Dh Timer / Counter 1 High Byte

    TMOD寄存器(寄存器工作方式)

    7 6 5 4 3 2 1 0
    addr:89H GATE C/T1 M1 M0 GATE C/T0 M1 M0
    中断源 T1 T1 T1 T1 T0 T0 T0 T0

    GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作
    C/T :定时/计数模式选择位。 C/T =0为定时模式; C/T =1为计数模式。
    M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。

    M1M0设置的工作方式

    M1 M0 工作方式 功能简述
    0 0 方式0 13位计数器,TLi只用低5位
    0 1 方式1 16位计数器
    1 0 方式2 8位自动重装计数器。仅TLi作为计数器,THi的值不变。TLi溢出, THi中的值自动装入TLi中.
    1 1 方式3 T0分为两个独立的8位计数器

    方式0

    3

    方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求


    方式1

    4

    方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器
    计数个数与计数初值的关系为: X=216-N


    方式2

    5

    方式2为自动重装初值的8位计数方式
    计数个数与计数初值的关系为: X=28-N


    方式3

    6

    方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数
    工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。


    定时器操作步骤:

    1,选择工作方式(设置M1,M0)
    2,选择控制方式(设置GATE)
    3,选择定时器还是计数器模式(设置C/T)
    4,给定时/计数器赋初值(设置THx和TLx)
    5,开启定时器中断(设置ET0或ET1)
    6,开启总中断(设置EA)
    7,打开计数器(设置TR1或TR0)
    8,编写中断程序


    周期晶振

    1,晶振频率(frequency oscillate): 晶体振荡器的固有频率
    2,时钟周期(Clock Cycle): 时钟周期是计算机中最基本的、最小的时间单位,为晶振频率12Mhz倒数
    3,状态周期: CPU从一个状态转换到另一状态所需要的时间,一个状态周期S包含2个节拍,前一时钟周期称为P1节拍,后一时钟周期称为P2节拍
    4,机器周期: 一个机器周期包含六个状态例如,取指令、存储器读、存储器写等。即机器周期等于6个状态周期,而一个状态周期是2个时钟周期,因此一个机器周期又等于12个时钟周期
    5,指令周期: 取出并执行一条指令的时间
    6,总线周期: 访问1次存储器和I/O端口操作所需要的时间
    时间比较:时钟周期 < 状态周期 < 机器周期 < 指令周期 < 总线周期


    初值计算

    这里使用16位的定时器,那单片机定时器0的最大计数就是65536.晶振约为12MHZ(11.0592MHZ),那一个机器周期就是1us,定时器 0工作在方式1时最大定时65.536ms


    1,计数值 = 定时时间 / (振荡周期 * 12)
    2,初值 = 65536 - 计数值
    3,定时时间 =(振荡周期 * 12) * (65536 - 初值)


    例子

    //第一个led灯以500ms一次的频率闪烁
    void timer1_init()//初始化
    {
    	TMOD = 0x10; //定时器0选择工作方式1
        TH1 = 0x4C;	 //设置初始值,定时50ms
        TL1 = 0x00; 
        EA = 1;			 //打开总中断
        ET1 = 1;		 //打开定时器0中断
        TR1 = 1;		 //启动定时器0
    }
    
    void main()
    {
        int i = 0;
    	led = 1;
    	timer1_init();//定时器1的初始化
    	while(1)
    	{
    		if(i==10)
    		{
    		  led = ~led;
    		  i = 0; //注意i需要零
    		}
    	}
    }
    
    void timer1() interrupt 3  //中断服务函数
    {
        TH1 = 0x4C;	 //设置初始值,定时50ms,这里晶振用12
        TL1 = 0x00;
    	i++;
    }
    

    …Thank you for reading…______________________Heisenberg_Poppings

    展开全文
  • 51定时器初值

    2021-02-03 21:24:24
    51定时器初值时钟周期机器周期指令周期初值计算 时钟周期 是指振荡源的周期,,定义为时钟脉冲的倒数 外部晶振12M 则时钟周期为 1s/12M = 1S/12 000 000 = 1/12us 外部晶振11.0592M 则时钟周期为 1s/11.0592M = 1S...

    时钟周期

    是指振荡源的周期,,定义为时钟脉冲的倒数

    外部晶振12M
    则时钟周期为	1s/12M	=	1S/12 000 000		=	1/12us
    
    外部晶振11.0592M
    则时钟周期为	1s/11.0592M	=	1S/11 059 200		=	1/11.0592us
    
    外部晶振24M
    则时钟周期为	1s/24M	=	1S/24 000 000		=	1/24us
    

    机器周期

    单片机执行一单位指令所需要的 时钟周期 个数

    机器周期也称为CPU周期。
    在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。
    一般情况下,一个机器周期由若干个时钟周期组成。 如 1T,就表示,需要 1个时钟周期; 12T 即为 12个时钟周期。 这些都只是
    一单位指令的时间(如自增、自减等),多单位指令时间进行倍乘(如赋值语句需要2个机械周期,即乘以2倍),
    传统的8051单片机就是12T的,即完成1个单位指令所需时间为12个时钟周期 。 1T的完成1个单位指令所需时间则为1个机器周期。

    1T		12Mhz的机器周期为1/12us
    12T		12Mhz的机器周期为1us
    

    1T的要比12T的速度更快

    指令周期

    CPU完成一条指令的时间叫指令周期

    一般一条完整的指令包括:取指周期、间址周期、执行周期、中断周期。

    初值计算

    1. 确定机器周期是多少,如1T,或6T,或12T
    2. 确定晶振频率,如11.0592Mhz,或24Mhz,12Mhz,8Mhz
    3. 确定定时时间,10ms,20ms,50ms等
    /*
    1T		12Mhz	1ms
    0XFF FF - (1ms/1s)*(12 000 000*1)
    值为53,536,0XD1 20
    将其高八位填入TH,低八位填入TL
    */
    TH1	= 0xD1;
    TL1 = 0X20;
    /*
    12T		11.0592		50ms
    0XFF FF   -  (50ms/1s)*(11 059 200/12)
    值为19456,0X4C00
    将其高八位填入TH,低八位填入TL
    */
    TH0 = 0x4C;
    TL0 = 0x00;
    

    0XFFFF-(初值/1s)*(晶振频率/?T)

    
    unsigned char Return_TH(unsigned char S,unsigned MHz,unsigned char unsigned char Tim_us)
    {
    	unsigned char TH;
    	TH = (0XFFFF-((Tim/1 000 000)*((MHZ*1 000 000)/S))))&0XFF
    	return TH;
    }
    
    unsigned char Return_TL(unsigned char S,unsigned MHz,unsigned char unsigned char Tim_us)
    {
    	unsigned char TL;
    	TL = (0XFFFF-((Tim/1 000 000)*((MHZ*1 000 000)/S))))>>8;
    	return TL;
    }
    
    int main()
    {
    	unsigned char a,b,c,TH1,TL1;
    	printf("请输入---分频数S---晶振频率Mhz----定时时间us--");
    	scanf("%d%d%d",&a,&b,&c);
    	TH1 = Return_TH(a,b,c);
    	TL1 = Return_TL(a,b,c);
    }
    

    差不多这样,毕竟有现成的工具可以用,HHH

    展开全文
  • 51定时器时间计算

    2011-12-07 17:23:09
    51定时器时间计算
  • 4月15日C51定时器.docx

    2020-04-18 20:38:06
    有关于c51定时器的个人理解,定时器的如何配备,如何能够计算定时器的时间,可以私聊我,TMOD工作方式寄存器,TCON控制寄存器的介绍。
  • 51定时器程序

    2018-11-28 21:03:25
    51单片机定时器控制LED灯闪烁程序,编译环境keil4,经下载到开发板上实验成功。
  • 51定时器计算---

    2010-05-11 13:59:12
    51定时器计算.rar 51定时器计算.rar 51定时器计算.rar 51定时器计算.rar
  • 51定时器设置计算 计算定时器所需要配置的值
  • 89C51定时器学习.doc

    2011-12-10 16:56:21
    89C51定时器学习,心得记录。89C51定时器学习,心得记录
  • 51定时器定时时间计算器,51定时器,定时时间计算,定时时间计算器
  • C51定时器和中断-详解

    2012-10-16 11:29:33
    C51定时器和中断-详解.pdf
  • 超级好用的51定时器

    2011-06-28 18:59:55
    很好用的51定时器 简单实用 很不错 各功能齐全 值得拥有
  • 单片机 计数器 定时器计算软件 51定时器计算.EXE
  • C51定时器课件

    2011-11-26 10:12:35
    C51课件 定时器 详细介绍了C51中定时器的应用基础
  • 51定时器处置计算软件 准确计算定时器的时间
  • 51定时器计算软件.RAR

    2011-07-01 14:37:28
    51定时器计算软件.RAR ,是单片机计算定时器很方便的软件!
  • 51定时器 18B20

    2018-01-06 12:25:04
    51单片机 定时器 18B20 亲测可用。。。。。。。。。。。。。。。。
  • 51定时器计数初值的计算公式的小工具 希望对大家有用
  • C51定时器计算.exe

    2008-01-28 21:25:08
    C51定时器计算.exe

空空如也

空空如也

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

51定时器