51单片机时序及延时分析
计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是cpu在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作,在学习51单片机的时序之前,我们先来了解下时序相关的一些概念。
既然计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢?
要给我们的计算机cpu提供时序,就需要相关的硬件电路,即振荡器和时钟电路。我们学习的8051单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。8051单片机的时钟产生有以下两种方法:
一、内部时钟方式:
利用单片机内部的振荡器,然后在引脚xtal1(18脚)和xtal2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30pf左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2mhz-12mhz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。(提示一下,本站提供的学习套件全部采用的就是这种时钟方式)。
二、外部时钟方式:
此方式是利用外部振荡脉冲接入xtal1或xtal2。hmos和chmos单片机外时钟信号接入方式不同,hmos型单片机(例如8051)外时钟信号由xtal2端脚注入后直接送至内部时钟电路,输入端xtal1应接地。由于xtal2端的逻辑电平不是ttl的,故建议外接一个上接电阻。对于chmos型的单片机(例如80c51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到xtal1而xtal2悬空。如下图
外接时钟信号通过一个二分频的触发器而成为内部时钟信号,要求高、低电平的持续时间都大于20ns,一般为频率低于12mhz的方波。片内时钟发生器就是上述的二分频触发器,它向芯片提供了一个2节拍的时钟信号。
前面已提到,计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。由于指令的字节数不同,取这些指令所需要的时间也就不同,即使是字节数相同的指令,由于执行操作有较大的差别,不同的指令执行时间也不一定相同,即所需的拍节数不同。为了便于对cpu时序进行分析,一般按指令的执行过程规定了几中周期,即时钟周期、机器周期和指令周期,也称为时序定时单位,下面分别予以讲解。
时钟周期
时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12m的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。
在一个时钟周期内,cpu仅完成一个最基本的动作。对于某种单片机,若采用了1mhz的时钟频率,则时钟周期为1us;若采用4mhz的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2mhz-12mhz。
在8051单片机中把一个时钟周期定义为一个节拍(用p表示),二个节拍定义为一个状态周期(用s表示)。请大家参考后面的时序图。
机器周期
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个s周期(状态周期)组成。8051系列单片机的一个机器周期同6个s周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用p表示),二个节拍定义为一个状态周期(用s表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。参见后面的时序图。
指令周期
指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。
时钟周期、机器周期、指令周期之间的关系图如下。
通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
mcs-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:
·单字节指令单机器周期
·单字节指令双机器周期
·双字节指令单机器周期
·双字节指令双机器周期
·三字节指令双机器周期
·单字节指令四机器周期(如单字节的乘除法指令)
下图是mcs-51系列单片机的指令时序图:
上图是单周期和双周期取指及执行时序,图中的ale脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ale信号两次有效,第一次在s1p2和s2p1期间,第二次在s4p2和s5p1期间。
接下来我们分别对几个典型的指令时序加以说明。
·单字节单周期指令:
单字节单周期指令只进行一次读指令操作,当第二个ale信号有效时,pc并不加1,那么读出的还是原指令,属于一次无效的读操作。
·双字节单周期指令:
这类指令两次的ale信号都是有效的,只是第一个ale信号有效时读的是操作码,第二个ale信号有效时读的是操作数。
·单字节双周期指令:
两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
单字节双周期指令有一种特殊的情况,象movx这类指令,执行这类指令时,先在rom中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。在第二个指令周期时,则访问外部数据存储器,这时,ale信号对其操作无影响,即不会再有读指令操作动作。
上页的时序图中,我们只描述了指令的读取状态,而没有画出指令执行时序,因为每条指令都包含了具体的操作数,而操作数类型种类繁多,这里不便列出,有兴趣的读者可参阅有关书籍。
·外部程序存储器(rom)读时序
右图8051外部程序存储器读时序图,从图中可看出,p0口提供低8位地址,p2口提供高8位地址,s2结束前,p0口上的低8位地址是有效的,之后出现在p0口上的就不再是低8位的地址信号,而是指令数据信号,当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求,在s2其间必须把低8位的地址信号锁存起来,这时是用ale选通脉冲去控制锁存器把低8位地址予以锁存,而p2口只输出地址信号,而没有指令数据信号,整个机器周期地址信号都是有效的,因而无需锁存这一地址信号。
从外部程序存储器读取指令,必须有两个信号进行控制,除了上述的ale信号,还有一个psen(外部rom读选通脉冲),上图显然可看出,psen从s3p1开始有效,直到将地址信号送出和外部程序存储器的数据读入cpu后方才失效。而又从s4p2开始执行第二个读指令操作。
·外部数据存储器(ram)读时序
右图8051外部数据存储器读写时序图,从rom中读取的需执行的指令,而cpu对外部数据存储的访问是对ram进行数据的读或写操作,属于指令的执行周期,值得一提的是,读或写是两个不同的机器周期,但他们的时序却是相似的,我们只对ram的读时序进行分析。
上一个机器周期是取指阶段,是从rom中读取指令数据,接着的下个周期才开始读取外部数据存储器ram中的内容。
在s4结束后,先把需读取ram中的地址放到总线上,包括p0口上的低8位地址a0-a7和p2口上的高8位地址a8-a15。当rd选通脉冲有效时,将ram的数据通过p0数据总线读进cpu。第二个机器周期的ale信号仍然出现,进行一次外部rom的读操作,但是这一次的读操作属于无效操作。
对外部ram进行写操作时,cpu输出的则是wr(写选通信号),将数据通过p0数据总线写入外部存储中。
2020年芯片领域热点事件大盘点
4G LTE迎来机遇,几大挑战将门槛抬高
带滤波器的RJ45网口连接器
组织研磨仪的使用说明以及使用效果的介绍
华为推出高端显示器 世界最大AI处理器升级7nm工艺
51单片机时序及延时分析
基于LWIP协议栈对路由缓存数据结构实现改进设计
三星GalaxyS8工程图曝光,后置摄像头仅凸出0.2毫米
工信部将加大新材料、新一代信息技术、高端装备等培育支持力度
如何保障消费者在移动设备端进行各类金融业务的安全和便捷?
聚焦5G基站等工控小型设备,佰维推出工业级宽温内存条
卫星数据链开发平台设计方案:522-基于AD9988的四通道1G带宽卫星数据链开发平台
波峰焊在电路板工艺上的应用有多重要
合宙迷你DAPLink开发板:高速下载,软硬件全开源!
小米概念新机曝光 陶瓷机身+2300W+“白菜价”
赢合科技中标宁德时代设备总金额为14.4亿元
苹果云iCloud优缺点共存
光棒放大电路图及原理
英特尔创新模式全面提升医疗信息系统效能
智能手表的未来形态:Pebble意在打造“可穿戴网络”