新聞中心

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

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

        作者: 時(shí)間:2012-08-12 來源:網(wǎng)絡(luò) 收藏

        banksel INTCON
        bsf INTCON,GIE ;; GIE=1
        bcf INTCON,PEIE ;;
        bcf INTCON,T0IE ;; T0IE=1
        bcf INTCON,INTE ;; GP2 interrupt enable
        ; bcf INTCON,RAIE ;; disable GPIO port change interrupt

        本文引用地址:http://www.104case.com/article/171047.htm

        ;------------------------------------------------
        ; clear int flag
        ;------------------------------------------------
        bcf INTCON,T0IF
        bcf INTCON,INTF
        ; bcf INTCON,RAIF
        bcf PIR1,TMR1IF
        ; movlw H'00'
        ; movwf INTCON

        banksel PIE1
        bcf PIE1,EEIE
        bcf PIE1,ADIE
        bcf PIE1,CMIE
        bsf PIE1,TMR1IE ; enable Timer 1, timer 1 use as delay
        return

        ;--------------------------------------------
        ; Tx BYTE to 2430A
        ; LSB first, MSB last
        ;--------------------------------------------
        TxBYTE
        movlw .8
        movwf LoopCounter
        bcf CARRY
        RollTxB
        banksel TxB
        rrf TxB,F
        btfss CARRY
        goto LoBit
        call TxHi
        goto bloop
        LoBit
        call TxLo
        bloop
        banksel LoopCounter
        decfsz LoopCounter,F
        goto RollTxB
        return

        ;;---------------------------------------------------------
        TxL
        call SetLo
        call delay60us ; min 60 us
        call SetHi
        nop ; recovery time min 1us
        nop
        return
        ;-----------------------------------------------------------
        ; tx hi
        ;-----------------------------------------------------------

        TxHi:
        call SetLo ;1ustlow115us
        nop
        call SetHi
        call delay60us
        nop
        nop ;recovery time min 1us
        return


        ;;---------------------------------------------------------------------------
        ;; toggle the RC0 as input and the bus was pulled up by externl resistor
        ;; application default PCDir.Bit0 to output
        ;;---------------------------------------------------------------------------
        SetHi:
        bsf PBDir,Bit2
        movf PBDir,w
        ; bsf bank1
        banksel TRISB
        movwf TRISB
        return
        ;;----------------------------------------------------------------------------
        ;; clear register file RC0
        ;;----------------------------------------------------------------------------

        SetL
        banksel PORTB
        bcf PORTB,Bit2 ; data lo
        bcf PBDir,Bit2 ; direction out
        movf PBDir,W
        banksel TRISB
        movwf TRISB
        return

        ;---------------------------
        ; fix delay 60 us
        ; 0xffff - 8 = 0xfff7
        ;---------------------------
        delay60us
        banksel PIR1
        bcf PIR1,TMR1IF
        movlw H'EE'
        movwf TMR1L
        movlw H'FF'
        movwf TMR1H
        bsf T1CON,TMR1ON
        btfss PIR1,TMR1IF
        goto $-1
        bcf T1CON,TMR1ON
        bcf PIR1,TMR1IF
        return

        ;---------------------------
        ; fix delay 500 us
        ; 0xffff - 0x3e = 0xffc1
        ;---------------------------
        delay500us

        banksel PIR1
        bcf PIR1,TMR1IF
        movlw H'C0'
        movwf TMR1L
        movlw H'FF'
        movwf TMR1H
        bsf T1CON,TMR1ON
        btfss PIR1,TMR1IF
        goto $-1
        bcf T1CON,TMR1ON
        bcf PIR1,TMR1IF
        return

        ;---------------------------
        ; fix delay 100 ms
        ; 0xffff - 30d4 = 0xcf26
        ;---------------------------
        delay100ms
        banksel PIR1
        bcf PIR1,TMR1IF
        movlw H'26'
        movwf TMR1L
        movlw H'CF'
        movwf TMR1H
        bsf T1CON,TMR1ON
        btfss PIR1,TMR1IF
        goto $-1
        bcf T1CON,TMR1ON
        bcf PIR1,TMR1IF
        return

        org H'800'
        VendorTable
        movf Offset,W ; Save offset in Temp
        andlw H'ff'
        addwf PCL,f ; PCL = PCL+Offset

        dt MiCallChip,0
        end


        上一頁 1 2 3 下一頁

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 阳江市| 乡宁县| 开远市| 巴彦淖尔市| 潮州市| 深泽县| 云阳县| 濮阳县| 大兴区| 德清县| 普格县| 伽师县| 塘沽区| 卓尼县| 澳门| 墨玉县| 三门县| 宁海县| 通许县| 广德县| 宣化县| 永昌县| 十堰市| 嵊州市| 康马县| 六枝特区| 历史| 云安县| 鸡西市| 崇左市| 东城区| 襄城县| 民乐县| 江北区| 民和| 乌兰察布市| 安丘市| 盐津县| 拉孜县| 嘉峪关市| 集安市|