80C51单片机指令的取指、执行时序

现按4类指令介绍CPU时序。因为CPU工作的过程就是取指令与执行指令的过程,所以CPU必须先取出指令,然后才能执行指令。

1.双字节单周期指令

由于双字节单周期指令必须在一个周期内取机器码二次,所以必须在一个机器周期内安排二次读操作码的操作,分别发生在S1P2与S4P2。在S1P2读入机器码74并送入指令寄存器IR,在S4P2读入数据03送入累加器A,即读2取2。在指令的执行过程中,P0口要分时传送地址与数据,因此当操作码的地址从P0口输出后,必须发地址锁存信号ALE给74LS373锁存器,将地址锁存在74LS373内,腾出P0口读入机器码74。在取数据03时同样要发ALE信号。因此,在一个机器周期内地址锁存信号二次有效,见80C51时序图2-13。

2.单字节单周期指令

对单字节单周期指令,由于操作码只有一个字节,因此第一次读操作码有效,而第二次读的操作码将被丢弃,即:读1丢1,且程序计数器PC不加1。

3.单字节双周期指令

对单字节双周期指令,由于操作码只有一个字节,而执行时间长达2个机器周期,因此除第1次读操作码有效外,其余三次读的操作码均被放弃,即:读1丢3。

4.访问外部存储器指令MOVX

执行访问外部存储器指令MOVX时,首先从程序存储器中取出指令,然后从外部数据存储器中取出数据,因此该指令执行时序图与前三类指令不同。由于MOVX是单字节双周期指令,所以在取指令阶段(即第一个机器周期的S1P1到S4P2)是读1丢1,而在执行指令读数据阶段(即第一个机器周期的S5到第二个机器周期的S3)所完成的操作如下:

(1)先将外部数据存储单元的地址ADDR由DPTR从P0与P2口输出,即时序图中的S5P1到S6P2阶段。并在S4P2到S5P2阶段,发ALE信号将地址锁存。

(2)在第二个机器周期S1P2到S2P2内取消ALE与程序选通信号PSEN (即取消取指操作),使P0口专门用于传送数据。同时发读信号,通过P0口将外部数据存储单元中的数据传送到累加器A中。即:时序图的S6P2到S4P1阶段。

(3)由于锁存的地址为外部数据存储单元的地址,所以在第二个机器周期S4取消取指令的操作,即:不再发程序选通信号PSEN 。

注:由于执行MOVX指令时,在第二个机器周期中要少发一次ALE信号,所以ALE的频率是不稳定的。

转自 80C51单片机指令的取指、执行时序 - 电子技术基础知识 - 21IC中国电子网  http://www.21ic.com/jichuzhishi/mcu/shixu/2013-04-24/179946.html

80C51单片机指令的取指、执行时序的更多相关文章

  1. 80C51单片机介绍

    80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点. 增加了如乘(MUL).除(DIV).减(SUBB).比较(CMP).16位数据指针.布 ...

  2. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h>  void main(void)  {   EA=1;      //开放总中断   E ...

  3. Maven 生命周期的概念(指令默认顺序执行)

    生命周期的概念 IDEA中使用maven构建项目都集中放到了窗口右侧"Maven Projects"中,点击该区域可以直观的看到,maven中几个常用指令都归类为LifeCycle ...

  4. 两个80c51单片机之间怎样进行串行通信

    以前以为串行通信只能是单片机和PC机之间进行通信,昨天无意之中看到一个程序,是单片机和单片机之间进行通信..这小东西真是神奇啊!昨天弄了很长时间没弄出来,今天在大神的帮助下终于拨开云雾见天日了. 案例 ...

  5. async await promise 执行时序

    先用一个例子来说明async await promise的执行顺序 console.log('start'); async function test(){ console.log('111'); a ...

  6. setTimeout()执行时序

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  7. 一些80C51单片机支持双DPTR,C编译器是如何使用它的?

    在C51中,C编译器并不利用双DPTR来优化用户所写的程序,只有一些库例程使用了双数据指针.当在两个存储器块之间进行数据复制或比较时,以下库例程会使用双数据指针: memmovememcpymemcm ...

  8. hprose 1.0(rpc 框架) - 执行时序图

  9. thinkphp 3.2.3 程序执行时序图

随机推荐

  1. UICollectionView基础API笔记

    UICollectionView系列API,属性含义笔记.在UICollectionView笔记1中我们了解了UICollectionView是什么,以及可以做什么:在UICollectionView ...

  2. Docker的安全问题以及一些预防方案

    http://blog.csdn.net/Ruidu_Doer/article/details/53401523

  3. eclipse加上电脑全黑主题的设置(win10)

    eclipse加上电脑全黑主题的设置(win10) 前几天在找设置win10的边框颜色时,发现的这个高对比的功能,现在已经用了好几天了,自己感觉是真的好用,所有才分享出来,相比所谓网上的豆沙绿,果然感 ...

  4. 《Head First 设计模式》之迭代器与组合模式——遍历合并的菜单

    迭代器与组合模式(Iterator & Composite) 迭代器:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 组合:允许你将对象组成树形结构来表现“整体.部分” ...

  5. mysql decimal类型与decimal长度用法详解

    三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E ...

  6. 在window下, Java调用执行bat脚本

    参考博客: https://www.cnblogs.com/jing1617/p/6430141.html 最近一段时间用到了Java去执行window下的bat脚本, 这里简单记录一下: 我这里是先 ...

  7. PRD、MRD、BRD的含义

    一.PRD的含义 英文简称,PRD(Product Requirement Document),PRD文档中文意思是:产品需求文档. PRD文档是产品项目由“概念化”阶段进入到“图纸化”阶段的最主要的 ...

  8. Yii2 widgets [mztest/yii2-widget-file-upload]

    Enjoy it. A widget for uploading files to your server. Github , Packagist Screenshots

  9. SAP云平台CloudFoundry中的用户自定义变量

    CloudFoundry应用的manifest.xml里的env区域,允许用户自定义变量,如下图5个变量所示. 使用cf push部署到CloudFoundry之后,在SAP Cloud Platfo ...

  10. js中arr.sort的用法

    sort(sortfunction)为JS的数组对象(Array)的一个方法,提供排序功能 参数 sortFunction 为可选项,是用来确定排序原则的js函数, 这个函数有两个参数,分别代表每次排 ...