51单片机指令周期,机器周期,时钟周期详解

发布者:angelbaby最新更新时间:2016-09-28 来源: eefocus关键字:51单片机  指令周期  机器周期  时钟周期 手机看文章 扫描二维码
随时随地手机看文章
       51单片机有指令周期,机器周期,时钟周期的说法,看似相近,但是又都不太一样,很容易混淆。还是详细分析一下。

        时钟周期:单片机外接的晶振的振荡周期就是时钟周期,时钟周期=振荡周期。比方说,80C51单片机外接了一个11.0592M的晶体振荡器,那我们就说这个单片机系统的时钟周期是1/11.0592M,这里要注意11.0592M是频率,周期是频率的倒数。

        机器周期:单片机执行指令所消耗的最小时间单位。我们都知道51单片机采用的CISC(复杂指令指令集),所以有很多条指令,并且各条指令执行的时间也可能不一样(有一样的哦),但是它们执行的时间必须是机器周期的整数倍,这就是机器周期的意义所在。8051系列单片机又在这个基础上进行细分,将一个机器周期划分为6个状态周期,也就是S1-S6,每个状态周期又由两个节拍组成,P1和P2,而P1=P2=时钟周期。这也就是经常说的8051系列单片机的的时钟频率是晶振频率的12分频,或者是1/12,就是这个意思。现在(截至2012)新的单片机已经能做到不分频了,就是机器周期=时钟周期。

        指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。现在(截至2012)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。

51 单片机指令周期,机器周期,时钟周期详解 - dzdesigned80 - dzdesigned80的博客
 
        来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。
 
 
 
 
另外附上一篇:

MCS-51单片机的指令时序

 

时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。
    ·节拍与状态:
    我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。
    ·机器周期:
    MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHz的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是1us。
    ·指令周期:
    执行一条指令所需要的时间称为指令周期,MCS-51的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期(这些内容,我们将在下面的章节中加以说明)。
    ·MCS-51的指令时序:
    MCS-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:
    ·单字节指令单机器周期
    ·单字节指令双机器周期
    ·双字节指令单机器周期
    ·双字节指令双机器周期
    ·三字节指令双机器周期
    ·单字节指令四机器周期(如单字节的乘除法指令)
    下图是MCS-51系列单片机的指令时序图:

MCS-51的指令时序
      上图是单周期和双周期取指及执行时序,图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE信号两次有效,第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间。

    接下来我们分别对几个典型的指令时序加以说明。
    ·单字节单周期指令:
    单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。
    ·双字节单周期指令:
    这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。
    ·单字节双周期指令:
    两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
    单字节双周期指令有一种特殊的情况,象MOVX这类指令,执行这类指令时,先在ROM中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
    上页的时序图中,我们只描述了指令的读取状态,而没有画出指令执行时序,因为每条指令都包含了具体的操作数,而操作数类型种类繁多,这里不便列出,有兴趣的读者可参阅有关书籍。
    ·外部程序存储器(ROM)读时序
    右图8051外部程序存储器读时序图,从图中可看出,P0口提供低8位地址,P2口提供高8位地址,S2结束前,P0口上的低8位地址是有效的,之后出现在P0口上的就不再是低8位的地址信号,而是指令数据信号,当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求,在S2其间必须把低8位的地址信号锁存起来,这时是用ALE选通脉冲去控制锁存器把低8位地址予以锁存,而P2口只输出地址信号,而没有指令数据信号,整个机器周期地址信号都是有效的,因而无需锁存这一地址信号。
外部程序存储器时序图
      从外部程序存储器读取指令,必须有两个信号进行控制,除了上述的ALE信号,还有一个PSEN(外部ROM读选通脉冲),上图显然可看出,PSEN从S3P1开始有效,直到将地址信号送出和外部程序存储器的数据读入CPU后方才失效。而又从S4P2开始执行第二个读指令操作。
    ·外部数据存储器(RAM)读时序
    右图8051外部数据存储器读写时序图,从ROM中读取的需执行的指令,而CPU对外部数据存储的访问是对RAM进行数据的读或写操作,属于指令的执行周期,值得一提的是,读或写是两个不同的机器周期,但他们的时序却是相似的,我们只对RAM的读时序进行分析。
    上一个机器周期是取指阶段,是从ROM中读取指令数据,接着的下个周期才开始读取外部数据存储器RAM中的内容。
外部程序存储器时序图
      在S4结束后,先把需读取RAM中的地址放到总线上,包括P0口上的低8位地址A0-A7和P2口上的高8位地址A8-A15。当RD选通脉冲有效时,将RAM的数据通过P0数据总线读进CPU。第二个机器周期的ALE信号仍然出现,进行一次外部ROM的读操作,但是这一次的读操作属于无效操作。
    对外部RAM进行写操作时,CPU输出的则是WR(写选通信号),将数据通过P0数据总线写入外部存储

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

上一篇:单片机定时器定时计算方法
下一篇:单片机控制的LED动态扫描显示原理

推荐阅读最新更新时间:2024-03-16 15:12

51单片机学习笔记(二)_流水灯实验
流水灯实验电路图 一、控制一/多灯亮灭 汇编实现 ;注释 LOOP: ;SETB P1.1 ;(1)熄灭灯 MOV P1,#0FFH; LCALL DELAY ;(2)延时一段时间 ;CLR P1.1 ;(3)点亮灯 MOV P1,#0FDH; LCALL DELAY ;(4)延时一段时间 AJMP LOOP ;(5)跳转到第一句LOOP处 ;以下子程序 DELAY: MOV R7,#250 ; D1: MOV R6,#250 ; D2: DJNZ R6,D2 ;R6=R6-1;IF(R6!=0) GOTO D2; DJNZ R7,D1 ; RET ;返回主程序 END
[单片机]
<font color='red'>51单片机</font>学习笔记(二)_流水灯实验
基于51单片机秒表设计,独立按键实现启动、复位、暂停功能
功能说明: #include reg52.h //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit K1=P3^1; //开始 sbit K2=P3^0; //停止 sbit K3=P3^2; //使用中断 清零 //数码表 u8 code smgduan ={0x3f,0x06,0x5b, 0x4f,0x66,0x6d, 0x7d,
[单片机]
基于<font color='red'>51单片机</font>秒表设计,独立按键实现启动、复位、暂停功能
51单片机学习笔记(四)
隔了两天没有写笔记了,也不算是偷懒吧,因为这两天写的程序也不少的,只是有些问题没有弄清楚,所以没有写笔记,今天基本上弄懂了,但还是有一些地方处理不好,还是把它留到日后处理吧,感觉这些问题不是我一时半会能够搞定的。 这两天主要是学习了51单片机的计时器的使用。分别尝试了查询法计时和中断法计时。 其中查询法计时我自己编写程序时检测完 TF0 口数据为1时(数据溢出),时间到。于是开始执行相应的指令,但忘记用clr tf0来使tf0口清零,以置后续计时出错。参考书本后发现有jbc这样的指令,可以在检测到tf0为1时跳转且把tf0位清零。免去clr指令。 下面说一说重点。数字电子时钟。 这个程序一共有200多行,第一次写那
[单片机]
基于AT89C51单片机应用系统的串行通信设计
    1 前 言     在红外成像技术的电力设备状态检测系统中,基于AT89C51单片机的应用系统,采用美国雷态公司的型号为3iLRL3的非接触式红外测温仪。该测温仪采用的是RS232C串行通信标准接口,该接口在很多通信设备中通用,目前与PC机的直接串行通信也是RS 232C接口。尽管RS232C性能指标并非很好,但还是有广泛的市场支持。就可以方便的在2个数字设备之间进行信息的交换,实现全双工的传送数据,硬件成本低。而且通用性好。     2 串行通信的硬件设计     串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用
[单片机]
基于AT89C<font color='red'>51单片机</font>应用系统的串行通信设计
51单片机测变周期脉冲信号的简便方法
脉冲信号是工程中一类较常见的信号,如光电位移、速度、转速等传感器输出的信号,而脉冲宽度和脉冲周期是其基本参数,往往需对它们进行测量。对等周期的脉冲信号的测量比较容易,只需测量任一脉冲宽度或周期就可以了,近年来已有许多MCS-51用户利用测量脉冲信号的基本参数而开发新产品,如山东大学的“ZBCY—I型智能标枪速度测试仪”就是利用测量一个脉冲宽度来获得标枪在某一飞行距离内的平均速度。对连续变周期的脉冲信号周期的测量则相对困难些,许多测量人员都首先对这类信号进行二分频后一路反相,然后用两个定时/计数器分别测出两路脉冲信号的正脉冲宽度得到周期,这种方法硬件开销较大,软件设计也较复杂。本文将介绍了一种用MCS-51单片机内部一个定时/计
[单片机]
<font color='red'>51单片机</font>测变<font color='red'>周期</font>脉冲信号的简便方法
51单片机+74LS160频率计,最高可测频10M
因为51单片机晶振的原因,测频的范围有限制,这时就需要外置74LS160分频器,进行分频。 本程序采用了定时器的方式2定时,8位自动重装计数器,精准定时。 单片机源程序: #include reg52.h #include intrins.h #define Duan P2 #define Wei P1 sbit mr = P3^0; unsigned char code smg_duan ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char code smg_wei ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0x
[单片机]
<font color='red'>51单片机</font>+74LS160频率计,最高可测频10M
51单片机系列连载11—液晶
液晶是非常容易见到的,大街小巷亮着液晶显示屏随处可见,而且其原理与发光二极管一致,所以不用过多介绍,只是要注意它的说明书和与之对应的电路图,设置一些引脚,仅此而已。看一个程序,这是最简单驱动液晶的: #include #define uchar unsigned char #define uint unsigned int uchar code table = I LIKE MCU! ; uchar code table1 = WWW.TXMCU.COM ; sbit lcden=P3^4; sbit lcdrs=P3^5; sbit dula=P2^6; sbit wela=P2^7; uchar num; void d
[单片机]
基于80C51单片机和CH375芯片实现打印机驱动系统的设计
引言 本课题来源于北京普析通用公司的一个项目。由于公司现有单机版光谱仪器产品(如1810、T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越不好买到,而且有些用户的打印机只是USB接口而非并行口,因此现有仪器产品对打印机的支持变得不能适应用户需要。为了实现能将公司的并行口仪器直接和USB打印机相连进行打印,决定设计开发一款LPT-USB打印机的驱动器,负责并口仪器和USB打印机的连接。 本文利用单片机和USB总线接口芯片实现LPT-USB打印机的驱动器设计。利用该设计将能够实现并行打印口数据可以在USB打印机上的直接打印工作,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方便了用户
[单片机]
基于80C<font color='red'>51单片机</font>和CH375芯片实现打印机驱动系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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