首先解释一下单片机为什么需要晶振。![]()
晶振是什么?全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机在运行的时候,需要一个脉冲信号,做为自己执行指令的触发信号,可以简单的想象为:单片机收到一个脉冲,就执行一次或多次指令。 第二个问题,是不是外接晶体的值可以随意选择呢? 当然不是,这就像不同的发动机有不同的最大功率一样,每种型号的的单片机都有最大能接受的晶体频率。先说51,它能够外接的最大晶体是24M,AVR单片机能够外接的最大晶振是16M。更高级的可编程芯片,例如FPGA,ARM,可以达到几百M,不过暂时不在我们的考虑范围之内。 第三个问题,为什么51最大可外接24M(不同厂家的值略有不同),而AVR等高级单片机只有16M?这设计到单片机的指令结构。 51单片机用的是复杂指令集,最直接的体现就是,它需要12个时钟周期来运行一条指令,当它外接12M晶体时,时钟周期为1/12M秒,运行一条简单的指令需要1/1M秒;而430和AVR单片机使用的是精简指令集,只需要一个时钟周期就能运行一条指令。这样看来,51最快的指令执行速度也就是2M每秒,而430或者AVR单片机的指令执行速度是16M每秒。 第四个问题,是不是所有的单片机都需要晶体?这就要回到我们最初的目的,我们给单片机接上晶体的目的是什么? 获取稳定的脉冲!那只要有合适的方法生成稳定的脉冲,那就可以去掉外接的晶体。举例,AVR单片机,它在单片机内部集成了一个RC振荡电路,通过对熔丝位进行编程,可以内部生产1M,2M,4M,8M的震荡频率,进而替代相应的晶体。 缺点是振荡电路在环境比较恶劣的情况下,不是很稳定,对一些计时要求比较严格的仪器和设备,不建议使用。如果对时间要求不高,多一个毫秒少一个毫秒无所谓的话,那就可以放心用了。 第五个问题,12M晶体和11.0592M晶体有什么区别? 呵呵,其实单从指令的执行速度来看,区别不大。采用11.0592M的唯一目的是为了获得精准的串口通信频率,简称就是波特率,它能够精准的生成9600的波特率,在串口通信中较常用。 先写到这,如果还有疑问可加扣扣1143179239,我看到后会回复。
4
|
|
|
|