单片机IO短路连接问题

2019-04-15 18:31发布

如果单片机的IO短路连接,一个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口。