第一:你的问题,只局限于低端的51单片机,如STC89C51RC系列,高端的51单片机,如STC15系列,就没有你说的问题了。
第二:芯片手册告诉我们,低端51单片机I/O口有两种工作类型:一类为准双向口/弱上拉,另一类为开漏输出。
正常情况下,51单片机上电复位后,P0为开漏输出,P1P2P3为准双向口。所以,当P0口作为总线扩展使用时,是不需要接上拉电阻的,只有要把它作为一般I/O口时,才需要接4.7K~10K上拉电阻。
第三:上拉电阻的作用,主要是控制电平,而不是功率什么的,所以不需要三极管
第四:至于为什么是内部接或外部接,这跟工程师和想法或应用需要有关吧。总线扩展常见,所以留了一个口,但使用又不是很多,所以只留一个口。有些管脚少的单片机,就没有这个P0口。