51单片机指令周期
51单片机指令时间计算
51单片机指令时间计算51单片机作为一种常用的微控制器,广泛应用于各种嵌入式系统中。
在嵌入式系统设计中,了解51单片机指令时间计算是非常重要的,可以帮助我们更好地优化程序,提高系统的运行效率。
本文将围绕51单片机指令时间计算展开讨论,介绍相关的知识和技巧。
一、51单片机指令时间计算的基本概念在51单片机中,每一条指令都需要一定的时间来执行。
这个执行时间可以通过时钟频率来计算。
以一条机器指令所需的时钟周期数来衡量,通常以机器周期(Machine Cycle,MC)来表示。
在51单片机中,一个机器周期由12个时钟周期组成。
因此,我们可以根据时钟频率和指令的机器周期数来计算指令的执行时间。
二、指令执行时间的计算方法1. 单条指令执行时间的计算对于大多数指令来说,它们的执行时间是固定的,可以通过查表得到。
在一些特殊的指令中,执行时间可能会受到一些因素(如访问外部存储器)的影响,需要根据具体的情况进行计算。
2. 循环指令执行时间的计算循环指令是在程序中经常使用的一种指令,它的执行时间与循环次数有关。
如果循环次数已知,可以根据指令执行时间和循环次数来计算循环的总执行时间。
例如,如果一个循环包含5条指令,每条指令执行时间为4个机器周期,循环次数为10次,那么循环的总执行时间为5 * 4 * 10 = 200个机器周期。
3. 中断处理的影响在实际的系统设计中,中断处理是不可避免的。
当发生中断时,CPU会暂停当前的执行,转而处理中断请求。
因此,在计算指令的执行时间时,还需要考虑中断处理的时间。
一般情况下,中断处理的时间是固定的,可以通过查表得到。
三、指令时间计算的应用了解指令的执行时间对于程序的优化非常重要。
在编写程序时,我们可以通过合理地安排指令的顺序和循环的次数,来减少程序的执行时间,提高系统的响应速度。
在实时系统中,我们需要保证任务的及时响应。
通过计算指令的执行时间,我们可以预估系统是否能够满足实时性的要求。
51单片机指令周期,机器周期,时钟周期详解
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)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。
来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。
单片机指令周期怎么计算
单片机指令周期怎么计算指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。
传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。
现在(截至2012)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。
来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。
指令周期是不确定的,因为她和该条指令所包含的机器周期有关。
一个指令周期=1个(或2个或3个或4个)机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。
对于大多说的51单片机来说,1个机器周期=12个时钟周期(或振荡周期)也有部分单片机时钟周期和振荡周期不相等,例如,1个时钟周期=2个振荡周期。
该定义指的是执行一条指令所需要的时间,通常一个指令周期会由若干个机器周期组成。
指令不同,所需的机器周期数也不同。
对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。
对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。
通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
PIC单片机指令周期计算PIC单片机的每四个时钟周期为一个内部指令周期例如:8MHz的晶振,则内部指令周期为1/(8/4)= 0.5 uS实例一:35us,8MHz的晶振,8位定时器,分频比1/2 ,初值E4实例二:156.25us ,32768Hz的晶振,8位定时器,分频比1/32 ,初值FC计算方法一:35 = =(256-初值)*分频*4/晶振+ 14/分频=(256-初值)+14/2。
51单片机的指令周期
51单片机的指令周期051芯片内部有一高增益反相放大器,用于构成振荡器,反向放大器输入端为XTAL1,输出端XTAL2。
在XTAL1和XTAL2两端跨接一个石英晶体及两个电容就构成了稳定自激振荡器,电容器C1和C2通常都取30pF左右,对振荡频率有微调作用。
振荡频率范围是1.212MHz。
8051也使用外部震荡脉冲信号,由XTAL2端引脚输入,XTAL1端接地,外部震荡脉冲源方式常用于多块8051同时工作,以便于同步。
晶体振荡器的振荡信号从XTAL2端输出到片内的时钟发生器上,时钟发生器是一个二分频触发电路,它将振荡器的信号频率fosc除以2,向CPU提供两相时钟信号P1和P2。
时钟信号的周期称为机器状态时间S,CPU就以两相时钟P1和P2为基本节拍指挥8051单片机各个部件协调地工作。
除时钟周期外,还有两个与时间有关的概念叫机器周期和指令周期。
计算机的一条指令由若干个字节组成。
执行一条指令需要多少时间则以机器周期为单位。
所谓一个机器周期就是指CPU访问存储器一次所需要的时间。
例如取指令,读存储器,写存储器等等。
MCS51的一个机器周期为12个振荡周期,分为六个S状态,S1S6.而每个状态又分为两拍,称为P1和P2。
因此,一个机器周期中的12个振荡周期表示为S1P1,S1P2,S2P1等直到S6P2.若采用6MHZ晶体振荡器,则每个机器周期恰为2us。
每条指令都由一个或几个机器周期组成。
在MCS51系统中,有单周期指令,双周期指令。
四周期指令只有乘,除两条指令。
指令的运算速度和它的机器周期直接相关,机器周期数较小则执行速度快。
在编程时要注意选用具有同样功能而机器周期数小的指令。
每一条指令的执行都可以包括取指和执行两个阶段。
在取指阶段,CPU从内部或者外部ROM中取出指令操作码及操作数,然后再执行这条指令。
在8051指令系统中,根据各种操作的繁简程度,其指令可由单字节,双字节和三字节组成。
从机器执行指令的速度看,单字节和双字节指令都可能是单周期或双周期,而三字节指令都是双周期,只有乘,除指令占四个周期,一条指令的字节数表征这条指令在存储器中所占空间大小,而周期数表征运行这条指令所花时间长短,即运行速度。
MCS-51单片机指令周期表
MCS-51单片机指令周期表mcs-51指令速查表类别指令格式功能简述字节数周期MOV A,Rn寄存器送累加器11MOV Rn,A累加器送寄存器11MOV A,@Ri内部RAM单元送累加器11MOV@Ri,A累加器送内部RAM单元11MOV A,#data立即数送累加器21MOV A,direct直接寻址单元送累加器21MOV direct,A累加器送直接寻址单元21MOV Rn,#data立即数送寄存器21MOV direct,#data立即数送直接寻址单元32MOV@Ri,#data立即数送内部RAM单元21MOV direct,Rn寄存器送直接寻址单元22数据传送类指令期MOV Rn,direct直接寻址单元送寄存器22MOV direct,@Ri内部RAM单元送直接寻址单元22MOV@Ri,direct直接寻址单元送内部RAM单元22MOV direct2,direct1直接寻址单元送直接寻址单元32MOV DPTR,#data1616位立即数送数据指针32MOVX A,@Ri外部RAM单元送累加器(8位地址)12MOVX@Ri,A累加器送外部RAM单元(8位地址)12MOVX A,@DPTR外部RAM单元送累加器(16位地址)12MOVX@DPTR,A累加器送外部RAM单元(16位地址)12MOVC A,@A+DPTR查表数据送累加器(DPTR为基址)12MOVC A,@A+PC查表数据送累加器(PC为基址)12XCH A,Rn累加器与寄存器交换11算术运算类指令XCH A,@Ri累加器与内部RAM单元交换11XCHD A,direct累加器与直接寻址单元交换21XCHD A,@Ri累加器与内部RAM单元低4位交换11SWAP A累加器高4位与低4位交换11POP direct栈顶弹出指令直接寻址单元22PUSH direct直接寻址单元压入栈顶22ADD A,Rn累加器加寄存器11ADD A,@Ri累加器加内部RAM单元11ADD A,direct累加器加直接寻址单元21ADD A,#data累加器加立即数21ADDC A,Rn累加器加寄存器和进位标志11ADDC A,@Ri累加器加内部RAM单元和进位标志11ADDC A,#data累加器加立即数和进位标志21ADDC A,direct累加器加直接寻址单元和进位标志21INC A累加器加111INC Rn寄存器加111INC direct直接寻址单元加121INC@Ri内部RAM单元加111INC DPTR数据指针加112DA A十进制调整11SUBB A,Rn累加器减寄存器和进位标志11SUBB A,@Ri累加器减内部RAM单元和进位标志11SUBB A,#data累加器减立即数和进位标志21SUBB A,direct累加器减直接寻址单元和进位标志21DEC A累加器减111DEC Rn寄存器减111DEC@Ri内部RAM单元减111DEC direct直接寻址单元减121MUL AB累加器乘寄存器B14DIV AB累加器除以寄存器B14ANL A,Rn累加器与寄存器11逻辑运算类指令ANL A,@Ri累加器与内部RAM单元11ANL A,#data累加器与立即数21ANL A,direct累加器与直接寻址单元21ANL direct,A直接寻址单元与累加器21ANL direct,#data直接寻址单元与立即数31ORL A,Rn累加器或寄存器11ORL A,@Ri累加器或内部RAM单元11ORL A,#data累加器或立即数21ORL A,direct累加器或直接寻址单元21ORL direct,A直接寻址单元或累加器21ORL direct,#data直接寻址单元或立即数31XRL A,Rn累加器异或寄存器11XRL A,@Ri累加器异或内部RAM单元11XRL A,#data累加器异或立即数21XRL A,direct累加器异或直接寻址单元21XRL direct,A直接寻址单元异或累加器21XRL direct,#data直接寻址单元异或立即数32RL A累加器左循环移位11RLC A累加器连进位标志左循环移位11RR A累加器右循环移位11RRC A累加器连进位标志右循环移位11CPL A累加器取反11CLR A累加器清零11ACCALL addr112KB范围内绝对调用22AJMP addr112KB范围内绝对转移22LCALL addr162KB范围内长调用32LJMP addr162KB范围内长转移32SJMP rel相对短转移22JMP@A+DPTR相对长转移12RET子程序返回12RET1中断返回12控制转移类指令JZ rel累加器为零转移22JNZ rel累加器非零转移22CJNE A,#data,rel累加器与立即数不等转移32CJNE A,direct,rel累加器与直接寻址单元不等转移32CJNE Rn,#data,rel寄存器与立即数不等转移32CJNE@Ri,#data,rel RAM单元与立即数不等转移32DJNZ Rn,rel寄存器减1不为零转移22DJNZ direct,rel直接寻址单元减1不为零转移32NOP空操作11MOV C,bit直接寻址位送C21MOV bit,C C送直接寻址位21CLR C C清零11CLR bit直接寻址位清零21CPL C C取反11CPL bit直接寻址位取反21SETB C C置位11SETB bit直接寻址位置位21布尔操作类指令ANL C,bit C逻辑与直接寻址位22ANL C,/bit C逻辑与直接寻址位的反22ORL C,bit C逻辑或直接寻址位22ORL C,/bit C逻辑或直接寻址位的反22JC rel C为1转移22JNC rel C为零转移22JB bit,rel直接寻址位为1转移32JNB bit,rel直接寻址为0转移32JBC bit,rel直接寻址位为1转移并清该位32。
单片机指令周期
1.程序计数器PC 2.累加器A 3.寄存器B 4.程序状态字PSW
CY
•PS.W7 •进位/借位标志 •1 有进位/借位 0 无 •在作位处理时作 为位累加器
•溢出标志位 •当第6位和第7位不同时向高位有进 位/借位时,OV=1 •乘法结果超过255,OV=1,否则 =0 •除法中的除数(存放在B中)为0, OV=1,否则=0
片内程序存储器 片外扩展的程序存储器
物理上,分4个存储空间
片内数据存储器
片外扩展的数据存储器 片内外统一编址的64KB 程序存储器地址空间
逻辑上,分3个逻辑空间
片内数据存储器地址空间 64KB外部数据存储器地 Байду номын сангаас空间
MCS-51存储器配置
2.4.1 MCS-51程序存储器 1.MCS-51内部程序存储器
/
8KB
/
/
256B
256B
3*16位
3*16位
4*8位
4*8位
1
1
6
6
8752
/
8KB
256B
3*16位
4*8位
1
6
约
定
8031、8051、8751及8032、8052、8752是由 HMOS工艺制造。 而其对应的80C31、80C51、87C51及80C32、 80C52、87C52是由CHMOS工艺制造。
2.3.2 控制信号
•ALE/PROG
•(30脚)地址锁存信号 •系统扩展时,ALE用于控制把P0口输出的 低8位地址送入锁存器锁存起来,实现低位 地址和数据的分时传送 •ALE是以1/6的振荡频率输出的正脉冲,可 作为外部时钟作为系统中其它芯片的时钟源
•PSEN •EA/VPP
51单片机中的周期
51单片机中的周期
首先明确几个概念:时钟周期、振荡周期、状态周期、机器周期、指令周期1、时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在单片机中也就等于晶振的倒数。
51 单片机中把一个时钟周期定义为一个节拍(用P 表示),2 个节拍定义为状态周期(用S 表示)
时钟周期是单片机中最小的时间单位。
eg:12M 晶振的单片机,时钟周期=振荡周期=1/12 us。
2、机器周期:定义为完成一项基本操作所需要的时间,称为机器周期。
在计算机中,为了方便管理,把一条指令的执行过程分为若干个阶段,每个阶段去执行一项基本操作。
如:取指令,存储器读,存储器写等。
在51 单片机中1 个机器周期由6 个状态周期组成,也就是12 个时钟周期=12 x 1/12 us =1 us
定义机器周期是因为时钟周期时间太短,根本做不了什么。
3、指令周期:定义为执行一条指令所需的时间。
通常,包含一个机器周期的指令称为单周期指令,比如MOV 指令,CLR 指令等。
包含两个机器周期的指令称为双周期指令。
另外还有四周期指令。
判断指令是单周期指令还是双周期指令,最可靠的是查指令表。
我在网上找到了一个规律总结,
此规律应按照顺序进行判断,前一条原则高于后一条(主要指2~6),按顺。
51单片机基础知识 (问答题)
1、单片机的机器周期、状态周期、振荡周期和指令周期之间是什么关系?答:一个机器周期恒等于6个状态周期或12个振荡周期,即1M=6S=12P。
2、存储器中有几个保留特殊功能的单元用做入口地址?作用是什么?答:MCS-51系列单片机的存储器中有6个保留特殊功能单元;作用:0000H为复位入口、0003H为外部中断0入口、000BH为T0溢出中断入口、0013H为外部中断1入口、001BH为T1溢出中断入口、0023H为串行接口中断入口。
3、开机复位后,CPU使用是的哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?答:开机复位后,CPU使用的是第0组工作寄存器。
它们的地址是00H~07H。
CPU通过对程序状态字PSW中RS1、RS0的设置来确定和改变当前工作寄存器组。
如:RS1、RS0为00则指向第0组;为01则指向第1组;为10则指向第2组;为11则指向第3组。
4、MCS-51的时钟周期、机器周期、指令周期的如何分配的?当振荡频率为8MHz时,一个单片机时钟周期为多少微秒?答:MCS-51的时钟周期是最小的定时单位,也称为振荡周期或节拍。
一个机器周期包含12个时钟周期或节拍。
不同的指令其指令周期一般是不同的,可包含有1~4个机器周期。
当振荡频率为8MHz时,一个单片机时钟周期为0.125μs 。
5、EA/V引脚有何功用?8031的引脚应如何处理?为什么?PP答:EA/V是双功能引脚:PP(1)EA接高电平时,在低4KB程序地址空间(0000H~0FFFH),CPU执行片内程序存储器的指令,当程序地址超出低4KB空间(1000H~FFFFH)时,CPU将自动执行片外程序存储器的指令。
(2)EA接低电平时,CPU只能执行外部程序存储器的指令。
8031单片机内部无ROM,必须外接程序存储器。
因此,8031的EA引脚必须接低电平。
在对8751单片机内部的 EPROM编程时,此引脚V外接+12V电压,用于固化EPROM程PP序。
MCS-51单片机指令周期表
MCS-51单片机指令周期表mcs-51指令速查表类别指令格式功能简述字节数周期MOV A,Rn寄存器送累加器11MOV Rn,A累加器送寄存器11MOV A,@Ri内部RAM单元送累加器11MOV@Ri,A累加器送内部RAM单元11MOV A,#data立即数送累加器21MOV A,direct直接寻址单元送累加器21MOV direct,A累加器送直接寻址单元21MOV Rn,#data立即数送寄存器21MOV direct,#data立即数送直接寻址单元32MOV@Ri,#data立即数送内部RAM单元21MOV direct,Rn寄存器送直接寻址单元22数据传送类指令期MOV Rn,direct直接寻址单元送寄存器22MOV direct,@Ri内部RAM单元送直接寻址单元22MOV@Ri,direct直接寻址单元送内部RAM单元22MOV direct2,direct1直接寻址单元送直接寻址单元32MOV DPTR,#data1616位立即数送数据指针32MOVX A,@Ri外部RAM单元送累加器(8位地址)12MOVX@Ri,A累加器送外部RAM单元(8位地址)12MOVX A,@DPTR外部RAM单元送累加器(16位地址)12MOVX@DPTR,A累加器送外部RAM单元(16位地址)12MOVC A,@A+DPTR查表数据送累加器(DPTR为基址)12MOVC A,@A+PC查表数据送累加器(PC为基址)12XCH A,Rn累加器与寄存器交换11算术运算类指令XCH A,@Ri累加器与内部RAM单元交换11XCHD A,direct累加器与直接寻址单元交换21XCHD A,@Ri累加器与内部RAM单元低4位交换11SWAP A累加器高4位与低4位交换11POP direct栈顶弹出指令直接寻址单元22PUSH direct直接寻址单元压入栈顶22ADD A,Rn累加器加寄存器11ADD A,@Ri累加器加内部RAM单元11ADD A,direct累加器加直接寻址单元21ADD A,#data累加器加立即数21ADDC A,Rn累加器加寄存器和进位标志11ADDC A,@Ri累加器加内部RAM单元和进位标志11ADDC A,#data累加器加立即数和进位标志21ADDC A,direct累加器加直接寻址单元和进位标志21INC A累加器加111INC Rn寄存器加111INC direct直接寻址单元加121INC@Ri内部RAM单元加111INC DPTR数据指针加112DA A十进制调整11SUBB A,Rn累加器减寄存器和进位标志11SUBB A,@Ri累加器减内部RAM单元和进位标志11SUBB A,#data累加器减立即数和进位标志21SUBB A,direct累加器减直接寻址单元和进位标志21DEC A累加器减111DEC Rn寄存器减111DEC@Ri内部RAM单元减111DEC direct直接寻址单元减121MUL AB累加器乘寄存器B14DIV AB累加器除以寄存器B14ANL A,Rn累加器与寄存器11逻辑运算类指令ANL A,@Ri累加器与内部RAM单元11ANL A,#data累加器与立即数21ANL A,direct累加器与直接寻址单元21ANL direct,A直接寻址单元与累加器21ANL direct,#data直接寻址单元与立即数31ORL A,Rn累加器或寄存器11ORL A,@Ri累加器或内部RAM单元11ORL A,#data累加器或立即数21ORL A,direct累加器或直接寻址单元21ORL direct,A直接寻址单元或累加器21ORL direct,#data直接寻址单元或立即数31XRL A,Rn累加器异或寄存器11XRL A,@Ri累加器异或内部RAM单元11XRL A,#data累加器异或立即数21XRL A,direct累加器异或直接寻址单元21XRL direct,A直接寻址单元异或累加器21XRL direct,#data直接寻址单元异或立即数32RL A累加器左循环移位11RLC A累加器连进位标志左循环移位11RR A累加器右循环移位11RRC A累加器连进位标志右循环移位11CPL A累加器取反11CLR A累加器清零11ACCALL addr112KB范围内绝对调用22AJMP addr112KB范围内绝对转移22LCALL addr162KB范围内长调用32LJMP addr162KB范围内长转移32SJMP rel相对短转移22JMP@A+DPTR相对长转移12RET子程序返回12RET1中断返回12控制转移类指令JZ rel累加器为零转移22JNZ rel累加器非零转移22CJNE A,#data,rel累加器与立即数不等转移32CJNE A,direct,rel累加器与直接寻址单元不等转移32CJNE Rn,#data,rel寄存器与立即数不等转移32CJNE@Ri,#data,rel RAM单元与立即数不等转移32DJNZ Rn,rel寄存器减1不为零转移22DJNZ direct,rel直接寻址单元减1不为零转移32NOP空操作11MOV C,bit直接寻址位送C21MOV bit,C C送直接寻址位21CLR C C清零11CLR bit直接寻址位清零21CPL C C取反11CPL bit直接寻址位取反21SETB C C置位11SETB bit直接寻址位置位21布尔操作类指令ANL C,bit C逻辑与直接寻址位22ANL C,/bit C逻辑与直接寻址位的反22ORL C,bit C逻辑或直接寻址位22ORL C,/bit C逻辑或直接寻址位的反22JC rel C为1转移22JNC rel C为零转移22JB bit,rel直接寻址位为1转移32JNB bit,rel直接寻址为0转移32JBC bit,rel直接寻址位为1转移并清该位32。
51单片机晶振频率、时钟周期、状态周期、机器周期、指令周期和总线周期的关系
51单⽚机晶振频率、时钟周期、状态周期、机器周期、指令周期和总线周期的关系⼀、晶振频率1、英⽂全称:frequency oscillate2、定义:晶体振荡器的固有频率, 不能改变。
⼆、时钟周期1、英⽂全称:Clock Cycle。
2、时钟周期是计算机中最基本的、最⼩的时间单位。
在⼀个时钟周期内,CPU仅完成⼀个最基本的动作。
3、时钟周期 = 晶振周期 = 振荡周期Tosc = 晶振频率(振荡频率fosc)的倒数。
4、若晶振周期为12MHz,则时钟周期 = 1/12us。
每秒发出12000000个脉冲信号,那么发出⼀个脉冲的时间就是时钟周期,即1/12微妙。
三、状态周期振荡器脉冲信号经过时钟电路⼆分频之后产⽣的单⽚机时钟信号的周期(⽤S表⽰)称为状态周期。
故⼀个状态周期S包含2个节拍,前⼀时钟周期称为P1节拍,后⼀时钟周期称为P2节拍。
四、机器周期1、定义:CPU完成⼀项基本操作(取指令、存储器读写等)所消耗的最短时间。
2、⼀般由12个时钟周期或者6个状态周期组成。
3、计算:机器⼈周期 = 12 / 晶振频率。
4、存在的原因:1个时钟周期⽆法⼲完⼀件事,⽽12个时钟周期能够完成基本的操作。
五、指令周期取出并执⾏⼀条指令的时间。
指令周期是不确定的,因为她和该条指令所包含的机器周期有关。
⼀个指令周期=1个(或2个或3个或4个)机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。
六、总线周期访问1次存储器和I/O端⼝操作所需要的时间。
七、⼩结所需时间:时钟周期 < 状态周期 < 机器周期 < 指令周期 < 总线周期————————————————————————————————————————————————————————————。
51单片机汇编指令及周期表
3
2
LJMP addr16
2KB范围内长转移
3
2
SJMP rel
相对短转移
2
2
JMP@A+DPTR
相对长转移
1
2
RET
子程序返回
1
2
RET1
中断返回
1
2
JZ rel
累加器为零转移
2
2
JNZ rel
累加器非零转移
2
2
CJNE A, #data, rel
累加器与立即数不等转移
3
2
CJNE A, direct, rel
1
2
算术运算类指令
XCH A, Rn
累加器与寄存器交换
1
1
XCH A,@Ri
累加器与内部RAM单元交换
1
1
XCHD A, direct
累加器与直接寻址单元交换
2
1
XCHD A,@Ri
累加器与内部RAM单元低4位交换
1
1
SWAP A
累加器高4位与低4位交换
1
1
POP direct
栈顶弹出指令直接寻址单元
直接寻址单元减1
2
1
MUL AB
累加器乘寄存器B
1
4
DIV AB
累加器除以寄存器B
1
4
逻辑运算类指令
ANL A, Rn
累加器与寄存器
1
1
ANL A,@Ri
累加器与内部RAM单元
1
1
ANL A, #data
累加器与立即数
2
1
ANL A, direct
MCS51单片机的指令时序
单片机时序图MCS51单片机的指令时序接下来我们分别对几个典型的指令时序加以说明。
·单字节单周期指令:单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。
·双字节单周期指令:这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。
·单字节双周期指令:两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
单字节双周期指令有一种特殊的情况,象MOVX这类指令,执行这类指令时,先在ROM 中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。
在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
上页的时序图中,我们只描述了指令的读取状态,而没有画出指令执行时序,因为每条指令都包含了具体的操作数,而操作数类型种类繁多,这里不便列出,有兴趣的读者可参阅有关书籍时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。
·节拍与状态:我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。
·机器周期:MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHz的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是1us。
51单片机指令时间计算
51单片机指令时间计算51单片机是一种常用的微控制器,它具有高性能、低功耗、易于编程等优点,被广泛应用于各种嵌入式系统中。
在进行单片机程序设计时,了解指令的执行时间是非常重要的,可以帮助我们合理安排程序的执行顺序,提高系统的效率。
本文将介绍如何计算51单片机指令的时间,并给出一些实例说明。
我们需要知道51单片机的时钟频率。
51单片机通常有两种工作模式:常规模式和双倍模式。
在常规模式下,51单片机的时钟频率为12MHz;在双倍模式下,时钟频率为24MHz。
根据时钟频率,我们可以计算出每个指令的执行时间。
以常规模式为例,时钟频率为12MHz,每个机器周期为1/12MHz=83.3ns。
每个指令的执行时间由指令的机器周期数乘以机器周期得到。
不同的指令有不同的机器周期数,因此它们的执行时间也不同。
以MOV指令为例,MOV指令用于将一个数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。
MOV指令的执行时间为1个机器周期。
因此,在常规模式下,MOV指令的执行时间为83.3ns。
除了MOV指令,51单片机还有许多其他的指令,比如ADD指令、SUB指令、AND指令、OR指令等等。
它们的执行时间也可以通过相同的方法来计算。
每个指令的执行时间都是以机器周期为单位的,因此可以根据时钟频率和机器周期来计算出具体的执行时间。
在程序设计中,我们经常需要通过延时来实现一些功能,比如LED 闪烁、蜂鸣器发声等等。
延时的实现可以通过循环来完成,我们可以根据指令的执行时间来确定循环的次数,从而实现精确的延时。
以延时1秒为例,我们可以先计算出延时1秒所需的机器周期数。
1秒=1000毫秒=1000*1000微秒=1000*1000*1000纳秒。
而每个机器周期为83.3ns,因此延时1秒所需的机器周期数为1000*1000*1000/83.3=11988。
所以,我们可以通过一个循环来实现延时1秒的功能,循环次数为11988。
除了计算指令的执行时间,我们还可以通过其他方法来提高程序的执行效率。
MCS-51单片机的指令时序
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 系列单片机的指令时序图:。
51单片机指令时间计算
51单片机指令时间计算引言:在嵌入式系统中,单片机是一种常用的控制器,而51单片机指令时间计算是评估单片机执行效率的重要指标之一。
本文将详细介绍51单片机指令时间计算的相关内容,包括指令周期、机器周期、时钟周期以及如何计算指令的执行时间。
一、指令周期指令周期是指单片机执行一条指令所需要的时间。
在51单片机中,一个指令周期包括12个机器周期。
每个机器周期的时间为1/12个机器周期。
二、机器周期机器周期是指单片机所需的最小时间单位,由时钟周期决定。
在51单片机中,一个机器周期包括6个时钟周期。
每个时钟周期的时间为1/6个机器周期。
三、时钟周期时钟周期是指单片机内部时钟发生一次跳变所需要的时间。
在51单片机中,时钟周期的时间周期为1/12个机器周期。
四、指令执行时间计算指令执行时间可以通过以下公式计算:指令执行时间 = 指令周期× 时钟周期五、示例计算假设某条指令的指令周期为3个机器周期,时钟周期为1.5个机器周期,则该指令的执行时间计算如下:指令执行时间 = 3个机器周期× 1.5个机器周期 = 4.5个机器周期六、指令执行时间的影响因素1.指令周期的长度:不同的指令周期长度会直接影响指令的执行时间。
指令周期越长,执行时间越长。
2.时钟周期的长度:时钟周期的长度与单片机的工作频率有关。
时钟周期越长,执行时间越长。
3.指令的类型:不同类型的指令可能需要不同的机器周期和时钟周期来执行。
4.指令之间的依赖关系:如果一个指令依赖于前面的指令执行结果,那么它的执行时间将会受到前面指令执行时间的影响。
七、指令执行时间的应用1.性能评估:通过计算指令执行时间,可以评估单片机的性能表现,从而选择合适的单片机。
2.程序优化:了解指令执行时间可以帮助程序员优化程序,提高程序的执行效率。
3.实时系统设计:在实时系统中,需要根据指令执行时间来确定任务的调度策略,以保证系统的实时性。
八、结论51单片机指令时间计算是评估单片机执行效率的重要指标之一,通过计算指令周期、机器周期和时钟周期,可以得到指令的执行时间。
MCS-51单片机时序
MCS-51单片机时序
一、时序:单片机时序是指单片机执行指令时应发出的控制信号的时间序列。
这些控制信号在时间上的相互关系就是CPU的时序。
它是一系列具有时间顺序的脉冲信号。
CPU发出的时序有两类:一类用于片内各功能部件的控制,它们是芯片设计师关注的问题,对用户没有什么意义。
另一类用于片外存储器或I/O端口的控制,需要通过器件的控制引脚送到片外,这部分时序对分析硬件电路的原理至关重要,也是软件编程遵循的原则,需要认真掌握。
二、时钟周期、机器周期和指令周期
1、时钟周期:又称振荡周期。
指为单片机提供定时信号的振荡源周期。
是最小的时序单位。
振荡源的频率越高,单片机的工作速度越快。
时钟周期被分成两个节拍P1和P2。
每个时钟周期的前半周期P1信号有效,这时CPU通常完成算术逻辑操作;在每个时钟的后半周期P2信号有效,内部寄存器与寄存器之间的数据一般在此状态发生。
2、机器周期:定义为实现特定功能所需要的时间。
机器周期按其功能来命名,如取指机器周期等。
MCS-51的机器周期时间是不变的,均为12个晶振周期或6个状态周期。
分为S1P1,SIP2;S2P1,S2P2;等
3、指令周期:执行一条指令的时间。
按指令执行的时间可分为:单周期、双周期和四周期(只有乘法和除法两条指令)。
时钟周期、机器周期和指令周期均是单片机时序单位。
机器周期是单片机计算其它时间值(如波特率、定时器的定时时间等)的基础时序单位。
如MCS-51外接晶振为12MHz,则:
时钟周期= = =0.167us;。
51单片机延时程序算法详解
51单片机汇编延时程序算法详解将以12MHZ晶振为例,详细讲解MCS-51单片机中汇编程序延时的精确算法。
指令周期、机器周期与时钟周期指令周期:CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的,指令不同,所需的机器周期也不同。
时钟周期:也称为振荡周期,一个时钟周期=晶振的倒数。
MCS-51单片机的一个机器周期=6个状态周期=12个时钟周期。
MCS-51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机器周期,即12个时钟周期,所以一条单周期指令被执行所占时间为12*(1/12000000)=1μs。
程序分析例1 50ms 延时子程序:DEL:MOV R7,#200 ①DEL1:MOV R6,#125 ②DEL2:DJNZ R6,DEL2 ③DJNZ R7,DEL1 ④RET ⑤精确延时时间为:1+(1*200)+(2*125*200)+(2*200)+2=(2*125+3)*200+3 ⑥=50603μs≈50ms由⑥整理出公式(只限上述写法)延时时间=(2*内循环+3)*外循环+3 ⑦详解:DEL这个子程序共有五条指令,现在分别就每一条指令被执行的次数和所耗时间进行分析。
第一句:MOV R7,#200 在整个子程序中只被执行一次,且为单周期指令,所以耗时1μs 第二句:MOV R6,#125 从②看到④只要R7-1不为0,就会返回到这句,共执行了R7次,共耗时200μs第三句:DJNZ R6,DEL2 只要R6-1不为0,就反复执行此句(内循环R6次),又受外循环R7控制,所以共执行R6*R7次,因是双周期指令,所以耗时2*R6*R7μs。
例2 1秒延时子程序:DEL:MOV R7,#10 ①DEL1:MOV R6,#200 ②DEL2:MOV R5,#248 ③DJNZ R5,$ ④DJNZ R6,DEL2 ⑤DJNZ R7,DEL1 ⑥RET ⑦对每条指令进行计算得出精确延时时间为:1+(1*10)+(1*200*10)+(2*248*200*10)+(2*200*10)+(2*10)+2 =[(2*248+3)*200+3]*10+3 ⑧=998033μs≈1s由⑧整理得:延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+3 ⑨此式适用三层循环以内的程序,也验证了例1中式⑦(第三层循环相当于1)的成立。
MCS-51单片机的指令时序
MCS-51 单片机的指令时序
时序是用定时单位来描述的,MCS-51 的时序单位有四个,它们分别是
节拍、状态、机器周期和指令周期,接下来我们分别加以说明。
-节拍与状态:
我们把振荡脉冲的周期定义为节拍(为方便描述,用P 表示),振荡脉冲经
过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义
为状态(用S 表示),这样一个状态就有两个节拍,前半周期相应的节拍我们
定义为1(P1),后半周期对应的节拍定义为2(P2)。
-机器周期:
MCS-51 有固定的机器周期,规定一个机器周期有6 个状态,分别表示为
S1-S6,而一个状态包含两个节拍,那幺一个机器周期就有12 个节拍,我们
可以记着S1P1、S1P2S6P1、S6P2,一个机器周期共包含12 个振荡脉冲,即机器周期就是振荡脉冲的12 分频,显然,如果使用6MHz 的时钟频率,一个机器周期就是2us,而如使用12MHz 的时钟频率,一个机器周期就是1us。
-指令周期:
执行一条指令所需要的时间称为指令周期,MCS-51 的指令有单字节、双
字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直接寻址单元或立即数
3
1
XRL A, Rn
累加器异或寄存器
1
1
XRL A,@Ri
累加器异或内部RAM单元
1
1
XRL A,#data
累加器异或立即数
2
1
XRL A,direct
累加器异或直接寻址单元
2
1
XRL direct, A
直接寻址单元异或累加器
2
1
XRL direct, #data
3
2
CJNE A, direct, rel
累加器与直接寻址单元不等转移
3
2
CJNE Rn,#data, rel
寄存器与立即数不等转移
3
2
CJNE @Ri, #data, rel
RAM单元与立即数不等转移
3
2
DJNZ Rn, rel
寄存器减1不为零转移
2
2
DJNZ direct, rel
直接寻址单元减1不为零转移
2
2
LCALL addr16
2KB范围内长调用
3
2
LJMP addr16
2KB范围内长转移
3
2
SJMP rel
相对短转移
2
2
JMP @A+DPTR
相对长转移
1
2
RET
子程序返回
1
2
RET1
中断返回
1
2
JZ rel
累加器为零转移
2
2
JNZ rel
累加器非零转移
2
2
CJNE A, #data, rel
累加器与立即数不等转移
1
2
算术运算类指令
XCH A, Rn
累加器与寄存器交换
1
1
XCH A, @Ri
累加器与内部RAM单元交换
1
1
XCHD A, direct
累加器与直接寻址单元交换
2
1
XCHD A, @Ri
累加器与内部RAM单元低4位交换
1
1
SWAP A
累加器高4位与低4位交换
1
1
POP direct
栈顶弹出指令直接寻址单元
直接寻址位为1转移并清该位
3
2
SUBB A, Rn
累加器减寄存器和进位标志
1
1
SUBB A, @Ri
累加器减内部RAM单元和进位标志
1
1
SUBB A, #data
累加器减立即数和进位标志
2
1
SUBB A, direct
累加器减直接寻址单元和进位标志
2
1
DEC A
累加器减1
1
1
DEC Rn
寄存器减1
1
1
DEC @Ri
内部RAM单元减1
直接寻址单元与累加器
2
1
ANL direct, #data
直接寻址单元与立即数
3
1
ORL A, Rn
累加器或寄存器
1
1
ORL A,@Ri
累加器或内部RAM单元
1
1
ORL A,#data
累加器或立即数
2
1
ORL A,direct
累加器或直接寻址单元
2
1
ORL direct, A
直接寻址单元或累加器
2
1
msc 51 指令速查表
类别
指令格式
功能简述
字节数
周期
数据传送类指令期
MOV A, Rn
寄存器送累加器
1
1
MOV Rn,A
累加器送寄存器
1
1
MOV A, @Ri
内部RAM单元送累加器
1
1
MOV @Ri, A
累加器送内部RAM单元
1
1
MOV A, #data
立即数送累加器
2
1
MOV A, direct
3
2
布尔操作类指令
NOP
空操作
1
1
MOV C, bit
直接寻址位送C
2
1
MOV bit, C
C送直接寻址位
2
1
CLR C
C清零
1
1
CLR bit
直接寻址位清零
2
1
CPL C
C取反
1
1
CPL bit
直接寻址位取反
2
1
SETB C
C置位
1
1
SETB bit
直接寻址位置位
2
1
ANL C, bit
C逻辑与直接寻址位
1
1
DEC direct
直接寻址单元减1
2
1
MUL AB
累加器乘寄存器B
1
4
DIV AB
累加器除以寄存器B
1
4
逻辑运算类指令
ANL A, Rn
累加器与寄存器
1
1
ANL A, @Ri
累加器与内部RAM单元
1
1
ANL A, #data
累加器与立即数
2
1
ANL A, direct
累加器与直接寻址单元
2
1
ANL direct, A
2
2
ANL C, /bit
C逻辑与直接寻址位的反
2
2
ORL C, bit
C逻辑或直接寻址位
2
2
ORL C, /bit
C逻辑或直接寻址位的反
2
2
JC rel
C为1转移
2
2
JNC rel
C为零转移
2
2
JB bit,rel
直接寻址位为1转移
3
2
JNB bit,rel
直接寻址为0转移
3
2
JBC bit,rel
1
1
ADDC A, #data
累加器加立即数和进位标志
2
1
ADDC A, direct
累加器加直接寻址单元和进位标志
2
1
INC A
累加器加1
1
1
INC Rn
寄存器加1
1
1
INC direct
直接寻址单元加1
2
1
INC @Ri
内部RAM单元加1
1
1
INC DPTR
数据指针加1
1
2
DA A
十进制调整
1
1
直接寻址单元送寄存器
2
2
MOV direct, @Ri
内部RAM单元送直接寻址单元
2
2
MOV @Ri, direct
直接寻址单元送内部RAM单元
2
2
MOV direct2,direct1
直接寻址单元送直接寻址单元
3
2
MOV DPTR, #data16
16位立即数送数据指针
3
2
MOVX A, @Ri
外部RAM单元送累加器(8位地址)
直接寻址单元送累加器
2
1
MOV direct, A
累加器送直接寻址单元
2
1
MOV Rn,#data
立即数送寄存器
2
1
MOV direct, #data
立即数送直接寻址单元
3
2
MOV @Ri, #data
立即数送内部RAM单元
2
1
MOV direct, Rn
寄存器送直接寻址单元
2
2
MOV Rn, direct
2
2
PUSH direct
直接寻址单元压入栈顶
2
2
ADD A, Rn
累加器加寄存器
1
1
ADD A, @Ri
累加器加内部RAM单元
1
1
ADD A, direct
累加器加直接寻单元
2
1
ADD A, #data
累加器加立即数
2
1
ADDC A, Rn
累加器加寄存器和进位标志
1
1
ADDC A, @Ri
累加器加内部RAM单元和进位标志
1
2
MOVX @Ri, A
累加器送外部RAM单元(8位地址)
1
2
MOVX A, @DPTR
外部RAM单元送累加器(16位地址)
1
2
MOVX @DPTR, A
累加器送外部RAM单元(16位地址)
1
2
MOVC A, @A+DPTR
查表数据送累加器(DPTR为基址)
1
2
MOVC A, @A+PC
查表数据送累加器(PC为基址)
直接寻址单元异或立即数
3
2
RL A
累加器左循环移位
1
1
RLC A
累加器连进位标志左循环移位
1
1
RR A
累加器右循环移位
1
1
RRC A
累加器连进位标志右循环移位
1
1
CPL A
累加器取反
1
1
CLR A
累加器清零
1
1
控制转移类指令
ACCALL addr11
2KB范围内绝对调用
2
2
AJMP addr11
2KB范围内绝对转移