<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          18b20程序及應(yīng)用

          作者: 時(shí)間:2011-07-29 來(lái)源:網(wǎng)絡(luò) 收藏

          指令 說(shuō)明

          本文引用地址:http://www.ex-cimer.com/article/150417.htm

          DJNZ R7,LOOP0
          RET
          TAB:DB 0C0H,0F9H,0A4H,0B0H
          DB 99H, 92H, 82H, 0F8H
          DB 80H, 90H, 88H, 83H
          DB 0C6H,0A1H,86H, 8EH
          DB 0FFH
          END

          溫度轉(zhuǎn)換(44H) 啟動(dòng)在線(xiàn)ds18B20做溫度AD轉(zhuǎn)換
          讀數(shù)據(jù)(BEH) 從高速暫存器讀9位溫度值和CRC值
          寫(xiě)數(shù)據(jù)(4EH) 將數(shù)據(jù)寫(xiě)入高速暫存的第3和第4字節(jié)中
          復(fù)制(48H) 將高速暫存器中第3和第4字節(jié)復(fù)制到EERAM
          讀EERAM(B8H) 將EERAM內(nèi)容寫(xiě)入高速暫存器中第3和第4字節(jié)
          讀電源供電方式(B4H) 了解18B20的供電方式

          WENDU_L EQU 29H;用于保存讀出溫度的低字節(jié)
          WENDU_H EQU 28H;用于保存讀出溫度的高字節(jié)
          XIAOSHU EQU 27H;用于保存溫度的小數(shù)部分
          ZHENGSHU EQU 26H;用于保存整數(shù)部分
          BIAOZHI BIT 50H;18B20檢查位1為存在,0為不存在
          ORG 0000H
          AJMP MAIN
          ORG 0030H
          MAIN:MOV SCON,#00H
          ACALL DUWEN
          ACALL ZHENGHE
          ACALL BCD
          ACALL DISP
          ACALL TIME1
          AJMP MAIN
          ;----------------------------------------------------------------------------------------------------------------------------------------
          ;讀溫度子
          ;----------------------------------------------------------------------------------------------------------------------------------------
          DUWEN:SETB P2.0
          ACALL FUWEI ;讀溫度之前必須先復(fù)位
          JB BIAOZHI,CUNZAI;查看標(biāo)志位看18B20是否存在,1為存在,0為不存在
          RET ;不存在則返回
          CUNZAI: ;存在則開(kāi)始讀溫度
          MOV A,#0CCH ;跳過(guò)ROM匹配
          ACALL XIE ;調(diào)寫(xiě)子
          MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令
          ACALL XIE ;調(diào)寫(xiě)子程序
          ACALL TIME1 ;調(diào)1秒延時(shí),等等AD轉(zhuǎn)換完成,現(xiàn)在分辨率為12位,溫度最大轉(zhuǎn)換時(shí)間為750MS
          ACALL FUWEI ;讀溫前需要復(fù)位
          MOV A,#0CCH ;跳過(guò)ROM匹配
          ACALL XIE
          MOV A,#0BEH ;發(fā)讀溫度命令
          ACALL XIE
          ACALL DUSHU ;將闈出數(shù)據(jù)讀回
          CLR P1.2
          RET
          ;------------------------------------------------------------------------------------------------------------------------------
          ;復(fù)位子程序
          ;18B20復(fù)位需要將數(shù)據(jù)位拉低500us
          ;18B20收到信號(hào)后要等待16-60us,然后發(fā)出60-240us的低脈沖
          ;-------------------------------------------------------------------------------------------------------------------------------
          FUWEI:SETB P2.0
          NOP
          CLR P2.0
          MOV R0,#3
          INTE:MOV R1,#107 ;設(shè)一個(gè)537us延時(shí)
          KK1: DJNZ R1,KK1
          DJNZ R0,INTE
          SETB P2.0 ;拉高數(shù)據(jù)線(xiàn),等待回應(yīng)
          NOP
          NOP
          NOP
          MOV R0,#25 ;
          INTE1:JNB P2.0,INTE2 ;延時(shí)延時(shí)50us等待18B20回應(yīng),若返回低脈沖則說(shuō)明18B20存在
          DJNZ R0 ,INTE1
          AJMP INTE3 ;經(jīng)過(guò)反應(yīng)時(shí)間而沒(méi)檢測(cè)到18B20的存在,則跳轉(zhuǎn)去清零標(biāo)志位
          INTE2:SETB BIAOZHI ;檢測(cè)到18B20存在,置1標(biāo)志位
          CLR P1.0
          AJMP INTE4
          INTE3:CLR BIAOZHI ;沒(méi)檢測(cè)到18B20,清零標(biāo)志位
          AJMP INTE5
          INTE4:MOV R0,#120 ;延時(shí)240us,確定回應(yīng)信號(hào)已發(fā)完
          KK: DJNZ R0,KK
          INTE5:SETB P2.0
          RET


          ;----------------------------------------------------------------------------------------------------------------------------------------
          ;寫(xiě)18B20子程序
          ;-----------------------------------------------------------------------------------------------------------------------------------------
          XIE:MOV R2,#8 ;寫(xiě)計(jì)數(shù)寄存器,一共有8位數(shù)據(jù)
          CLR C
          LP:CLR P2.0
          MOV R3,#6 ;設(shè)一個(gè)延時(shí)
          LL1:DJNZ R3,LL1
          RRC A ;右循環(huán),先輸出低位
          MOV P2.0,C
          MOV R3,#23 ;設(shè)延時(shí)
          LL: DJNZ R3,LL ;
          SETB P2.0
          NOP
          NOP
          DJNZ R2,LP ;判斷是否完成數(shù)據(jù)傳送
          SETB P2.0 ;完成傳送拉高數(shù)據(jù)位
          RET
          ;-----------------------------------------------------------------------------------------------------------------------------------------
          ;從18B20中讀出溫度數(shù)據(jù)子程序
          ;-----------------------------------------------------------------------------------------------------------------------------------------

          DUSHU:MOV R4,#2 ;設(shè)讀回?cái)?shù)據(jù)個(gè)數(shù)指針
          MOV R1,#WENDU_L ;把溫度數(shù)據(jù)低位存入29H
          RE: MOV R2,#8 ;設(shè)數(shù)據(jù)長(zhǎng)度指針
          RE1: CLR C
          SETB P2.0
          NOP
          NOP
          CLR P2.0
          NOP
          NOP
          NOP
          SETB P2.0
          MOV R3,#9
          DJNZ R3,$
          MOV C,P2.0
          MOV R3,#23
          NN: DJNZ R3,NN
          RRC A
          DJNZ R2,RE1
          MOV @R1,A
          DEC R1 ;高位存入28H
          DJNZ R4,RE
          RET



          關(guān)鍵詞: 應(yīng)用 程序 18b20

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();