基于MSP430單片機的虛擬I2C總線(xiàn)軟件包VIIC_M1.0
![]() | ![]() |
圖一 | 圖二 |
三、應用界面
1、發(fā)送N字節數據——從當前地址開(kāi)始
;發(fā)送的數據在MTD中
;
;數列格式:S,SLA+W,subaddr_H,A,subaddr_L,A,DATA1,A,DATA2,A...,DATAn,A,P
;MOV.b #CODE,SLA;I2C_R_R/W=0;A0=A1=A2=0
MOV.b #N,Num_byt;發(fā)送字節數
CALL I2C_WR_Nbyte;從當前地址開(kāi)始寫(xiě)
2、接收N字節數據——從指定地址開(kāi)始讀
;接收的數據在MRD中
;
;數列格式:S,SLA+W,A,subaddr_H,A,subaddr_L,A,
S,SLA+R,A,DATA1,A,DATA2,A,...,DATAn,/A,P
MOV.b #CODE+SLAR/W,SLA
;SLAR/W=1,A0=A1=A2=0
MOV.b #N,Num_byt ;接收字節數
CALL #I2C_RD_Nbyte ;從當前地址開(kāi)始讀
3、接收N字節——從指定地址開(kāi)始讀
;接收的數據存放在MRD中
;
;數列格式:S,SLA+W,A,subaddr_H,A,subaddr_L,A,
;S,SLA+R,A,DATA1,A,DATA2,A,...,DATAn,/A,P
;
MOV.b #CODE,SLA
;SLAR/W=0:寫(xiě),A0=A1=A2=0
MOV.b #N,Num_byt ;接收字節數
MOV #Subaddr,I2C_R_Addr ;字節地址送入暫存單元
CALL #I2C_R_Addr ;發(fā)送字節地址
MOV.b #CODE+SLAR/W,SLA;SLAR/W=1:讀,A0=A1=A2=0
CALL #I2C_RD_Nbyte
4、發(fā)送N字節——從指定地址開(kāi)始寫(xiě)
;數列格式:S,SLA+W,A,Subaddr_H,A,subaddr_L,A,DATA1,A,DATA2,A,...,DATAn,A,P
;
MOV.b #CODE,SLA;SLAR/W=0:寫(xiě),A0=A1=A2=0
MOV #N,Num_byt ;發(fā)送字節數
MOV #Subaddr,I2C_R_Addr ;字節地址送入暫存單元
CALL #I2C_WR_Addr ;發(fā)送字節地址
CALL #WR_Nbyte
后記:
1、如果使用MSP430中別的I/O端口,只需要在模擬時(shí)序子程序中改動(dòng)相應的積存器即可。本例中時(shí)鐘線(xiàn)使用TP口,是因為它為輸出口,在程序中可以節省指令。
對于24系列的其他芯片,由于容量不同,請特別注意其字節地址是1個(gè)字節還是2個(gè)字節。本例的24LC65字節地址就是2個(gè)字節的。
2、MSP430系列的單片機本人是初學(xué)使用,程序雖經(jīng)初步調試通過(guò),輕易拋出,主意在為引玉之磚,作為學(xué)習的一點(diǎn)體會(huì )。缺點(diǎn)和錯誤在所難免,望各位不吝指教。
評論