久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2142|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+DS18B20寫入一個(gè)字節(jié)數(shù)據(jù)程序的疑問

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
DS18B20 的位讀寫時(shí)序,如圖:




當(dāng)要給 DS18B20 寫入 0 的時(shí)候,單片機(jī)直接將引腳拉低,持續(xù)時(shí)間大于 60us 小于 120us
就可以了。圖上顯示的意思是,單片機(jī)先拉低 15us 之后,DS18B20 會(huì)在從 15us 到 60us 之間
的時(shí)間來(lái)讀取這一位,DS18B20 最早會(huì)在 15us 的時(shí)刻讀取,典型值是在 30us 的時(shí)刻讀取,
最多不會(huì)超過 60us,DS18B20 必然讀取完畢,所以持續(xù)時(shí)間超過 60us 即可。
當(dāng)要給 DS18B20 寫入 1 的時(shí)候,單片機(jī)先將這個(gè)引腳拉低,拉低時(shí)間大于 1us,然后馬
上釋放總線,即拉高引腳,并且持續(xù)時(shí)間也要大于 60us。和寫 0 類似的是,DS18B20 會(huì)在
15us 到 60us 之間來(lái)讀取這個(gè) 1。

發(fā)送即寫入一個(gè)字節(jié)的數(shù)據(jù)程序如下。
void Write18B20(unsigned char dat)
{
unsigned char mask;

EA = 0; //禁止總中斷
for (mask=0x01; mask!=0; mask<<=1) //低位在先,依次移出 8 個(gè) bit
{
IO_18B20 = 0; //產(chǎn)生 2us 低電平脈沖
_nop_();
_nop_();
if ((mask&dat) == 0) //輸出該 bit 值
IO_18B20 = 0;
else
IO_18B20 = 1;
DelayX10us(6); //延時(shí) 60us
IO_18B20 = 1; //拉高通信引腳
}
EA = 1; //重新使能總中斷
}

疑問:“單片機(jī)先拉低 15us 之后,DS18B20 會(huì)在從 15us 到 60us 之間
的時(shí)間來(lái)讀取這一位,DS18B20 最早會(huì)在 15us 的時(shí)刻讀取,典型值是在 30us 的時(shí)刻讀取,
最多不會(huì)超過 60us,DS18B20 必然讀取完畢,所以持續(xù)時(shí)間超過 60us 即可。”但程序沒有反映出15us后讀取0啊?按18B20要求,控制器寫“0“和“1”的時(shí)序都不一樣,但程序好像沒有分開來(lái)寫?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:353115 發(fā)表于 2023-3-2 14:51 | 只看該作者
沒看代碼,直接看你的疑問。你表述DS18B20會(huì)在某時(shí)間讀取一位,又表述程序沒有反映出15us后讀0,這明顯自相矛盾。DS18B20在什么時(shí)間讀MCU在線上發(fā)出的電平狀態(tài),為何需要在程序上反映呢?DS18B20讀線上電平關(guān)MCU在線上發(fā)電平狀態(tài)什么事兒?MCU只需要干自己的事就好了
回復(fù)

使用道具 舉報(bào)

板凳
ID:673647 發(fā)表于 2023-3-2 15:05 | 只看該作者

謝謝解答,有點(diǎn)理解了!

本帖最后由 cwb2038 于 2023-3-3 09:29 編輯
qsssuv 發(fā)表于 2023-3-2 14:51
沒看代碼,直接看你的疑問。你表述DS18B20會(huì)在某時(shí)間讀取一位,又表述程序沒有反映出15us后讀0,這明顯自相 ...

這兩句話怎么理解?程序好像并沒有反應(yīng)出來(lái)啊?
       1、當(dāng)要給 DS18B20 寫入 0 的時(shí)候,單片機(jī)直接將引腳拉低,持續(xù)時(shí)間大于 60us 小于 120us
就可以了。
       2、 當(dāng)要給 DS18B20 寫入 1 的時(shí)候,單片機(jī)先將這個(gè)引腳拉低,拉低時(shí)間大于 1us,然后馬
上釋放總線,即拉高引腳,并且持續(xù)時(shí)間也要大于 60us。
   
回復(fù)

使用道具 舉報(bào)

地板
ID:161164 發(fā)表于 2023-3-2 21:06 | 只看該作者
本帖最后由 lkc8210 于 2023-3-3 09:27 編輯
cwb2038 發(fā)表于 2023-3-2 15:05
這兩句話怎么理解?程序好像并沒有反應(yīng)出來(lái)啊?
       1、當(dāng)要給 DS18B20 寫入 0 的時(shí)候,單片機(jī)直接將 ...
  1. void Write18B20(unsigned char dat)
  2. {
  3. unsigned char mask;

  4. EA = 0; //禁止總中斷
  5. for (mask=0x01; mask!=0; mask<<=1) //低位在先,依次移出 8 個(gè) bit
  6. {
  7. IO_18B20 = 0; //產(chǎn)生 2us 低電平脈沖
  8. _nop_();
  9. _nop_();
  10. if ((mask&dat) == 0) //輸出該 bit 值
  11. IO_18B20 = 0;//<<<<<<<<<<<1
  12. else
  13. IO_18B20 = 1;//<<<<<<<<<<<2
  14. DelayX10us(6); //延時(shí) 60us
  15. IO_18B20 = 1; //拉高通信引腳
  16. }
  17. EA = 1; //重新使能總中斷
  18. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2023-3-3 07:21 | 只看該作者
cwb2038 發(fā)表于 2023-3-2 15:05
這兩句話怎么理解?程序好像并沒有反應(yīng)出來(lái)啊?
       1、當(dāng)要給 DS18B20 寫入 0 的時(shí)候,單片機(jī)直接將 ...

簡(jiǎn)單的講,寫0就是一段持續(xù)60us~ 120us的低電平,寫1就是一個(gè)至少1us的低電平,隨后緊接著60us~ 120us的高電平。程序好像并沒有反應(yīng)出來(lái)1us的低電平延時(shí)是因?yàn)镃PU執(zhí)行兩條語(yǔ)句的時(shí)間至少1us,不必單獨(dú)寫1us的低電平延時(shí),如果加了一條_nop_();也無(wú)所謂。如果使用的高速單片機(jī)就要酌情加延時(shí)語(yǔ)句。
回復(fù)

使用道具 舉報(bào)

6#
ID:673647 發(fā)表于 2023-3-3 09:30 | 只看該作者
wulin 發(fā)表于 2023-3-3 07:21
簡(jiǎn)單的講,寫0就是一段持續(xù)60us~ 120us的低電平,寫1就是一個(gè)至少1us的低電平,隨后緊接著60us~ 120us的 ...

謝謝解答,有點(diǎn)理解了!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一道本视频 | 国产一区二区日韩 | 中文字幕1区2区3区 日韩在线视频免费观看 | 99精品一级欧美片免费播放 | 视频在线观看亚洲 | 国产伊人精品 | av日韩精品| 日韩中文在线视频 | 欧美精品中文 | 欧美在线a| 福利视频网址 | 91一区二区| 国产91在线精品 | 国产精品久久久久久影视 | 精品视频成人 | 国产精品区二区三区日本 | 亚洲精精品 | 成人黄色在线 | 日韩欧美一级精品久久 | 伊人春色成人网 | 亚洲网站在线观看 | 在线精品一区二区三区 | 欧美精品国产精品 | 在线观看免费福利 | 91国内精精品久久久久久婷婷 | 97色综合 | 成人在线视频免费看 | 日本三级电影在线看 | 北条麻妃99精品青青久久 | 一级做a爰片性色毛片16美国 | 日韩中文字幕免费在线观看 | 国产日韩欧美一区二区 | 三级黄色片在线播放 | 国产精品国产三级国产aⅴ无密码 | 国产免费一区二区 | 成人精品一区二区 | 欧美精品一区二区在线观看 | 日韩成人在线视频 | 久久久精品一区 | 亚洲电影一区二区三区 | av黄色网|