如果单片机的IO短路连接,一个IO设置为高电平,一个IO口设置为低电平,这两个IO口短路连接。
如果这两个IO口都为普通IO口(开漏输出:OC【NPN 型三极管】 就变成了OD【场效应管代替上图的npn型三极管】),那就没问题了,那么高电平的IO口会被拉低。
另一种输出结构是推挽输出。推挽输出的结构就是把上面的上拉电阻也换成一个开关,当要输出高电平时,上面的开关通,下面的开关断;而要输出低电平时,则刚好相反。比起OC或者OD来说,这样的推挽结构高、低电平驱动能力都很强。如果两个输出不同电平的输出口接在一起的话,就会产生很大的电流,有可能将输出口烧坏。而上面说的OC或OD输出则不会有这样的情况,因为上拉电阻提供的电流比较小。如果是推挽输出的要设置为高阻态时,则两个开关必须同时断开(或者在输出口上使用一个传输门),这样可作为输入状态,
如果这两个IO口为强推挽IO口,这样短路连接可能会烧坏IO口,因为强推挽的IO电流过大(接近30mA)。
设置STC C51单片机的IO类型的方法是:
可通过设置PXM1:PXM0的值:
PXM1:PXM0
0 0 准双向口(传统IO)
0 1 推挽输出(强上拉 ,电流可达20mA,尽量少用)
1 0 仅为输入(高阻)
1 1 开漏,如传统8051的P0口
例:C语言中直接赋值
P1M0 = 0xC0;
P1M1 = 0xA0;//P1.7开漏,P1.6高阻,P1.5强推挽输出,其他准双向IO口。