《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > PIC:讀寫I2C程序

PIC:讀寫I2C程序

2009-01-16
關(guān)鍵詞: 讀寫 PIC

PIC:讀寫I2C程序

I2CCTR EQU 10H
I2CAD EQU 11H
REG3 EQU 12H
REG2 EQU 13H
REG1 EQU 14H
REG0 EQU 15H

GENR0 EQU 8H
GENR1 EQU 9H
BIT_COUNT EQU 9H
GENR2 EQU 0AH
BYTE_COUNT EQU 0AH


 movlw 4H
write
 MOVWF BYTE_COUNT
 MOVLW B8583W
WR_ABC
 MOVWF I2CCTR
 MOVFW GENR0
;
WR_MEM
 MOVWF I2CAD
WR_MEM0
 MOVLW IORA
 TRIS RA
 BSF RA,SCL
 MOVLW I2CCTR+$20
 MOVWF FSR
M_START
 NOP
 BTFSS RA,SDA
 RETLW 0FFH
; GOTO ^-1

 MOVLW E2OUT
 TRIS RA
 NOP
 BCF RA,SDA  ; to start
NXBY
WR_BYTE
 MOVLW 8H
 MOVWF BIT_COUNT
BIT_LOOP
 nop
 RLF 0H
 BCF RA,SCL
 BTFSS 3,0
 GOTO ^+3
 BSF RA,SDA
 GOTO ^+2
 BCF RA,SDA
 NOP
 NOP

 BSF RA,SCL
 DECFSZ BIT_COUNT
 GOTO BIT_LOOP
 NOP
 NOP
 BCF RA,SCL
 NOP
ACKG
 NOP
 MOVLW IORA
 TRIS RA
 BSF RA,SCL
 NOP
 BTFSC RA,SDA
 GOTO ACKG

 INCF FSR
 NOP
 bcf RA,SCL
 MOVLW E2OUT
 TRIS RA
 DECFSZ BYTE_COUNT
 GOTO NXBY
;
W_STOP
 MOVLW I2CAD+$0A2
 SUBWF FSR,W
 BTFSS 3,0
 RETLW 0H
M_STOP
 BCF RA,SDA
 NOP
 BSF RA,SCL
 MOVLW IORA
 NOP
 NOP
 NOP
 BSF RA,SDA
 TRIS RA
 RETLW 0H

;------------------------------
;
ST_CMEMAD
 MOVFW GENR0
 MOVWF I2CAD
 MOVLW C02W
 MOVWF I2CCTR
 MOVLW C02R
 MOVWF REG3
;
ST_MEMAD
 MOVLW 2
 MOVWF BYTE_COUNT
 CALL WR_MEM0
 MOVLW 1
 MOVWF BYTE_COUNT
 MOVFW REG3
 MOVWF I2CCTR
 CALL WR_MEM0
 RETLW 0H
;--------------------------

RD_BYTES
 MOVWF BYTE_COUNT
 MOVLW REG3+$20
 MOVWF FSR
RNXTB
 BCF RA,SCL
 MOVLW IORA
 tris RA
 MOVLW 8H
 MOVWF BIT_COUNT
RNX
 BCF RA,SCL
 NOP
 BCF 3H,0
 BTFSC RA,SDA
 BSF 3H,0
 RLF 0H

 BSF RA,SCL
 NOP
 DECFSZ BIT_COUNT
 GOTO RNX

 INCF FSR
 MOVLW E2OUT
 BCF RA,SCL
 TRIS RA
 DECFSZ BYTE_COUNT
 GOTO T_ACKG
R_STOP
 CALL M_STOP
 RETLW 0H
;
T_ACKG
 BCF RA,SDA
 NOP
 BSF RA,SCL
 XORLW 0FFH
 XORLW 0FFH
 XORLW 0FFH
 GOTO RNXTB

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。