展开全部
由于STC单片机上电后有一段时间的延迟,好像最长能到65535个指令周期,才进入用户程序,所以从软件上想办法不能阻止上电误动作的产生,最简单的方法是在需要处理的IO口加一个下拉电阻,STC单片机上电后默认IO为准双向口,查其手册可知拉电流为150-250uA之间,系统电压为5V的情况下,计算可知相当于20K以上的上拉电阻,因此只要远小于这个阻值,例如下拉1K,即可实现上电后IO输出为低电平,这个阻值你可以实验一下,在可靠的前提下,能加到多大就用多大,以优化功耗。
当然,之后再想使用这个管脚作为输出的话,就应该使用推挽模式了,否则不能输出高电平,使用推挽模式需要考虑限流电阻的问题。另外这样处理完可能单片机功耗会上升,1K下拉的话输出高电平会额外消耗5mA电流,IO多的话,注意不要超过限制值。
当然,之后再想使用这个管脚作为输出的话,就应该使用推挽模式了,否则不能输出高电平,使用推挽模式需要考虑限流电阻的问题。另外这样处理完可能单片机功耗会上升,1K下拉的话输出高电平会额外消耗5mA电流,IO多的话,注意不要超过限制值。
展开全部
在程序中加初始化语句,比如P1=0x00。
或者在IO口上接非门,这样单片机上电时IO输出为1,但是非门取反后就是0了。
或者在IO口上接非门,这样单片机上电时IO输出为1,但是非门取反后就是0了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只能在硬件上做些手脚,
不然就算你在程序初始化马上用P1=0x00也还是有瞬间的电流。
如果你那款 stc 型号有强推挽功能,你可以参考数据手册上的方法,利用强推挽实现开机IO直接为低。
不然就算你在程序初始化马上用P1=0x00也还是有瞬间的电流。
如果你那款 stc 型号有强推挽功能,你可以参考数据手册上的方法,利用强推挽实现开机IO直接为低。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
默认是上拉电阻30K左右。输出用非门,当然增加费用不合算。更简单方法就是接个1K电阻到地(最老的89C5X无效,没强推输出),这样30K跟1K分压只有零点几电压。运行程序时候把输出改成强推模式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询