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

          新聞中心

          1-wire總線匯編程序

          作者: 時間:2013-01-07 來源:網(wǎng)絡(luò) 收藏

          ;**************匯編程**************************
          ;文件:1-wire.asm
          ;功能:接口程序
          ;器件:AT90S2313,DS1821
          ;時鐘:4.0MHz
          ;****************************************

          ;過程名:w1_init
          ;功能:1_wire總線
          ;入口參數(shù):無
          ;出口參數(shù):R30 1:有器件應(yīng)答 0:無器件應(yīng)答
          ;影響資源:R24,R25
          ;***************匯編程**************************
          w1_init:
          clr R30
          cbi w1_port, w1_bit ;輸出清零
          sbi w1_portd, w1_bit ;設(shè)置為輸出,將總線置為低電平
          ldi R24, 0xE0 ;延時480us
          ldi R25, 0x01
          d1:
          sbiw R24, 0x01
          brne d1
          cbi w1_portd, w1_bit ;設(shè)置為輸入,放開總線
          ldi R24, 0x5D ;延時70us
          d2:
          dec R24
          brne d2
          sbis w1_pin, w1_bit ;總線為高電平,沒有器件應(yīng)答
          inc R30 ;總線為低電平,有器件應(yīng)答,置輸出R30=1
          ldi R24, 0xC2 ;延時450us,等待復(fù)位周期完成
          ldi R25, 0x01
          d3:
          sbiw R24, 0x01
          brne d3
          ret
          ;****************1-wire總線匯編程*************************
          ;過程名:w1_write
          ;功能:寫入一個字節(jié)數(shù)據(jù)
          ;入口參數(shù):R23
          ;出口參數(shù):無
          ;影響資源:R22,R24,R25
          ;*****************1-wire總線匯編程************************
          w1_write:
          ldi R22, 0x08 ;置計數(shù)器
          write_next:
          rcall w1_write_bit ;寫入一位
          ror R23 ;要寫入的數(shù)據(jù)位移入最低位
          dec R22
          brne write_next ;8位未完,繼續(xù)下一位
          ret
          ;*****************************************
          ;過程名:w1_read
          ;功能:讀取一個字節(jié)數(shù)據(jù)
          ;入口參數(shù):無
          ;出口參數(shù):R30 讀取的8位數(shù)據(jù)存在R30中
          ;影響資源:R22,R24,R25
          ;*****************************************
          w1_read:
          ldi R22, 0x08 ;置計數(shù)器
          read_next:
          rcall w1_read_bit ;從總線上讀取一位
          dec R22
          brne read_next ;8位未完,繼續(xù)讀取下一位
          ret
          ;***************1-wire總線匯編程**************************
          ;過程名:w1_write_bit
          ;功能:寫入一位數(shù)據(jù)
          ;入口參數(shù):R23.0
          ;出口參數(shù):無
          ;影響資源:R24
          ;*****************************************
          w1_write_bit:
          sbi w1_portd, w1_bit ;設(shè)置為輸出,將總線置為0
          ldi R24, 0x11
          d4:
          dec R24 ;延時12us
          brne d4
          sbrc R23, 0 ;要輸出0,則跳過下一行,總線保持為0
          cbi w1_portd, w1_bit ;設(shè)置為輸入,釋放總線,輸出1
          ldi R24, 0x64
          d5:
          dec R24 ;延時75us
          brne d5
          cbi w1_portd, w1_bit ;寫入結(jié)束,設(shè)置為輸入,釋放總線
          ldi R24, 0x03 ;延時2us
          d6:
          dec R24
          brne d6
          ret
          ;*****************************************
          ;過程名:w1_read_bit
          ;功能:讀取一位數(shù)據(jù)
          ;入口參數(shù):無
          ;出口參數(shù):R30 讀取的1位數(shù)據(jù)存在R30中最高位,同時R30種原有的數(shù)據(jù)右移1位
          ;影響資源:C,R24
          ;*****************************************
          w1_read_bit:
          sbi w1_portd, w1_bit ;輸出0,把總線拉低
          ldi R24, 0x03 ;延時2us
          d7:
          dec R24
          brne d7
          cbi w1_portd, w1_bit ;設(shè)置為輸入,釋放總線
          ldi R24, 0x0F ;延時10us
          d8:
          dec R24
          brne d8
          clc
          sbic w1_pin, w1_bit ;總線為低電平,跳過下一行,C保持為0
          sec ;總線為高電平,C置1
          ror R30 ;C移入R30最高位
          ldi R24, 0x6B ;延時80us,等待周期結(jié)束
          d9:
          dec R24
          brne d9
          ret
          ;****************1-wire總線匯編程*************************
          ;This is the end



          關(guān)鍵詞: 1-wire總線 匯編程序 初始化

          評論


          相關(guān)推薦

          技術(shù)專區(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); })();