我用pic18F66k22+mcc18+mplab IDE。硬件是10路18B20.分别连接在了PE0-PE7和PD0-PD1。由于是10路18B20.我把操作18B20的子程序加了通道参数,比如 VOID DS18B20(u8 CHN);void WRITE_1820(u8 chn,u8 dat)
然后程序中 使用if else 判断chn,分别对相关IO口操作。main中每100ms对一个通道进行采集。10路采集完正好1秒。也就是说相同一路的18B20采集间隔正好1秒。
我申请了一个全局数组u16 Cur_temperature[10];用于存放10路温度值。采集成功的通道我进行CRC计算。我遇到的问题是只能采集前7路。后面3路采集不到,仿真观察,从18B20读到的数据全是0XFF..
我试着修改时序,等等等 。做了很多工作,。也把后面3路接到其他IO上。后面的数据一直是0XFF,传感器我都换过,。通道我也割线对调过。单独采集后面几路也试过。总是不行。
鼓捣了好几天。昨晚发现我对10路18B20操作的程序在一个C1文件里一共500多行。我突然奇想,我把后面5路放在另一个C2文件里。C1文件还是不变只不过只采集前5路。C2文件采集后5路。
说白了就是 我把前5路放在C1文件里,后5路放在C2文件,C1文件还是和原来一样。竟然TMD,TNND 好了。!!!!!!
本人用这个单片机很多年了,这个编译环境知道也不怎么好用。但是这次 我如果没有这个突发奇想。估计只有换单片机了。
基于以上的郁闷,,,肯定大侠指点。
C1文件和C2文件在附件里。C1文件是18B21.c
|