在MSP430单片机的手册中,对于端口复位后的状态,是这样描述的:复位后,所有端口处于输入状态。
就这个问题,我们来简单说一下单片机上电复位后端口的状态问题。
首先,单片机上电后端口的状态应尽量避免处于输出状态(无论是输出低还是输出高)
为什么要这样说呢?因为单片机外围电路的动作就是靠单片机端口输出低电平或者高电平来控制的。假如单片机端口一上电就处于输出高或者低电平的状态,那么很容易出现误动作。例如,有一个端口是控制继电器的,在正常状态下,单片机端口输出低电平使得继电器吸合,输出高电平断开继电器。平时我们要求继电器处于断开状态,那就要让单片机的这个端口处于输出高电平的状态,但是如果这个单片机的端口在上电复位后是处于输出低电平的状态,这时候就会出现问题了,即使我们在程序中一开始就把这个端口置为输出高电平,但是在复位期间,这个端口的状态我们是无法控制的,于是就会出现一个瞬间的低电平,虽然这个低电平持续的时间很短,有时候不足以使继电器吸合,当继电器仍会有轻微的吸合动作。这显然是我们不希望看到的。
有些单片机复位后端口默认为输入口的原因
前面我们说了,单片机上电后,如果端口默认为输出口,那么不管是输出低电平还是高电平,都可能会引起误动作,甚至会产生致命后果。
而假如端口上电后默认为输入口呢?我们知道,单片机的输出控制操作一般都是根据输入信号来实现的。这样的话,就会好很多,我们可以根据输入情况做处理,尤其是对于瞬间的输入,我们可以通过软件抗干扰技术来进行过滤,这样我们就能自己掌握主动,让误操作不会发生。
单片机复位后端口处于高阻态的原因
单片机复位后端口处于高阻态的原因无外乎降低功耗和安全性的原因。但是在程序中,对于单片机复位后的状态,也要有合理的分配,例如不能让端口一直处于高阻态,这样容易引起电流变化(我们在设计中发现,如果端口处于高阻态,会导致静态电流不稳定),当然端口状态的设置要与硬件电路配合,对于那些不用的端口,建议设置为输出。(MSP430数据手册中说:不用的端口,建议设置为输出,置于输出高电平还是低电平,区别不大,因为这些端口没有连接任何外部器件。)
电路中也一样,要根据实际情况设置上拉或者下拉电阻等等。