在网上找了很多关于C8051F310的资料和18B20的程序,网上很多程序都是以89C51、1602A、18B20为硬件编的程,能正常运行,我进行了适当的改编,可似乎310就是无法与18B20通信,显示一直不会改变,显示用的是段式液晶,显示部分程序自己编的,独立运行正常,这到底是怎么回事?C8051F310I/O口初始化不对?还是其他什么问题?求大虾帮忙啊,如果能帮上小弟,一定还会再加分的……
恩,果然有反应了……就是还想问一下,如果C8051F310用外接的32K晶振,能否与18B20进行通信呢?我看18B20的时序要求有很多都是微秒级的,32K不会太慢吧?
追答32K也不算慢,但是你必须要计算那些延时了,根据频率来计算延时需要的指令周期数。比如480us、180us和60us这些延时,计算好就可以。
追问我试了好多次,只要用了32K的晶振就又不行了,关键我还不知道C语言中一个while或一个for循环的机器周期是多少,所以不懂循环多少次?能具体教一下不?或者有32K的例程是最好的了~~~
追答你用32K晶振,一个机器周期是30.5微秒。
你用debug模式看编译生成的汇编代码,然后根据每条指令的机器周期数来计算时间。
看了下18B20的时序,貌似里面有个要求15us的时序,那32K是不是太满了?
追答是大了。但你看看那15us是要求的“最小时间”还是“最大时间”。
追问是最大时间……
追答那就没办法了。
追问额……那至少得用多大的晶振呢?256K?
追答256K的话一个机器周期就是3.8us,可以做到15us的要求。