80C51单片机指令的取指、执行时序
使用ALE信号作为低8位地址的锁存控制信号。ALE接到外部锁存器时,高电平期间,51的p0输出地址,低电平时锁存器将地址锁存,在ALE低电平时,(PSEN为低)p0口可以传输数据(指令),这样就可以地址/数据复用了。以PSEN信号作为扩展程序存储器的读选通信号,在读外部ROM是PSEN是低电平有效,以实现对ROM 的读操作。
以EA信号作为内外程序存储器的选择控制信号,当其为低电平时,对ROM的读操作限定在外部的程序存储器,当其为高电平时, 对ROM的读操作是从内部存储器开始的,并可延至外部程序存储器。
由RD和WR信号作为扩展数据存储器和I/O口的读选通、写选通信号。
EA信号是表示是当前指令是读内,还是外存储器的控制信号。如:当选用无片内存储器的单片机,或者不打算用片内存储器时,EA必须接低电平,此外,片外程序存储器的起始地址应该安排在片内存储器之后。
RD和WR信号就相对好理解,就是当读数据时(不分内外、RAM、ROM)它就有效。WR也是这样的。
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的频率是不稳定的。
51单片机指令周期,机器周期,时钟周期详解
51单片机有指令周期,机器周期,时钟周期的说法,看似相近,但是又都不太一样,很容易混淆。还是详细分析一下。
本文引用地址:http://www.eepw.com.cn/article/201609/310558.htm
时钟周期:单片机外接的晶振的振荡周期就是时钟周期,时钟周期=振荡周期。比方说,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)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。
来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。
相关问答
80c51单片机 ,如何理解“subb 指令 ,当D6有借位而D7无借位或者D...[最佳回答]带CY位减法指令ov位是在两个符号数相加、减时产生正数+正数=负数正数-负数=负数负数-正数=正数负数+负数=正数这几种情况会导致ov位置1带CY位减法...
80c51 外部中断有哪两种触发方式?有两种方式:下降沿触发方式和低电平触发方式80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、...
51单片机 十进制调整 指令 ?如果是51单片机的话,做十进制减法运算,只能用ADD和ADDC指令做,因为只有这两条加法指令运算的结果才能用DAA指令进行十进制调整。方法是:如Y=A-B,变成Y=A+(...
谁帮我做一下谢谢判断题:18道,每道5分,总分90 1.MCS- 51单片机 在物理上有四个独立的存储器空间,正确,错误?判断题:18道,每道5分,总分901.MCS-51单片机在物理上有四个独立的存储器空间正确2.当MCS-51单片机配有6MHz晶振时,一个机器周期为2微秒正确3.当MCS-51单片...
51单片机 的正确格式 指令 ?51单片机的正确指令格式是:[标号:]指令代码(空格)目标操作数[,源操作数][;注释][]号之内的内容可以缺省。指令例子:start:MOVR0,A;指针赋值。标号...51单...
关于 单片机 ( 80c51 )编写的程序問題-ZOL问答论坛手机笔记本数码相机主板显卡平板电脑更多举报音箱山水山水80C...MINDAT:MOVR0,#30HMOVR2,#10MOV40H,#0FFHLOOP:MO...
【请判断下列的MCS- 51单片机指令 的书写格式是否有错,若有,...[最佳回答]1.错30H不是位地址区域2.错对ROM的读取只能是MOVCA,@A+DPTR或MOVCA,@A+PC3.错。加法指令必须有A即ADDA,R14.错。没有寄存器间的传送5.错,...
80c51 的存储器组织采用何种结构?80c51的存储器组织采用的是哈佛结构。哈佛结构将指令存储和数据存储分开,分别存在不同的物理地址空间中,因此可以同时读取指令和数据。80c51的程序存储器有两...
80C51 中的SFR属于ROM还是RAM?拜托各位大神?FR是SpecialRegister(特殊功能寄存器)的缩写。SFR特殊功能寄存器区:8051把CPU中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器...
51单片机 码速表说明?51单片机码速表是一种常用的51单片机指令速查表,它包含了51单片机的大部分指令及其对应的操作码、机器码、指令周期、执行时间等信息。使用51单片机码速表可以...