新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 使用PIC讀寫1-wire EEPROM DS2430的實例程序

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

        作者: 時間:2012-08-12 來源:網絡 收藏

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 龙里县| 黄平县| 金堂县| 平乡县| 石棉县| 荥阳市| 时尚| 全椒县| 达州市| 司法| 九龙城区| 吕梁市| 翁牛特旗| 沽源县| 阿坝| 白朗县| 封开县| 肥西县| 务川| 南溪县| 连云港市| 巨鹿县| 定安县| 沛县| 榆中县| 忻城县| 阿拉善盟| 攀枝花市| 平顶山市| 清苑县| 雷州市| 永宁县| 张家港市| 永川市| 和平区| 进贤县| 邵阳市| 松潘县| 聂拉木县| 南和县| 柳河县|