当感应到时,输出一个高电平。这里我对io口进行了配置,要不然读不到高电平。建议大家以后养成习惯,对io口进行配置,stm32中会用到。
在这里我额外提下,一般在stm32中 浮空输入 芯片内部没有接上下拉电阻。由于其输入阻抗较大,这种模式一般用于标准通信协议,如I2C、USART的接收端等
模拟输入模式:芯片内部由另一条线路把电压信号传送到片上外设模块。如传送至ADC模块,由ADC采集电压信号。使用ADC外设时候必须使用该模式。
普通推挽一般用于输出电压0-3.3V,普通开漏一般用于输出5V高电平场合。(注:任何一种开漏模式,都需要接上拉电阻)
#include<stc12c5a60s2.h>
sbit renti=P1^4; //人体红外输出接收口
void ioinit() //设P1.3口为高阻输入
{
P1M0=0x08;
P1M1=0;
}
void ganying()
{
if(renti==1) d=0;
else d=1;
}
void main()
{
ioinit();
while(1)
{
ganying();
}
}