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;了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询