初始化变量错了诶,都没给status赋值,你这初始化函数变量完全没有意义诶,程序当然会跑飞啦,我给你改了下你试试,其它地方暂时还没看出什么问题。uchar Init_DS18B20(){ uchar status; DQ = 1; Delay(8); DQ = 0; Delay(90); DQ = 1; Delay(8); status=DQ; Delay(20); DQ = 1; return status;}