STC11系列的单片机好像可以设置IO上电默认低电平,请问用软件的方式怎么去设置,好像datasheet里面

加下拉电阻并且将引脚设置成强推挽模式就可以上电默认低电平,但是怎么设定啊?
回答好了加更多分以示酬谢!

以STC12C5628系列为例,按datasheet说法:

现可在STC12系列单片机I/O口上加一个下拉电阻(1K/2K/3K),这样上电复位时,虽然单片机内部I/O口是弱上拉/高电平输出,但由于内部上拉能力有限,而外部下拉电阻又较小,无法将其拉高,所以该I/O口上电复位时外部为低电平。如果要将此I/O口驱动为高电平,可将此I/O口设置为强推挽输出,而强推挽输出时,I/O口驱动电流可达20mA,故肯定可以将该口驱动为高电平输出。


以P2.0为例,要将这个口设为上电低电平。请看I/O口设置sfr:


#include "stc12c5628ad.h"


void main(void)

{

  P2M0 = 0x00;    //0000 0000  注意最低位0为对应P2.0的P2M0设置强推挽

  P2M1 = 0x01;    //0000 0001 注意最低位1为对应P2.0的P2M1设置强推挽

  while(1) {  ;  }

}

追问

这个在STC官网有解释,只是按照这个方法,还是不能上电默认低电平,另外你这个 P2M0和P2M1 是IO口模式设置寄存器,是不是它们已经在C51头文件里面已经定义好了,不需要自己重新定义了,比如SBUF之类的这些口就直接赋值就好了,我上次就完全按照上面改的,输出依旧是上电默认高电平,一点变化都没有啊。

追答

可以到官网 http://www.stcmcu.com 上去,下载一个已经定义好的头文件,里面有P2M0等定义。
如果还是高电平,则要注意以下几点:
1.如果是5V供电,这个口的输出高电平有多高,是接近5V,还是3V多?如果是前者,就要看你的sfr设置是否正确了(1是模式PnM0与PnM1要与数据表对应,2是要注意位不要搞错了);如果是后者,说明电压已经有一定的改变,说明下拉电阻用小了,参考图中的470R是用来限流的,可以根据需要减小或者不要这个电阻。
2.是否有外围电路会将你的IO口电平抬高?可以先断开其它电路试试。
另外,我的回答中,忘了在加P2&=0xFE;了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-23
STC系列单片机,可以设置成强推挽模式,或者高阻模式、准双向模式。
电默认为高电平。没有电默认低电平的功能。
一般推动继电器 可以加下拉电阻,然后 上电 先置低电平,再设置成强推挽模式,就不会产生
上电时 继电器 的 跳动 一下的 误动作。
相似回答