1.时钟电路
51单片机的时钟电路主要分为内部振荡方式和外部振荡方式两种接法。
(1)内部振荡方式
51单片机中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使用石英晶体,推荐使用30pF+/-10pF,而如使用陶瓷谐振器建议选择40pF+/-10pF。内部振荡方式接法如图1-13所示。
(2)外部振荡方式
用户也可以采用外部时钟。采用外部时钟的电路如图1-14所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2端则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
图1-13 内部振荡方式
图1-14 外部振荡方式
图1-15为51单片机采用内部振荡方式的时钟电路框图。
图1-15 51单片机的时钟电路框图
2.CPU时序
单片机的时序是指CPU在执行指令时所需控制信号的时间顺序。时序信号是以时钟脉冲为基准产生的。CPU发出的时序信号有两类:一类用于片内各功能部件的控制,由于这类信号在CPU内部使用,用户无须了解;另一类信号通过单片机的引脚送到外部,用于片外存储器或I/O端口的控制,这类时序信号对单片机系统的硬件设计非常重要。为了便于对CPU时序进行分析,人们按指令的执行过程规定了几种周期,即时钟周期、状态周期、机器周期和指令周期,也称为时序定时单位。
1)时钟周期:时钟周期也称振荡周期,即振荡器的振荡频率 f osc 的倒数,它是时序中最小的时间单位。单片机在工作时,它是由内部振荡器产生或由外部直接输入的送到内部控制逻辑单元的时间信号的周期。
2)状态周期:时钟周期经2分频后成为内部的时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,称为状态周期,用S表示。一个状态周期包含两个时钟周期,前半状态周期对应的时钟周期定义为P1,后半周期对应的时钟周期定义为P2。一般情况下,CPU中的算术逻辑运算在P1有效期间完成,在P2有效期间则进行内部寄存器间的信息传送。
3)机器周期:执行一条指令的过程可分为若干个阶段,每一阶段完成一项规定的操作,完成一项规定操作所需要的时间称为一个机器周期。规定一个机器周期有12个时钟周期,也就是说一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频。
即:1个机器周期=6个状态周期=12个时钟周期。
例如:有一个单片机系统,它的 f osc =12MHz,则时钟周期为1/12μs,状态周期为1/6μs,机器周期为1μs。
图1-16为51单片机各种周期的相互关系。
图1-16 51单片机各种周期的相互关系
4)指令周期:指令周期定义为执行一条指令所用的时间。一般由若干个机器周期组成。指令不同,所需要的机器周期数也不同。对于一些简单的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码,不再需要其他的机器周期。对于一些比较复杂的指令,例如转移指令、乘除运算则需要两个或两个以上的机器周期。