欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機讀取DS18B20序列號程序問題 [打印本頁]

作者: benclee    時間: 2020-3-31 16:22
標題: 單片機讀取DS18B20序列號程序問題
  1. u32 serial[8];
  2. DS18B20_Write_Byte(0X33); //讀取序列號
  3.   for(i=0;i<6;i++)
  4.      serial[i] = DS18B20_Read_Byte();
  5.         printf("%d\r\n",serial );


  6. u32 number=0;  
  7. DS18B20_Write_Byte(0x33);  
  8.     for(i=0;i<6;i++)  
  9.     {  
  10.         data = DS18B20_Read_Byte();  
  11.         number |= data;  
  12.         number = number<<8;  
  13.     }  
  14.       printf("%d\r\n",number);  
復制代碼

這兩個哪個是對的,讀取的內容不一樣
上面讀出來是536872200[ i]下面讀出來是33686016


作者: man1234567    時間: 2020-3-31 19:10
從程序上看下面的靠譜點  
作者: carpcarey    時間: 2020-3-31 21:26
上面的代碼:u32 serial[8];后面printf("%d\r\n",serial );
輸出的是指針的值,也就是serial的內存地址。536872200=0x20000508 這是serial在內存中的地址,并不是這個地址存的東西。

下面的代碼:讀到一個字節,把他拼成一個4字節的。比如是5個0x10,中間值就是0x10101000(u32只有4字節,左移移出了2個字節,因為代碼里你是先或再左移,所以最后始終是左移過的.第一次循環完畢就是0x00001000),結果就是0x10101000=‭‭269488128‬‬。所以不一樣。

根據你第二種的結果:你得到33686016=0x02020200,可以知道序列號最后3個字節是0x02 0x02 0x02,前面的被移出了。無從知道。

作者: benclee    時間: 2020-4-1 08:04
man1234567 發表于 2020-3-31 19:10
從程序上看下面的靠譜點

謝謝幫助
作者: benclee    時間: 2020-4-1 08:05
carpcarey 發表于 2020-3-31 21:26
上面的代碼:u32 serial[8];后面printf("%d\r\n",serial );
輸出的是指針的值,也就是serial的內存地址。 ...

明白了,謝謝您的幫助
作者: 風光好    時間: 2020-5-11 16:10
樓主可以請教一下這個問題嗎,想學習一下
作者: benclee    時間: 2020-5-12 08:04
本帖最后由 benclee 于 2020-5-13 08:01 編輯
風光好 發表于 2020-5-11 16:10
樓主可以請教一下這個問題嗎,想學習一下

也是初學。可以共師兄習
作者: benclee    時間: 2020-5-13 09:34
風光好 發表于 2020-5-11 16:10
樓主可以請教一下這個問題嗎,想學習一下

也是初學,可以共師兄習




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1