精华内容
下载资源
问答
  • 对于外接时钟电路,要求 XTAL1 接地,XTAL2 脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于 12MHz 即可。 晶体振荡器的振荡信号从 XTAL2 端送入内部时钟电路,它将该振荡信号...
  • 单片机总线时钟粗略计算

    千次阅读 2017-11-14 17:09:08
    时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 机器周期: 在计算机...

    最近一直在想怎么测单片机的总线时钟,于是想出了一个方法,也不知是否正确,权且估算一下吧。

    先说明一下时钟周期,机器周期,总线周期的区别吧:

    时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。

    机器周期:    在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。    8051系列单片机的一个机器周期同6个 S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个 状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 (例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒)

    指令周期:    执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。       对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。    通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

     

    总线周期: 由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或 I/O接口)进行一次访问所需时间称为一个总线周期。

    总结:时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。指令周期:是CPU的关键指标,指取出并执行一条指令的时间。一般以机器周期为单位,分单指令执行周期、双指令执行周期等。现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。时钟周期:CPU的晶振的工作频率的倒数。

     

    一个nop所占的时间为一个机器指令的时间,8051中为1us。

     

    单片机型号为飞思卡尔MC9s12xep100,在main函数里放置时钟初始化函数,同时初始化一个引脚,并设置为输出,然后主函数放置该引脚电平的翻转函数。大致如下;

    逻辑分析仪版:

    void main()
    {
      MCUInit();
      DDRP_DDRP4=1;//PTP4设置为输出
      while(1)
      {
        PTP_PTP4=0;
        PTP_PTP4=1; 
        PTP_PTP4=0;
      }
    }

    在16MHZ总线情况下,该引脚从0-->1-->0的时间,也就是高电平的保持时间为480ns

    当加入nop后,如下图所示,在同等情况下,高电平时间为540ns,也就是说一个nop占了60ns。

    void main()
    {
      MCUInit();
      DDRP_DDRP4=1;//PTP4设置为输出
      while(1)
      {
        PTP_PTP4=0;
        PTP_PTP4=1; 
        asm("nop");
        PTP_PTP4=0;
      }
    }

    这个60ns就和(1/总线频率)=62.5ns很相似了,如果放置10个nop会怎样呢?大约耗时1.105us,减掉480ns,还有625ns,那么一个nop占62.5ns。如果继续增加呢,100个nop会怎样呢?大约耗时6.725us,减掉480ns,还有6245ns,平均下来一个nop占62.45ns。事实上,在采集波形时也会有6.73us(正好一个nop62.5ns)的情况,但出现的频率没有6.725us的多,所以写了6.725us。

    uint16_t ADS[16];
    void main()
    {
      MCUInit();
      DDRP_DDRP4=1;//PTP4设置为输出
      while(1)
      {
        PTP_PTP4=0;
        PTP_PTP4=1; 
        ADS[0]=1;
        ADS[1]=2;
        ADS[2]=3;
        ADS[3]=4;
        ADS[4]=5;
        ADS[5]=6;
        ADS[6]=7;
        ADS[7]=8;
        ADS[8]=9;
        ADS[9]=0;
        ADS[10]=10;
        ADS[11]=11;
        ADS[12]=12;
        ADS[13]=13;
        ADS[14]=14;
        ADS[15]=15;
        PTP_PTP4=0;
      }
    }

    总共有16句话,unsigned int类型,测得的时间为4.54us,减掉480ns,再进行平均,一条语句占用253.75ns,再除以62.5 ≈4.

    如果将类型改为unsigned char类型,测得的时间为2.98us,减掉480ns,再进行平均,一条语句占用156.25ns,再除以62.5 ≈2.5.

    下面是同等情况下的数据,仅供参考

    类型 时间 与62.5ns倍数关系
    总线频率 16MHZ(62.5ns)  
    引脚从0-->1-->0时间 480ns  
    char 156.25ns 2.5
    unsigned char 156.25ns 2.5
    int 253.75ns 4
    unsigned int 253.75ns 4
    float 519.375ns 8.31
    double 519.375ns 8.31

    除了变量类型有影响外,发现被赋值的值如果是0~255,与0~65535也是不同的,后者花费的时间比前者要长一些。

    示波器版:

    void main()
    {
      MCUInit();
      DDRP_DDRP4=1;//PTP4设置为输出
      while(1)
      {
        PTP_PTP4=~PTP_PTP4; 
      }
    }

    然后用示波器测量该引脚翻转电平所用的时间,以下是部分数据:(示波器精度有限)

     

    总线频率—>耗时    ≈ (1/总线频率)*10

    16MHZ  —>620ns ≈ 625ns

    20MHZ  —>500ns ≈ 500ns

    32MHZ  —>312ns ≈ 312ns

    40MHZ  —>252ns ≈ 250ns

    48MHZ  —>208ns ≈ 208ns

    60MHZ  —>168ns ≈ 166ns
     

    通过上面的数据,发现耗时与 (1/总线频率)*10基本相等,至于为何乘10,不知何因。权且当做粗略估算吧。

     

     

    ----------------------------------------------------------------单片机9s08dz60------------------------------------------------------------------------------

    顺便记录下对dz60的测试

     

    总线频率—>翻转电平耗时    ≈ (1/总线频率)*10   asm("nop")耗时

    16MHZ  —>680ns               ≈ 625ns                 370ns

    8MHZ  —>1.36us               ≈ 1.25us                 740ns

    4MHZ  —>2.76us               ≈ 2.50us                 1.5us

    其中asm("nop")耗时的计算方法如下:

     

    void main()
    {
      MCUInit();
      DDRP_DDRP4=1;//PTP4设置为输出
      while(1)
      {
        PTP_PTP4=1; 
        asm("nop");
        PTP_PTP4=0; 
      }
    }

    下面附dz60时钟初始化函数(晶振8MHZ,总线8MHZ)

     

     

    void MCUInit(void)
    { 
            SOPT1 = 0x20;						//取消看门狗,使能停止模式
    	SOPT2 = 0X00;						//写入一次SOPT2
    	/* 初始化时钟,使用PEE模式,晶振为8Mhz,总线频率为8mhz(datasheet P151) */  
    	/*----------------------------FEI -> FBE----------------------------------*/
    	MCGC2 = 0x36;						//总线分频为1.P133.
    	while (!MCGSC_OSCINIT);				//EREFS位选择的晶体是否完成初始化.P134.
    	MCGC1 = 0xB8;						//选择使用外部晶振.P131.
    	while (MCGSC_IREFST);       		//等待外部参考成为参考时钟的当前源
    	while(MCGSC_CLKST != 2);			//等待外部参考 时钟成为 MCGOUT
    	
    	/*----------------------------FBE -> BLPE---------------------------------*/ 
    	MCGC2 = 0x3E;						//设置LP位为1(此时已经进入BLPE模式)
    	MCGC1 = 0x98;//0x98->RDIV=8;0x90->RDIV=4;		//更改RDIV
    	MCGC3 = 0x44;//0x44->VDIV=16;0x48->VDIV=32		//选择PLL,VDIV为4
    	while(!MCGSC_PLLST);				//PLLS时钟的当前源是否PLL
    
    	/*----------------------------BLPE -> PBE---------------------------------*/ 
    	MCGC2 = 0x36;						//设置LP位为0(此时已经进入BLPE模式)	
    	while (!MCGSC_LOCK);				//等待PLL获得锁定
    
    	/*----------------------------PBE -> PEE----------------------------------*/
    	MCGC1 = 0x18;						//选择PLL为系统时钟
    	while(MCGSC_CLKST != 3);			//等待时钟稳定
    }

    MCGOUT=(8MHZ/8)*16/1=16MHZ,总线时钟为8MHZ

     

     



     

     

     

     

     

     

     

    展开全文
  • 对于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12MHz即可。 晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,...
  •  时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。  在一个时钟周期内,CPU仅...
  • 单片机应用中,常常会遇到这种情况,在用单片机制作电子钟或要求根据时钟启控的控制系统时,会突然发现当初校准了的电子时钟的时间竟然变快或是变慢了。于是,尝试用各种方法来调整它的走时精度,但是最终的效果还是...
  • 时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us,是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。由于时钟脉冲是计算机的基本工作脉冲,它控制着...

    整理自百度知道

    时钟周期

    时钟周期也称为振荡周期。时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us,是计算机中最基本的、最小的时间单位。

    在一个时钟周期内,CPU仅完成一个最基本的动作。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。

    在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

    机器周期

    在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成,也就是说1个机器周期=6个状态周期=12个时钟周期。单片机的晶振为12MHz时,机器周期为1us;晶振为6MHz时,机器周期为2us。

    指令周期

    指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。

    通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

    转载于:https://www.cnblogs.com/Camilo/p/3468906.html

    展开全文
  • 单片机时钟电路

    千次阅读 2019-08-15 08:08:00
    首先,单片机能正常工作的必要条件之一就是时钟电路,所以单片机就很需要晶振。  晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机...

     

    首先,单片机能正常工作的必要条件之一就是时钟电路,所以单片机就很需要晶振

      晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机在运行的时候,需要一个脉冲信号,做为自己执行指令的触发信号,可以简单的想象为:单片机收到一个脉冲,就执行一次或多次指令。

    单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。—个机器周期包括12个时钟周期。如果一个单片机选择了12兆赫兹晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。

     MCS—51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较馒,得要2个机器周期,还有两条指令要4个机器周期才行。为了衡量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。例如,当需要计算DJNZ指令完成所需要的时间时,首先必须要知道晶振的频率,设所用晶振为12兆赫兹,则一个机器周期就是1us。而DJNZ指令是双周期指令,所以执行一次要2us。如果该指令需要执行500次,正好1000us,也就是1ms。

      机器周期不仅对于指令执打有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12兆赫兹晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。

      晶振是给单片机提供工作信号脉冲的。这个脉冲就是单片机的工作速度。比如12兆晶振。单片机工作速度就是每秒12兆。单片机内部也有晶振。接外部晶振可以或得更稳定的频率.

    转载于:https://www.cnblogs.com/yuanqiangfei/p/11355758.html

    展开全文
  • 一、时钟周期   时钟周期,一般也称振荡周期。定义为时钟频率的倒数,如果晶振的输出没有经过分频或倍频就直接作为CPU的工作时钟,则时钟周期就等于晶振...  比如,一个8051单片机外接一个8MHz的晶振,晶振不分...

    一、时钟周期。也称振荡周期,定义为时钟频率的倒数
       如果晶振的输出没有经过分频或倍频就直接作为cpu的工作时钟,则时钟周期就等于晶振的振荡周期;如果晶振的输出经过分频或倍频后作为cpu的工作时钟,则时钟周期就是分频或倍频后的。即时钟周期是CPU的实际工作频率的倒数。
    它是单片机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于不分频倍频的单片机来讲,若采用了1MHz的时钟频率,则时钟周期就是1μs;若采用4MHz的时钟频率,则时钟周期就是250us。由于时钟脉冲是CPU的基本工作脉冲,它控制着CPU的工作节奏(使CPU的每一步都统一到它的步调上来)。显然,对同一种单片机,时钟频率越高,单片机的工作速度就越快。
    比如,一个8051单片机外接一个8MHz的晶振,晶振不分频也不倍频,直接用于CPU的工作,那么此8051单片机的时钟频率就位1/8(us);同样,一个STM32F10XD的单片机外接一个8MHz的晶振,晶振倍频7倍,即72MHz,然后用于CPU的工作,那么此STM32F10XD的时钟频率为1/72(us)。但是,由于不同的单片机其内部硬件电路和电气结构不完全相同,所以其所需要的时钟频率范围也不一定相同。
    我们使用的STC89C系列单片机的时钟范围约在1MHz~ 40MHz。STM32F1系列单片机的系统时钟范围一般则在16~128MHZ

    二、机器周期
      在计算机中, 为了便于管理, 通常把一条指令的执行划分为若干个阶段, 每一个阶段完成一项基本任务,如: 取指令、存储器读、存储器写等, 这每一项工作称为一个基本操作,完成一个基本操作所需要的时间为机器周期。一般情况下,一个机器周期由若干个状态周期(时钟周期)组成。
      8051系列单片机的一个机器周期由6个状态周期组成, 1个状态周期=2个时钟周期,所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。

    三、指令周期
      指令周期是执行一条指令所需要的时间,即CPU从内存取出一条指令并执行这条指令的时间总和。一般由若干个机器周期组成,从取指令、分析指令到执行完所需的全部时间。指令不同,所需的机器周期数也不同。
      对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

                                                     时钟周期 = 晶振的震荡周期(无分频或倍频)
                                                     时钟频率(决定单片机工作速度) = 时钟周期的倒数
                                                     1个机器周期=6个状态周期=12个时钟周期
                                                     1个状态周期=2个时钟周期
                                                     一个指令周期含有1~4个机器周期

    展开全文
  • 说到51单片机时钟首先想到51时怎么工作的呢?微型控制器要想工作必须要有一个“动力”,对于51单片机来说,这个“动力”就是时钟源。一般应用上会外接一个12MHz的晶振作为时钟源。 一般第一种接法用的...
  • 单片机时钟的解析

    2018-11-17 12:02:34
     时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。  在一个时钟周期内,CPU仅完成一个最...
  •  时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。  在一个时钟周期内,...
  • 01在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为...时钟电路:(a)内部方式时钟电路,(b)外接时钟电路在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成...
  • 单片机之外部时钟与内部时钟

    万次阅读 多人点赞 2018-12-15 20:33:53
     首先,单片机能正常工作的必要条件之一就是时钟电路,时钟单片机的脉搏,是单片机的驱动源,单片机工作是在统一的时钟脉冲控制下一拍一拍进行工作的。这个脉冲由单片机控制器中的时序电路发出的。所以单片机就很...
  • 导读:本文针对用单片机制作电子钟或要求根据时钟启控的控制系统时,出现的校准了的电子时钟的时间竟然变快或是变慢了的情况而提出的一种解决方案。  单片机应用中,常常会遇到这种情况,在用单片机制作电子钟或...
  • 01 在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,...时钟电路:(a)内部方式时钟电路,(b)外接时钟电路 在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调...
  • 01在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出...时钟电路:(a)内部方式时钟电路,(b)外接时钟电路在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微...
  • 时钟电路:(a)内部方式时钟电路,(b)外接时钟电路在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2一般取30pF,晶振的频率取值在1.2MHz~12MHz之间。...
  • 3:XTAL1(19脚)XTAL2(20脚):外接晶振(18脚输出,19脚输入);4、PSEN(29脚):片外ROM选通信号,低电平有效;5、ALE/PROG(30脚):地址锁存信号输入端/EPROM编程脉冲输入端;6、RESET/VPD(9脚):复位信号输入端/备用...
  • 对于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12MHz即可。 晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,...
  • 常见的MSC-51单片机中一般采用双列直插(DIP)封装,共40个引脚。 图为引脚排列图。其中的40个引脚大致可以分为四类:电源、时钟、控制和I/O引脚。 一:电源 VCC:芯片电源,一般为+5V。 VSS:接地端。 二:时钟 XTAL1...
  • 时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU...
  • 在初学单片机的时候,总是伴随很多有关于晶振的问题,其实晶振就如同人的心脏,是血液的脉搏。把单片机的晶振问题搞明白了,51单片机的...通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机在运行...
  • 51单片机八位数码管时钟电路仿真

    千次阅读 2020-07-03 10:43:38
    器件选型有:AT89C51模块,八位阳极数码管显示模块,两个独立按键模块,还有P1口作为I/O口需要外加上拉电阻的电阻排,由于仿真的单片机模块内有时钟电路以及复位电路,这里省略了。 2、硬件设计与分析 电路原理图如...
  • 1、时钟周期也称为振荡周期,就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us,是计算机中最基本的、最小的时间单位。 2、在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若...
  • 项目上用到了合泰的32位单片机HT32F50230,出于成本考虑,不打算外接晶振,而是采用芯片内部的振荡器为单片机提供时钟。但是合泰的例程都是默认使用的外部时钟。下面将介绍如何将外部时钟改为内部时钟。 方法其实...
  • 继续假期写总结的习惯,开始每天总结。百度空间居然倒闭了STC15单片机学习日记-时钟与复位" TITLE="2015.07.25 STC15单片机学习日记-时钟与复位" />,去年...当有特殊要求时可由XTAL1和XTAL2引脚外接晶振产生时钟信号
  • 可以记录时间日历,包括年、月、日、时、分、秒、星期,并能自动计算闰年,很多对时间敏感的设备都有该设备,该设备可以有主备两个电源输入,主电源用外接电源供电,备电源接电池,保证在断电的情况下,时钟芯片可以...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 222
精华内容 88
关键字:

单片机外接时钟