一般情况下,并行总线并不是把P0,P2的每一个引脚都作了数据/地址总线来使用的,对于开发人员来说,充分的利用每一个I/O口即可以达到提高系统资源的利用率,也可以避免因需要过多I/O引脚而使得系统芯片占用过多电路板面积的尴尬。
一般并行总线接口的方式下,8根数据线是并需的,而地址总线并非总是需要16条,特别是对于那些外围扩展器件,比如在我的用DS12887时钟芯片制作的时钟闹钟系统 一文中DS12887的地址就只有9条线, 这样就就使得P2口全部用来做地址总线就显得有些空余,这些空余的地址总线是不是可以更好的利用起来呢?然而在很多书上“若P0,P2口作为数据/地址总线就不能用作通用I/O口”的结论可能会吓住我们进一步的思考。
用DS12887时钟芯片制作的时钟闹钟系统文中作为地址线而未连接有的P2.6--P2.0,以P2.0为例,用来控制PNP型三极管驱动蜂鸣器作为警报,当P2.0为高时,蜂鸣器不发声;为低时,则发声。设DS12877的地址时,没有连接的线可以设为1或0,这里可以令DS12887的A8(即P2.0口)恒为“高”,这样在写和读DS12887的指令周期中,蜂鸣器总是不发声的。若出现需要报警的情况(比如闹钟设置的时间到),设置一个报警标志位并置位为1,每一次总循环处理的过程中,先处理写和读DS12887的过程,然后紧接着检查报警标志位是否为1,若为1,就使P2.0为低,即蜂鸣器发声,即使在检查报警标志位之前的过程中使得A8为“高”,但是这个过程非常短暂,而且安排在后的判断报警标志位的过程使得P2.0又回到了低(如果有报警的需要,当然若不需要报警,前面出现A8为高本身就是正常的了),所以最后出现的结果使得P2.0所接的蜂鸣器听起来总是在正常工作的。
所以作为数据地址总线的端口并非总不能用做通用I/O口的,当然在具体设计的时候还要具体考虑的,本文讨论的是比如一些简单的人机接口,利用的是“人体器官并不是很灵敏”的道理,若在一些高可靠性的设计中就要再三权衡了。
write by eleclike 2007-10-31
用户1181689 2013-7-20 13:36
用户528931 2010-10-25 15:34
用户1522964 2010-1-12 16:48
用户1584993 2010-1-12 13:54
用户741296 2007-10-31 14:09
看看!