看老师的教程,再看规格书,自己写了ds18b20的时序,还是跟以前的学习一样,写出来的代码是有问题的,经过了debug,发现在还是在位操作上写借了代码,byte = (7 << tmp) | (byte >> 1)
,应该是byte = (tmp << 7) | (byte >> 1);
以致于读取不到ds18b20传过来的温度数据。基础不牢,地动山摇。先把这一季的视频学会,再回头把C语言好好学学练练。
不说那么多,直接粘代码:
//晶振11.0592MHz 或 12MHz 都可以,12T
#include <reg51.h>
#include <intrins.h>
sbit BUS = P3^7;
/**************************延时函数*****************************/
void delay720us(void) //误差 0us
{
unsigned char a,b;
for(b=3;b>0;b--)
for(a=118;a>0;a--);
}
void delay70us(void) //误差 0us
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=32;a>0;a