设计与开发

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

小编 2024-11-24 设计与开发 23 0

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单片机码速表可以...

猜你喜欢