在设置1611的任意端口的任意引脚输入输出方向,特别是输出的时候,你也许会发现,在还没有设置输出1或者0的时候,这个引脚已经为1或者为0.
为什么会这样,其实很简单,上拉、下拉。
在这里并仅限于发现并解决问题,防止这样的问题存在于你设置端口为输出1之前,并且造成你对端口能正常工作的错觉才是我所关注的。
很多时候,为了在一个复杂的电路上实现一个小功能,特别是很多人分工完成一个项目的时候,这个问题就会慢慢地引起你的注意。
比如,甲用PORT2的两个引脚完成了一个输入检测,他可能在端口初始化的时候,本能地把其他的六个端口设置成了输出(本能:考虑到输入的不确定性,如果没有这样的本能,不要追究了)。
于此同时,乙要用PORT3的一个引脚输出高电平(这里不要考虑这个PORT3能否作为输出,就当它可以输出)。这个引脚在原理图上是和PORT2没有使用的其中一个引脚连接起来,并且连接了上拉电阻。
甲乙分别完成了自己负责的模块之后,把他们的模块交给丙来整合。丙是怎么做的呢?丙要根据整个硬件要完成的功能要求来安排模块的先后顺序,包括初始化。在初始化的时候,如果他在第一时间注意到了电路上的那个上拉电阻,他在调试的时候应该就不会碰到一些莫名其妙的问题(请允许我用这个词来表达自己碰到这样的问题的感受)。
丙在调试这个乙负责的功能模块的时候,首先会肯定PORT3输出的高电平没有问题(这是肯定的,示波器会告诉他)。但是接下来他会认定PORT3的这个端口没有问题,就导致了后来他用这个端口输出低电平的时候心情的极度郁闷。
深深地同情丙的惨痛遭遇,在这个静电横行,引脚连接的CMOS随时因为身体的接触被击穿的地方,碰到这样的问题也是一件大悲之事。
但是丙是要被批评的,如果丙在早期就对芯片的引脚的输入输出功能做出检测,这类问题可以避免,这或许早就应该成为丙的本能。
阅读(2236) | 评论(0) | 转发(0) |