你这个程序会有结果就怪了,呵呵。通篇都没有对PB口的输入输出模式进行调整,不管读、写都是用PINB进行,程序是移植自51的吧?不要以为加了位域和链接宏就可以了的,依然活在51的阴影之下。PINB是输入寄存器,PORTB才是输出寄存器,你的DQ只指向PINB是不可取的,你只对PINB操作是无法写18B20的。正确的做法是,读的时候,将IO设置为输入,然后对PINB操作写的时候,将IO设置为输出,对PORTB操作。如果还不明白,欢迎追问。