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

          新聞中心

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

          使用PIC讀寫1-wire EEPROM DS2430的實例

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

          程序

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

          ;--------------------------------------------------------------------
          ;
          ; device access
          ;
          ;memory function
          ;write scratchpad
          ;read scratchpad
          ;
          ;read memory :
          ; resource occupy by ICD2
          ; PROM 0x1f00 - 0x1fff
          ; RAM 0x70,0xf0,0x170,0x1e5~0x1f0
          ;--------------------------------------------------------------------
          ; master action
          ; 0xf0 + start addr(8) => scratchpad(8) --> master
          ; none => scratchpad(9) --> master
          ; none => scartchpad(a) --> master
          ;
          ; none => scratchpad(0x1f)--> master[wrap around]
          ; reset pulse => stop sending data
          ;
          ; 0xf0+reset pulse => (0x00-0x1F) --> scratchpad(0x00-0x1F)

          ; copy scratchpad
          ; master
          ; 0x55 + 0xa5 => scratchpad(000-0x1f) --> (0x00-0x1F)
          ; held hi for 10ms
          ; 0xf0 + reset pulse => copy whole from EEPROM to SCRATCHPAD
          ; use timer as a delay timer
          ;
          ; author : Rex Chen
          ; date : May,8th
          ; ver : 1.81
          ;

          list p=16F877A
          #i nclude p16f877a.inc
          __CONFIG _CPD_OFF _CP_ALL _DEBUG_ON _BODEN_OFF _LVP_OFF _PWRTE_OFF _WDT_OFF _XT_OSC

          #define OneWireDHi bsf PORTC,Bit2
          #define OneWireDLo bcf PORTC,Bit2

          #define CARRY STATUS,C
          #define ZERO STATUS,Z

          Bit0 equ H'0000'
          Bit1 equ H'0001'
          Bit2 equ H'0002'
          Bit3 equ H'0003'
          Bit4 equ H'0004'
          Bit5 equ H'0005'
          Bit6 equ H'0006'
          Bit7 equ H'0007'
          ;variable defination
          cblock 0x20 ; RAM area 0x20- 0x7f
          SYSFLAG
          TxB ; Command buffer been send
          TxBuffer ; data buffer been send
          RxB ; Command buffer been received
          TempB ; Temp Byte to roll the data
          LoopCounter
          Addr ; address to access BQ2430A
          PBDir ; port C direction log file
          PADir ; port A direction log file
          Temp
          ErrCode ;
          W_SAVE
          STATUS_SAVE
          TxBuf:8 ; Tx Temp buffer
          Offset
          endc

          ;;
          cblock 0xa0
          SARS1
          SARS2
          SARS3
          endc

          cblock 0x100
          HateSARS1
          HateSARS2
          HateSARS3
          HateSARS4
          endc

          cblock 0x190
          SARSIsAPig0
          SARSIsAPig1
          SARSIsAPig2
          SARSIsAPig3
          SARSIsAPig4
          SARSIsAPig5
          endc


          ;---------------- SYSFLAG ----------------------------------
          fTxHi equ H'0000'
          fTxLo equ H'0001'
          fRxMode equ H'0002'
          ;;
          ;;
          ;; there are 4 memory block
          ;; 1. EEPROM 2. memory scratchpad
          ;; 3. application register
          ;; 4.register scratchpad
          ;; aliase
          ;;
          ;; memory function
          ;; write memory scratch
          ;; read memory scratch
          ;; copy memory scratch to EEPROM
          ;; read EEPROM to memory scratch
          ;;


          WScratch equ H'0F' ; 0x0f + Addr + data + data + .+ reset pulse
          ; // [Master --> ScratchPad ]
          RScratch equ H'AA' ; 0xaa + Addr + R + R +.. + reset pulse
          ; // [ScratchPad --> Master ]
          CPScratch equ H'55' ; 0x55 + 0xa5 + hi 10ms // [ScratchPad --> EEPROM ]
          REEROM equ H'F0' ; 0xf0 + Addr +R +R + reset pulse
          ; // [EEPROM(addr) --> ScratchPad]
          ; 0xf0 + reset pulse // [EEPROM --> ScratchPad]

          ;; application register , application register is OTP, there are 7 bytes
          ;; pay attention when you use application register , it's a 64 bit OTP
          WApR equ H'99' ; 0x99 + Addr + data + data .. + reset pulse
          ; [Master --> Application Reg]
          RStatus equ H'66' ; 0x66 + 0x00 + status + reset pulse

          RApR equ H'C3' ; 0xc3 + addr + data + .. + reset pulse
          ; application register --> master ( locked)
          ; register scratchpad --> master ( not lock)
          LockAp equ H'5A' ; 0x5A + 0xa5
          ; [ register scratchpad --> application register]
          ; 0x5A + reset pulse cancel copy command
          ; a OTP type do once only


          AppLocked equ B'11111100' ; application locked, the value is data in the status


          ;; ROM function command// implement skip rom only

          SkipROM equ H'CC' ;access memory directly
          SerachROM equ H'f0' ;read a bit , read the complement of the bit,write bit
          MatchROM equ H'55' ;0x55 + 64 bit rom bit
          ReadROM equ H'33' ;[family code serial number CRC ==> master ]

          org H'00'
          nop
          goto main

          ;;ISR **
          org H'04'
          goto isr
          isr
          movwf W_SAVE ;; W_SAVE=W
          swapf STATUS,W ;;
          movwf STATUS_SAVE ;; STATUS_SAVE=STATUS[3:0] STATUS[7:4]
          btfss PIR1,TMR1IF ;; TMR1IF
          goto exit_int_source_check
          ;; timer 1 service
          nop
          nop
          nop
          nop


          exit_int_source_check ;; restore STATUS W before exit from
          swapf STATUS_SAVE,W ;; W=STATUS_SAVE=STATUS[3:0] STATUS[7:4]
          movwf STATUS
          swapf W_SAVE,F ;; restore W
          swapf W_SAVE,W
          retfie
          ;; ISR
          main

          call init
          call init_int_en

          movlw H'21'
          movwf FSR
          movlw H'3c'
          movwf INDF ;
          ;-----------------------------------------------
          ;--------- read test --------------------------
          ;-----------------------------------------------
          ; movlw H'00'
          ; banksel Addr
          ; movwf Addr
          ; call Rd

          ; movlw H'01'
          ; banksel Addr
          ; movwf Addr
          ; call RdDS2430
          ;
          ; movlw H'02'
          ; banksel Addr
          ; movwf Addr
          ; call RdDS2430
          ;------------------------------------------------
          ; banksel Offset
          ; clrf Offset
          ; pagesel VendorTable
          ; call VendorTable
          ; movwf Temp
          ;
          ;

          movlw H'00'
          banksel Addr
          movwf Addr
          movlw H'34'
          banksel TxBuffer
          movwf TxBuffer
          call WrDS2430

          movlw H'01'
          banksel Addr
          movwf Addr
          movlw H'35'
          banksel TxBuffer
          movwf TxBuffer
          call WrDS2430

          movlw H'02'
          banksel Addr
          movwf Addr
          movlw H'36'
          banksel TxBuffer
          movwf TxBuffer
          call WrDS2430


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: DS2430 實例 EEPROM 1-wire PIC 讀寫 使用

          評論


          相關(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); })();