单片机:时钟周期,机器周期,指令周期

发布者:温暖心情最新更新时间:2014-08-19 来源: 21ic关键字:单片机  时钟周期  机器周期  指令周期 手机看文章 扫描二维码
随时随地手机看文章

时钟周期:

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

在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟 周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算 机,时钟频率越高,计算机的工作速度就越快。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。

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

机器周期:

在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期同6个 S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个 状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 具体计算为:时钟周期 X cycles。如果单片机是12周期的话,那么机器周期就是T×12。假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。

例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;52系列单片机一个机器周期等于12个时钟周期。设晶振频率为12MHz时,52单片机是12T的单片机,即频率要12分频。12M经过分频变为1M,由T=1/f,即一个机器周期变为1us

指令周期:

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

总线周期:

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

总结一下,时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。

指令周期:是CPU的关键指标,指取出并执行一条指令的时间。一般以机器周期为单位,分单指令执行周期、双指令执行周期等。现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。

机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。

时钟周期:CPU的晶振的工作频率的倒数。

例子1:

22.1184MHZ的晶振,它的晶振周期、时钟周期和机器周期分别是多少?

以51为例,晶振22.1184M,时钟周期(晶振周期)就是(1/22.1184)μs,一个机器周期包含12个时钟周期,一个机器周期就是 0.5425μs。一个机器周期一般是一条指令花费的时间,也有些是2个机器周期的指令,DJNZ,是双 周期指令.

例子2:

1.振荡周期(时钟周期):为单片机提供时钟信号的振荡源的周期。

2.机器周期:通常将完成一个基本操作所需的时间称为机器周期。

3.指令周期:是指MCU执行一条指令所需要的时间。一个指令周期通常含有1~4个机器周期。

若MCU单片机外接晶振为12MHz时具体值为:

振荡周期(时钟周期)=1/12MHz=1/12μs=0.0833μs, 机器周期=12*1/12μs=1μs,指令周期=1~4μs

说明:

1.时钟周期即晶振的单位时间发出的脉冲数,12MHz=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒。

2.一个机器周期等于12个时钟周期,所以是1微秒。

关键字:单片机  时钟周期  机器周期  指令周期 引用地址:单片机:时钟周期,机器周期,指令周期

上一篇:单片机堆栈指针的理解
下一篇:用法拉电容从容实现单片机掉电数据保存

推荐阅读最新更新时间:2024-03-16 13:39

通过PICC编译环境下,对PIC单片机程序进行操作研究
PICC基本上符合ANSI标准,但是不支持函数的递归调用,其主要原因是PIC单片机特殊的堆栈结构。PIC单片机中的堆栈是硬件实现的,其深度已随芯片固定,无法实现需要大量堆栈操作的递归算法;另外在PIC单片机中实现软件堆栈的效率也不是很高。为此,PICC编译器采用一种“静态覆盖”技术,以实现对C语言函数中的局部变量分配固定的地址空间。经这样处理后产生出的机器代码效率很高。当代码量超过4KB后,C语言编译出的代码长度与全部用汇编代码实现的差别已经不是很大( 10%),当然前提是在整个C代码编写过程中需时时注意所编写语句的效率。 PICC中的变量类型和标准C语言一样,这里不再重复。为了使编译器产生最高效的机器码,PICC把单片机中数
[单片机]
通过PICC编译环境下,对PIC<font color='red'>单片机</font>程序进行操作研究
多冗余输出的数据采集处理单元设计与实现
在现代信号处理系统中,数据采集处理系统越来越广泛地用于各行各业。现代船舶为了实现安全、经济的运行,自动化程度越来越高,需要采集处理各种数据。由于船舶本身的特殊性,各设备运行工况非常恶劣,环境干扰因素多,为了保障船舶安全,对数据采集处理的可高性有很高的要求。本文介绍一种用于船舶监测报警系统的数据采集单元,该单元由采集模块实现对多通道现场各数据的实时采集,然后由专用的多路冗余处理模块输出至本地人机界面显示和上位机进行综合处理,具有很强的实用性、通用性及可扩展性,且冗余度高,稳定可靠,已在多个船舶监测报警系统实际工程中应用。 1 系统总体设计 为满足对现场多种数据采集和处理、显示与上传,采集单元由开关量采集模块、4~20 m
[单片机]
单片机的逻辑电路与逻辑运算的介绍
在数字电路,我们经常会遇到逻辑电路,而在 C 语言中,我们则经常用到逻辑运算,二者在原理上是相互关联的。 首先,在“逻辑”这个概念范畴内,存在真和假这两个逻辑值,而将其对应到数字电路或 C 语言中,就变成了“非 0 值”和“0 值”这两个值,即逻辑上的“假”就是数字电路或C 语言中的“0”这个值,而逻辑“真”就是其它一切“非 0 值”。 然后,我们来具体分析一下几个主要的逻辑运算符。我们假定有 2 个字节变量:A 和 B,二者进行某种逻辑运算后的结果为 F。 以下逻辑运算符都是按照变量整体值进行运算的,通常就叫做逻辑运算符: 以下逻辑运算符都是按照变量内的每一个位来进行运算的,通常就叫做位运算符: 我们今后要
[单片机]
<font color='red'>单片机</font>的逻辑电路与逻辑运算的介绍
单片机DS18B20温度检测LCD1602显示程序+电路PCB设计
制作出来的实物图如下: Altium Designer画的原理图和PCB图如下: 单片机源程序如下: /*********************************************** 该程序为温度测量 用到DS18B20、LCD1602 备注:程序的许多地方也是理解了他人的程序才写出来的如果有理解错误、书写错误的地方望大家留言指导 ********************************
[单片机]
<font color='red'>单片机</font>DS18B20温度检测LCD1602显示程序+电路PCB设计
51单片机基础之五线四相步进电机
原理: 我采用单双8拍法驱动方式,发现效果很好,其次通过定时器来让步进电机速度逐步加快,当速度最大的时候,保持最快速度。 接线: 我这个开发板有驱动模块,直接接线即可。 代码: #include reg52.h #include intrins.h unsigned char code F_Rotation ={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//正转,单双8拍法驱动 unsigned int num=500; //500个10us等于5ms unsigned int a=0; void delay(unsigned int num) { whi
[单片机]
51<font color='red'>单片机</font>基础之五线四相步进电机
51单片机直流电机调速程序
#include reg52.h sbit KEY1 = P3^1; //定义调速按键 sbit PWM = P1^5; //定义调速端口 unsigned char CYCLE; //定义周期T=x*0.1ms unsigned char PWM_ON ; //定义高电平时间 void delay(unsigned int cnt) { while(--cnt); } main() { unsigned char PWM_Num; TMOD |=0x01; TH0=(65536-1000)/256; TL0=(65536-1000)%256; IE= 0x82;
[单片机]
单片机测频的信号处理电路
因为用的是单片机计数测频,信号要处理成矩形波才行。 这里一个步,运放LM358电压比较一下。输出端稳压管限幅,出来的波形送入555施密特整形得到矩形波(正负非对称),进单片机计数。 下面的图讨论的是信号干扰的问题,干扰的允许范围。加电容与不加电容对干扰的滤除
[单片机]
<font color='red'>单片机</font>测频的信号处理电路
51单片机 定时器2计数示例
1 /*-- 2 名称:定时器0 3 论坛:www.doflye.net 4 编写:shifang 5 内容:通过定时让LED灯闪烁 6 */ 7 #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 8 9 sbit LED=P1^2; //定义LED端口 10 11 /* 12 定时器初始化子程序 13 */ 14 void Init_Timer0(void) 15 { 16 TMOD = 0x01; //使用模式1,16位定时器,使用 符号可以在使用多个定时器时不受影响 17 TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数
[单片机]
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved