数字电路是触发器驱动的。要深入了解这个问题,需要重温 数字电路基础。
时钟信号是提供触发信号的,每一个时钟脉冲的上下边沿都能将数字电路的状态刷新一次。如果单片机在运行时,突然时钟停止了,则单片机里的所有状态都停在此处,但时钟恢复时,单片机又能接着运行。(这只是理论上。现实因为时钟启动和停止都不是瞬间的,而且有的有保护性复位,因而会有不同,时钟丢失后或许会直接复位重来。)
给触发器一个脉冲,它就会翻转状态。大多数时序逻辑器件都是基于触发器工作的。而一个完整的如单片机一样的复杂的数字逻辑系统,每一个触发器翻转也关系到很多其他状态的翻转。于是,说时钟是单片机的心脏就很形象。因为,时钟的一个接一个的脉冲信号,才能促使单片机改变状态。
如果脉冲的频率很高,则说明此信号来的很快,因而单片机状态改变的也就更快。因而可以说单片机的运行速度很快。
单片机的频率受制造工艺决定,有限的工艺水平、过高的频率会使信号传递过程中错误的几率增大,直到错乱,于是就不可能正常的运行。同时,高频率的功耗会更高。这是因为数字电路通常在稳态时功耗较低,而翻转时会较大功耗。假设单片机频率为1HZ,那它工作时,每秒才翻转一次。而100HZ,每秒就要翻转100次,显然功耗会增加n多~
数字电路一接通电源时,很多状态是随机的,于是会需要复位电路。除了单片机有复位,有的液晶模块也有,SPI FLASH芯片也有。它们具体执行的方式未必一样,但功能都是一样的,就是让电路(或说芯片、模块)的状态清除,设置为起始状态。比如把控制寄存器的值设置为默认值,把内存中的乱七八糟的数据都清空。目的是让数字电路处于一个已知的,可控的状态。
打个比方:你想去开电脑(假设没有外在信息表明电脑是开机中还是关机中),但是你都不知道电脑是不是已经开了还是没开(状态未知),如果此时你按开关,也许是关机也许是开机。但如果你把电脑电源线一拔(复位到初始状态),你就能确定电脑的状态是关机的。就如经过复位后的数字电路。而此时你去按电脑开关,那肯定是开机。
具体到单片机的复位,在数字电路级别的分析就算了,从编程的角度看,复位就是强制单片机立即从复位向量处开始执行代码。几乎所有的CPU中,复位都是不可屏蔽的中断。触发复位就无条件使程序从复位处理入口开始执行。通常也是整个程序的入口位置。
|