27,375
社区成员
发帖
与我相关
我的任务
分享
bit vds_reset()
{
int i = 0;
bit dq = 1;
DQ = 1;
delaymin();
DQ = 0;
// delaynus(133); ////last 480 us for reset, here is 600us for safe
delaynus(70);
DQ = 1;
// delaynus(22); ////here is above 100us
delaynus(10);
if(DQ == 0)
{
dq = 1;
//delaynus(133);
delaynus(70);
}
else
dq = 0;
DQ = 1;
return dq;
}
void vds_write_byte(unsigned char byte)
{
unsigned char count = 0;
while(count ++ < 8)
{
DQ = 0;
DQ = byte & 0x01;
byte >>= 1;
//delaynus(14);
delaynus(6); ////71us
DQ = 1;
}
}
unsigned char vds_read_byte()
{
unsigned char count;
unsigned char tmp;
for(count = 0; count < 8; count ++)
{
DQ = 1;
DQ = 0;
delaymin();
DQ = 1;
//delaynus(3);
//delaynus(1);
tmp >>= 1;
if(DQ == 1)
tmp |= 0x80;
//delaynus(14);
delaynus(6);
}
return tmp;
}