基于ATmega16的DB18B20驱动的问题 30
#defineCLR_DIR_1WIREDDRD&=0xfb#defineSET_DIR_1WIREDDRD|=0x04#defineCLR_OP_1WIREPORTD&...
#define CLR_DIR_1WIRE DDRD &= 0xfb
#define SET_DIR_1WIRE DDRD |= 0x04
#define CLR_OP_1WIRE PORTD &= 0xfb
#define SET_OP_1WIRE PORTD |= 0x04
#define CHECK_IP_1WIRE (PIND & 0x04)
void init_1820() //初始化18B20
{
SET_DIR_1WIRE;
SET_OP_1WIRE;
CLR_OP_1WIRE;
delay_nus(480);
SET_OP_1WIRE;
CLR_DIR_1WIRE;
delay_nus(200);
while(CHECK_IP_1WIRE);
SET_DIR_1WIRE;
SET_OP_1WIRE;
delay_nus(140);
}
这是关于我的一个DB18B20检查复位的初始化函数,问题出现在了while(CHECK_IP_1WIRE);这句话上,按理说应该检查DB18B20发回来的低电平,可是就是检测不到,程序死在这个地方,上网查过很多,有的人也遇到这个问题!如果说实际电路对线路连接来说比较严格,而仿真软件上不应该这样啊,仿真上还是出不来?不知道怎么回事,还望指教! 展开
#define SET_DIR_1WIRE DDRD |= 0x04
#define CLR_OP_1WIRE PORTD &= 0xfb
#define SET_OP_1WIRE PORTD |= 0x04
#define CHECK_IP_1WIRE (PIND & 0x04)
void init_1820() //初始化18B20
{
SET_DIR_1WIRE;
SET_OP_1WIRE;
CLR_OP_1WIRE;
delay_nus(480);
SET_OP_1WIRE;
CLR_DIR_1WIRE;
delay_nus(200);
while(CHECK_IP_1WIRE);
SET_DIR_1WIRE;
SET_OP_1WIRE;
delay_nus(140);
}
这是关于我的一个DB18B20检查复位的初始化函数,问题出现在了while(CHECK_IP_1WIRE);这句话上,按理说应该检查DB18B20发回来的低电平,可是就是检测不到,程序死在这个地方,上网查过很多,有的人也遇到这个问题!如果说实际电路对线路连接来说比较严格,而仿真软件上不应该这样啊,仿真上还是出不来?不知道怎么回事,还望指教! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询