DDRA=OXFF;
PORTA=OXFF;
与
PORTA=OXFF;
DDRA=OXFF;
是有区别的,这两种顺序对应IO口的电平变化是不一样的。这个区别是在产品性能上面的,从表面上看不出明显区别,没有一定电路功底的可能不太好理解。DDRA、PORTA、在上电时默认都为0x00;如果你设方向DDRA后设PORTA的话,设定为输出方向的全部输出低电平、再设定电平,这个时候输出高电平,那么在输出高电平的这个IO口上面,就会有一个从低电平到高电平的瞬间变化,因为在变化期间IO口方向已经为输出,所以这个信号是有一定能量的,会产生一定的干扰。如果先设电平再设方向的话:上面说的瞬间变化就不会发生了。
[单片机端口的设置]
ATMEGA8单片机I/O口初始化的问题
一般不用的IO口设置为输入,打开上拉。
输入,即使什么地方出错,如短路等等,不会有电平冲突。如设置为输出刚好又错误的接到了相反的电平上面,费浪几十毫安电流是在所难免的,时间长了可能会损坏器件。
上拉是为了稳定IO口电平,如只输入不上拉,那么IO口是高阻状态,外部有干扰信号时它就很容易接收到这个信号,造成IO口内部电路高频变化,同样会费浪电流,更坏的是CPU很容易因此而受到干扰出现死机等。
在网上看到一些对电阻的上拉和下拉不太明白的,输入端的上拉及下拉非常简单但也非常重要。
上拉:通过一个电阻对电源相连。下拉:通过一个电阻到地。
上下拉一般有两个用处:提高输出信号的驱动能力、确定输入信号的电平(防止干扰)。
用过8051的都知道CPU的I/O上通常接有排阻(上拉到5V),这里主要是为了提高输出驱动能力的。因为8051的CPU不是标准的I/O口,输出为低电平时可以吸收均20mA的电流,但输出为高的时候是通过内部一个很大的电阻上拉的,输出高电平时驱动能力很差,所以就通过外部上拉来提高电平输出驱动能力。
一般一个三极管的基极都有两个电阻,一个限流一个上拉或下拉,此处的上下拉主要为了确定输入信号的电平。其实目标是为了防止干扰,因为器件的输入接口一般内阻都很大,很容易受干扰。接一个上下拉电阻其实也就是降低了输入阻抗,提高了抗干扰能力。
一般元器件不用的输入口通要求接上拉或下拉电阻。注意,不用的输出接口就不要接东西了。