在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用PIC讀寫1-wire EEPROM DS2430的實(shí)例

      使用PIC讀寫1-wire EEPROM DS2430的實(shí)例

      作者: 時間:2011-05-17 來源:網(wǎng)絡(luò) 收藏

      ;-------- read address 0 --------------------------
      movlw H'00'
      movwf Addr
      call Rd

      goto $
      ;----------------------------------------------
      ; template to init before write
      ; to
      ;-----------------------------------------------
      ; movlw H'00'
      ; movwf Addr
      ; movlw H'3C'
      ; movwf TxBuffer

      ;---------------------------------------------
      ; write one byte
      ; input
      ; Addr = starting address to write
      ; TxB = data to save
      ; output =
      ; ErrCode = 0 -> write ok
      ; = 1 -> write fail
      ;-----------------------------------------------
      WrDS2430
      call WrScratchPAD
      call CP2EE
      return

      本文引用地址:http://www.biyoush.com/article/150737.htm


      ;------------------------------------------------
      ; template to init before read
      ; to DS2430
      ;-------------------------------------------------
      ; movlw H'00'
      ; movwf Addr

      ;-------------------------------------------------
      ; read DS2430 one byte
      ; input
      ; Addr = starting address to read
      ; output
      ; RxB = data to read
      ;--------------------------------------------------
      RdDS2430
      call REE2ScratchPAD
      call HostRdScratchPAD
      return


      ;;--------- host read scratch pad ----------------------------
      ;; save desired data into RxB
      ;;
      ;;--------------------------------------------------------------

      HostRdScratchPAD
      call DS2430AInitState
      banksel TxB
      movlw SkipROM
      movwf TxB
      call TxBYTE ; SkipROM

      movlw RScratch ; read scratch PAD Command
      movwf TxB
      call TxBYTE

      movf Addr,W ; starting address to read
      movwf TxB
      call TxBYTE

      call R2430A ; read desired scratch pad into RxB
      call RstPulse
      return


      ;-------------- write memory scratch scratch pad ------------------------
      ; write one byte into scratch PAD
      ; input
      ; Addr = starting address to write
      ; TxBuffer = data to save
      ; output
      ; ErrCode = 0 -> write ok
      ; = 1 -> write fail
      ;---------------------------------------------------------------------------

      WrScratchPAD
      call DS2430AInitState
      movlw SkipROM ; 0xCC
      movwf TxB
      call TxBYTE ; SkipROM

      movlw WScratch ; write memory scratch pad, 0x0f
      movwf TxB
      call TxBYTE

      movf Addr,W ; starting address of memory scratch pad
      movwf TxB ; TxBYTE use TxB
      call TxBYTE

      movf TxBuffer,W ;
      movwf TxB
      call TxBYTE
      call RstPulse ; reset pulse
      call delay500us ; wait presence pulse
      return

      ;---------- CP2EE ---copy whole scratch pad to EE ----------------------
      ; write memory scratch
      ; verify memory scratch
      ; copy memory scratch to EE
      ;----------------------------------------------------------------------
      CP2EE
      call DS2430AInitState ; 0x55 + 0xa5 + hi 10ms // [ScratchPad -> ]
      banksel TxB
      movlw SkipROM
      movwf TxB
      call TxBYTE ; SkipROM
      movlw CPScratch ; 0x55
      movwf TxB
      call TxBYTE
      movlw H'a5'
      movwf TxB
      call TxBYTE
      call ForceHi ; min 10ms refter to datasheet
      return

      ;--------- REE2ScratchPAD --- copy whole EE to ScrathPAD ----------------
      ; copy EE to whole memory scatch
      ; read memory scratch
      ;format I: 0xf0 + Addr +R +R + reset pulse, copy byte by byte
      ;format II: 0xf0 + Addr + reset pulse, copy whole
      ;------------------------------------------------------------------------
      REE2ScratchPAD
      call DS2430AInitState
      banksel TxB
      movlw SkipROM
      movwf TxB
      call TxBYTE ; SkipROM
      movlw REEROM ;; Read from EE into ScratchPAD
      movwf TxB
      call TxBYTE ;;
      call RstPulse ;; copy all
      return

      ;----------R2430A ---- Host read the scratch PAD ------------------------
      ; Read 2430A Scratch PAD
      ; LSB first
      ; save the result in RxB
      ;------------------------------------------------------------------------

      R2430A ; returns byte in RxB
      movlw .8
      movwf LoopCounter
      clrf RxB
      RLoop
      call SetLo ;
      nop
      call SetHi ; it will pull up by resistor
      nop ; delay to sample reliable bit
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop

      banksel PORTB
      movf PORTB,W
      movwf Temp
      btfss Temp,Bit2

      goto gLo
      bsf CARRY
      goto rol
      gLo
      bcf CARRY
      rol
      banksel RxB
      rrf RxB,F
      call delay60us ; tdrv + trelease
      banksel LoopCounter
      decfsz LoopCounter,F
      goto RLoop
      movf RxB,W ; save the result in W
      return

      ;----------------------------------------------------------
      ; strong pull up
      ;
      ;----------------------------------------------------------
      ForceHi

      bsf PBDir,Bit2
      movf PBDir,W ;; input

      banksel TRISB
      movwf TRISB ;; set input, pull by external resistor
      call delay100ms
      bcf PBDir,Bit2 ;; output
      movf PBDir,W
      movwf TRISB
      return
      ;-------------------------------------------------------------
      ; reset pulse
      ;
      ;--------------------------------------------------------------
      RstPulse
      call SetHi
      call SetLo
      call delay500us
      call SetHi ;Pull up by resistor
      return
      ;---------------------------------------------------------------
      ; reset pulse followed presence pulse
      ;
      ;---------------------------------------------------------------
      DS2430AInitState
      call SetHi
      call SetLo
      call delay500us ; reset pulse
      call SetHi
      call delay500us ; presence pulse, pull up by resistor
      return


      ;-----------------------------------------------------------------------

      init
      movlw H'3f'
      movwf PBDir ; 0x00111111
      banksel TRISB
      movwf TRISB ; force all portC as input
      ; movlw b'00000000' ; GP2 pull-up,GP4 output
      ; movwf WPU ; connect the D of DS2430A to Port A
      ;--------------------------------------------------------------------
      ; toggle from bank0 to bank1
      ; option register
      ; 7: 1: port A pull-up OFF, 0:port A pull-up ON
      ; 6: 1: rising INT , 0:fall INT
      ; 5: 1: T0CKI to TMR0, 0: internal cycle to TMR0
      ; 4: 1: Hi to Lo count 0: Lo to Hi count
      ; 3: 1: Precale to WDT 0: Prescale to TMR0
      ; 2:0 prescale value
      ;---------------------------------------------------------------------
      movlw b'11000010' ;; pull-up ON,rising INT, internal cycle to TMR0,Lo to Hi count,Pre to TMR0,1:8
      movwf OPTION_REG ;; ,prescal over 8
      banksel INTCON
      clrf INTCON
      clrf PORTB
      movlw 0x07 ;; comparator off
      movwf CMCON ;; comparator off
      clrf TMR0

      ;;--------------------------------------------------------
      ;; 7: X
      ;; 6: 1: Timer1 on if T1G
      ;; 5:4 : 11:/8,10:/4,01:/2,00:/1
      ;; 3 : 1 LP for timer 1 on, 0: LP for timer1 of
      ;; 2 : 1 do not sync external , 0 sync external clock
      ;; 1 : 1: clock source external , 0: clock source internal
      ;; 0 : 1: enable timer 1 ,0: disable timer 1
      ;;---------------------------------------------------------

      ; movlw b'00000000' ;x,no gate control,over 8,LP osc to timer1 off,x,internal clock,stop timer
      ; movwf T1CON
      movlw b'00111000'
      movwf T1CON
      clrf PIR1
      return

      ;;-------------------------
      ;; init interrup enable,
      ;;-------------------------
      init_int_en



      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉