‘壹’ mcs-51单片机的时钟周期、机器周期、指令周期时序是如何分配的
mcs-51单片机的时钟周期=1/fosc。
机器周期=12 个时钟周期=12/fosc。
指令周期=1、2、3 个机器周期。
别忘了采纳。
‘贰’ 单片机的时序图问题
PCH是程序计数器的高八位,存放当前代码所在程序存储器的高八位地址。你知道,PC里放的是程序存储器的地址。
DPTR既可以指向程序存储器,也可以指向数据存储器。如:
MOVC A,A+@DPRT ;指向程序存储器,此时DPH里存放程序存储器高八位,但不一定是当前语句的程序地址,你可以事先给DPTR赋值,使它指向你赋值的程序存储器地址。
MOVX A,A@DPTR ;指向数据存储器,此时DPH指向数据存储器高八位,同样事先可以给DPTR赋值。
‘叁’ 单片机指令周期的计算
计算方法: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
计算方法二:0.015625 =(256-初值)*分频*4/晶振 = (256-初值)*32*4/32768
特别注意:分频比1-8 需要加上一个14/分频
指令周期是指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。
(3)单片机指令时序扩展阅读
在MCS-51系统中,有单周期指令,双周期指令。四周期指令只有乘,除两条指令。指令的运算速度和它的机器周期直接相关,机器周期数较小则执行速度快。
在编程时要注意选用具有同样功能而机器周期数小的指令。每一条指令的执行都可以包括取指和执行两个阶段。在取指阶段,CPU从内部或者外部ROM中取出指令操作码及操作数,然后再执行这条指令。
在8051指令系统中,根据各种操作的繁简程度,其指令可由单字节,双字节和三字节组成。从机器执行指令的速度看,单字节和双字节指令都可能是单周期或双周期,
而三字节指令都是双周期,只有乘,除指令占四个周期,一条指令的字节数表征这条指令在存储器中所占空间大小,而周期数表征运行这条指令所花时间长短,即运行速度。
‘肆’ 51单片机的IO口写指令的时序
什么。
同时要明白 片外的数据存储器、程序存储器读写的原理、过程、时序关系,才能彻底搞明白这个问题。
你看看单片机教科书里关于数据存储器、程序存储器扩展的部分,就知道p0口的作用是传送地址和数据,有时候还要做其它的IO口用。那么,这些复杂的数据传递岂不乱套?这些就要锁存器把它们隔离开了。
一般来说,P0口进行数据存储器、程序存储器扩展,必须加锁存器。
p0口做IO口时,如果各个IO口在时序上不发生冲突,可以不加锁存器。如果有冲突,就要加。
参考答案:
用8255扩展IO,书上用了373锁存,但是我想可不可以这样:P0不锁存,而是用P2口的随便两个引脚直接连8255的地址引脚。这样P0口送出的数据就不需要锁存了,直接接8255的数据口了。小弟初学单片机,还望各位能不吝赐教。
完全可以。CS是片选,这个也要接在p2的一个引脚的,或者接地。看你电路设计了。
8255的D0--D7是数据线啊!这个接P0口。
这样可以的话,低八位地址(P0口)应该是?是不是随便给个0到255之间的数可以? DPTR包括了P0和P2的地址,既然8255地址可以由P2给出,那P0地址如何处理?
从你的这个问话来看,你对单片机的概念很模糊。片外的地址是16位,p2p0共同决定,缺一不可的。我刚才说的方法是把8255当做IO口扩展的,不是当片外数据存储器用的。p0口接8255的D0--D7。所以这个根本用不到DPTR。
假如你按照片外数据存储器扩展,就必须用74LS373了。8255的A1A0可以由74LS373接P0,在p0送地址第八位时选通A1A0.这时p2反而不重要了,因为不连在8255上也是可以的。