1、振荡电路(时钟电路)的组成
1、振荡电路(时钟电路)的组成
内部:89C51/S51芯片内部有一个高增益反相放大器, 用于构成振荡器。反相放大器的输入端为XTAL1,输出 端为XTAL2。
外部:在XTAL1、XTAL2两端跨接石英晶体,及两个电 容,就可以构成稳定的自激振荡器。电容器C1和C2通 常取30 pF左右,可稳定频率并对振荡频率有微调作用。
石英晶体:决定振荡频率,频率范围 : fOSC=0~24 MHz
振荡频率及振荡周期:
2、节拍与状态周期
节拍:用一个2分频的触发器电路,将振荡器的信号 频率fOSC除以2,得到两相时钟信号P1和P2。( P: Phase)
时钟信号P1:节拍P1,是前半周信号有效,
时钟信号P2: 节拍P2,后半周信号有效。
机器状态周期:时钟信号的周期称为机器状态周期 S(STATE),是振荡周期的2倍。(时钟周期)
功能:每个时钟周期(以后常称状态S)有两个节拍(相 )P1和P2,CPU就以两相时钟P1和P2为基本节拍,指 挥89C51/S51单片机各个部件协调地工作。
3、机器周期
CPU访问一次存储器:需要12个振荡周期,包括6 个S态:S1,S2,…,S6。
每个状态又包括两拍,称为节拍P1和节拍P2。
机器周期:是指CPU访问存储器一次所需的时间。 例如:取指令、读存储器、写存储器等等。
一个机器周期:包括12个振荡周期:即S1P1, S1P2,S2P1,···,S6P1,S6P2。
若采用6MHz晶体振荡器,则每个机 器周期为多少?
设:晶体振荡器频率 fosc=6MHz,
则:振荡周期=1/fosc=1/6 μs(微秒)
因为:一个机器周期包括12个振荡周期,
所以:一个机器周期=12*(1/6) μs(微秒)
= 2μs(微秒)
问: 如果fosc=12MHz, 一个机器周期为多少?
答案 1μs(微秒)
4、指令周期
指令周期:执行一条指令所需的时间。
每条指令的执行时间不同,由一个或几个 机器周期组成。
指令的机器周期数少则执行速度快。
单片机指令包括:
单周期指令:加法、减法等
双周期指令:比较大小等
四周期指令:乘法、除法
C51单片机各指令时间分别为多少?
设振荡周期为6MHz,则一个机器周期为 2μs (微秒)。
单周期指令:指令周期为 2μs(微秒)
双周期指令:指令周期为 4μs(微秒)
四周期指令:指令周期为 8μs(微秒)
如果振荡周期为12MHz,则其指令周 期分别为 1μs、2μs 和4μs。
5、基本时序定时单位
综上所述,89C51/S51或其他80C51单片机的基本时序定时 单位有如下4个。
•振荡周期: 晶振的振荡周期,为最小的时序单位。
•状态周期(时钟周期): 振荡频率经单片机内的二分频器分 频后提供给片内CPU的时钟周期。因此,一个状态周期包含2 个振荡周期。
•机器周期(MC): 1个机器周期由6个状态周期即12个振荡 周期组成,是计算机执行一种基本操作的时间单位。
•指令周期: 执行一条指令所需的时间。一个指令周期由1~4 个机器周期组成,依据指令不同而不同,见附录A。
若单片机外接晶振频率12 MHz,则:
振荡周期=1/fOSC=1/12 MHz=0.083 3 μs
状态周期=2/fOSC=2/12 MHz=0.167 μs
机器周期=12/fOSC=12/12 MHz=1 μs
指令周期=(1~4)机器周期=1~4 μs
则: 振荡脉冲周期(节拍,1/fOSC) < 状态周期(时钟周期) < 机器周期和指令周期
振荡周期 < 时钟周期 < 机器周期 <= 指令周期
复位操作
1.上电自动复位
◼上电自动复位是在加电瞬间电容通过充电来实现的,其电路如 图2-18(a)所示。
◼在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲,用 以复位。只要电源VCC的上升时间不超过1 ms,就可以实现 自动上电复位,即接通电源就完成了系统的复位初始化。
◼对于CMOS型的89C51/S51,由于在RST端内部有一个下 拉电阻,故可将外部电阻去掉,而将外接电容减至1 μF。
2.手动复位
所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态。系统上电运行后,若需要复位,一般是通过手动复位来实现的。通常采用手动复位和上电自动复位组合,其电路如图2-18(b)所示。
复位电路虽然简单,但其作用非常重要。一个单 片机系统能否正常运行,首先要检查是否能复位 成功。初步检查可用示波器探头监视RST引脚, 按下复位键,观察是否有足够幅度的波形输出 (瞬时的),还可以通过改变复位电路阻容值进行实验。
3.复位操作的主要功能
89C51/S51系列单片机与其他微处理器一样, 在启动时都需要复位,使CPU及系统各部件处于 确定的初始状态,并从初态开始工作。
89C51/S51系列单片机的复位信号是从RST引 脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如 RST引脚上有一个高电平并维持2个机器周期 (24个振荡周期),则CPU就可以响应并将系统 复位。
1、程序地址指针PC初始化为0000H,使单片机从 0000H单元开始执行程序。 (当由于程序运行出错或操作错误使系统死锁状态时, 为摆脱困境,也需要按复位键重新启动)
2、除PC之外,复位操作还对其他一些寄存器有影响, 它们的复位状态如表2-9所列。即在SFR中,除了端 口锁存器、堆栈指针SP和串行口的SBUF外,其余 的寄存器全部清0,端口锁存器的复位值为0FFH, 堆栈指针值为07H,SBUF内为不定值。内部RAM 的状态不受复位的影响,在系统上电时,RAM的内 容是不定的。
A=00H: 表明累加器已被清0。
PSW=00H: 表明选寄存器0组为工作寄存器组。
SP=07H: 表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操 作的先加后压法则,第一个被压入的数据被写入08H单元中。
P0~P3=FFH: 表明已向各端口线写入1,此时,各端口既可用于输 入,又可用于输出。 IP=×××00000B: 表明各个中断源处于低优先级。
IE=0××00000B: 表明各个中断均被关断。
TMOD=00H: 表明T0,T1均为工作方式0,且运行于定时器状态。
TCON=00H: 表明T0,T1均被关断。
SCON=00H: 表明串行口处于工作方式0,允许发送,不允许接收。
PCON=00H: 表明SMOD=0,波特率不加倍。
值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对熟悉单片 机操作,减短应用程序中的初始化部分是十分必要的。
编者能力有限,如有错误欢迎留言交流
编者的其他专栏:
关注编者了解更多!