22:47:06 2010-03-07
首先,看51单片机4类IO口,P0~P3,做一个结构上直观的比较
之所以把P0口和P2口放在一起,是因为其硬件结构上都包含一个多路开关,用于选择是做为普通I/O口使用还是作为‘数据/地址’总线使用。对于没有内部ROM的单片机(8031)或单片机内部存储器无法满足程序大小需求,多路开关就与上面接通,作为单片机与扩展存储器通信的地址/数据总线使用。
它们之间的不同也显而易见,P0口引脚前2个mosfet(金属氧化物半导体场效应管)构成了一个推挽结构,而P2口前mosfet则为普通开关作用,且包含上拉电阻。
推挽结构:在输出“地址/数据”信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。
从结构上决定了它们的用途:假设扩展了存储器,则P0口作为地址/数据总线口,P2口作为高8位地址线。P0口作为IO输出口时,漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。,所以不推荐使用。而PP2端口的多路开关总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址。因此P2端口是动态的I/O端口,