CODE
#define OW_RESET() DDRD|=(1<<DDD0);\
PORTD&=~(1<<PD0);\
DELAY_US(500)
#define OW_SEND_ONE() DDRD|=(1<<DDD0);\
PORTD&=~(1<<PD0);\
DELAY_US(10);\
DDRD&=~(1<<DDD0);\
PORTD|=(1<<PD0);\
DELAY_US(10)
#define OW_SEND_ZERO() DDRD|=(1<<DDD0);\
PORTD&=~(1<<PD0);\
DELAY_US(100);\
DDRD&=~(1<<DDD0);\
PORTD|=(1<<PD0);\
DELAY_US(10)
typedef unsigned char BYTE;
int main(void)
{
//DDRD|=(1<<DDD1);
BYTE DevDetect;
OW_RESET();
DDRD&=~(1<<DDD0);
PORTD|=(1<<PD0);
DELAY_US(65);
if((PIND&(1<<PIND0))==0)
{
DevDetect=1;
}
else
DevDetect=0;
DELAY_US(415);
//OW_SendByte(0x55);
//OW_SendByte(0xF0);
OW_SendByte(0x0F);
OW_SendByte(0x20);
OW_SendByte(0x00);
OW_SendByte(0x8C);
return DevDetect;
}
void OW_SendByte(BYTE val)
{
for(int i=0; i<8; ++i)
{
if(val&(1<<i))
{
OW_SEND_ONE();
}
else
{
OW_SEND_ZERO();
}
}
}
PORTD&=~(1<<PD0);\
DELAY_US(500)
#define OW_SEND_ONE() DDRD|=(1<<DDD0);\
PORTD&=~(1<<PD0);\
DELAY_US(10);\
DDRD&=~(1<<DDD0);\
PORTD|=(1<<PD0);\
DELAY_US(10)
#define OW_SEND_ZERO() DDRD|=(1<<DDD0);\
PORTD&=~(1<<PD0);\
DELAY_US(100);\
DDRD&=~(1<<DDD0);\
PORTD|=(1<<PD0);\
DELAY_US(10)
typedef unsigned char BYTE;
int main(void)
{
//DDRD|=(1<<DDD1);
BYTE DevDetect;
OW_RESET();
DDRD&=~(1<<DDD0);
PORTD|=(1<<PD0);
DELAY_US(65);
if((PIND&(1<<PIND0))==0)
{
DevDetect=1;
}
else
DevDetect=0;
DELAY_US(415);
//OW_SendByte(0x55);
//OW_SendByte(0xF0);
OW_SendByte(0x0F);
OW_SendByte(0x20);
OW_SendByte(0x00);
OW_SendByte(0x8C);
return DevDetect;
}
void OW_SendByte(BYTE val)
{
for(int i=0; i<8; ++i)
{
if(val&(1<<i))
{
OW_SEND_ONE();
}
else
{
OW_SEND_ZERO();
}
}
}