No.40293 作者:deltta 邮件:imh910@sohu.com ID:14412 登陆:2次 文章数:3篇 最后登陆IP:211.70.96.60 最后登陆:2003/8/20 8:53:26 注册:2003/8/17 11:02:04 财富:116 发帖时间:2003/8/18 11:15:01 发贴者IP:211.70.96.60 标题:deltta:请用过18B20的帮忙看看,究竟怎么了???为什么读出来的数据始终是16?? 摘要:No.40293请用过18B20的帮忙看看,究竟怎么了???为什么读出来的数据始终是16?? //----***** 以下是 1820 的控制操作***** //延时 void delay(int useconds) { int s; for(s=0;s <useconds;s++) ; } //复位 unsigned char ow_reset(void) { unsigned char presence; //do { DQ = 0; //pull DQ line low delay(29); // leave it low for 480us DQ = 1; // allow line to return high delay(3); // wait for presence presence = DQ; // get presence signal delay(25); // wait for end of timeslot if(presence==0) JDQ= 1; //while(presence==0); return(presence); // presence signal returned } // 0=presence, 1 = no part //从 1-wire 总线上读取一个 unsigned char read_bit(void) { unsigned char i; DQ = 0; // pull DQ low to start timeslot DQ = 1; // then return high for (i=0; i <3; i++); return(DQ); } //向 1-WIRE 总线上写一个 void write_bit(char bitval) { DQ = 0; // pull DQ low to start timeslot if(bitval==1) DQ = 1; delay(5); // hold value for remainder of timeslot DQ = 1; } //从 1-wire 总线上读取一个 unsigned char read_byte(void) { unsigned char i; unsigned char value = 0; for(i=0;i <8;i++) { if(read_bit()) value|=0x01 ......
>>返回讨论的主题
|