代码:如果响应则会产生低电平,判断返回1;否则返回0。串口调用打印返回值。实际运行一直是0,故作此分析验证。
bit AM2120_Convert()
{
uint8 Timeout = 0;
AM2120_PORT0 = 1;
AM2120_PORT0 = 0;Delay_ms(3); //主机起始信号【拉低时间1~20ms】
AM2120_PORT0 = 1;Delay_48us();Delay_6us();//主机释放总线【拉高时间10~200us】
if(AM2120_PORT0==1)return 0;
else while((AM2120_PORT0==0)&&(Timeout<200))Timeout++;
Delay_70us();
return 1;
}
下面是验证步骤及图解说明:
操作1,手动拉低2.2ms【演示操作,计算延时时间】
操作2:手动拉高36us【演示操作,计算延时时间】
操作3:实际验证,先拉低2.2ms,再拉高36us,但因AM2120未响应,故未出现应答信号【低电平】。