?? s3c9454_i2c.txt
字號:
;===============================================================================
;子程序:I2C開始
;===============================================================================
BUS_START: OR SCL,#SCL_BIT
NOP
NOP
OR SDA,#SDA_BIT
NOP
NOP
NOP
AND SDA,#~SDA_BIT
NOP
NOP
AND SCL,#~SCL_BIT
NOP
RET
;===============================================================================
;子程序:I2C停止
;===============================================================================
BUS_STOP: AND SDA,#~SDA_BIT
NOP
NOP
OR SCL,#SCL_BIT
NOP
NOP
NOP
OR SDA,#SDA_BIT
NOP
RET
;===============================================================================
;子程序:發送一位數據時SCL的狀態
;===============================================================================
BUS_CLK: NOP
OR SCL,#SCL_BIT
NOP
NOP
NOP
AND SCL,#~SCL_BIT
NOP
RET
;===============================================================================
;子程序:主機應答
;===============================================================================
BAKASK: AND SDA,#~SDA_BIT
NOP
NOP
OR SCL,#SCL_BIT
NOP
NOP
NOP
AND SCL,#~SCL_BIT
NOP
NOP
OR SDA,#SDA_BIT
NOP
RET
;===============================================================================
;子程序:從機應答
;===============================================================================
ASK: AND P2CONH,#11110111B
LD R2,#100
OR SCL,#SCL_BIT
ASK1: DEC R2
CP R2,#0
JR EQ,ASK2
TM SDA,#SDA_BIT
JR NZ,ASK1
OR I2C_FLAG,#I2C_FLAG_BIT
OR P2CONH,#00001000B
AND SCL,#~SCL_BIT
RET
ASK2: AND I2C_FLAG,#~I2C_FLAG_BIT
OR P2CONH,#00001000B
RET
;===============================================================================
;子程序:傳輸8位數據
;===============================================================================
WRITE_8BIT: LD R2,#0
RCF
WRITE0: RLC R0
JR C,WRITE1
AND SDA,#~SDA_BIT
JR WRITE2
WRITE1: OR SDA,#SDA_BIT
WRITE2: CALL BUS_CLK
INC R2
CP R2,#8
JR ULT,WRITE0
RET
;===============================================================================
;子程序:讀8位數據
;===============================================================================
READ_8BIT: LD R2,#0
AND P2CONH,#11110111B
NOP
READ0:
NOP
OR SCL,#SCL_BIT
NOP
TM SDA,#SDA_BIT
JR Z,READ1
SCF
RLC R0
JR READ2
READ1: RCF
RLC R0
READ2: AND SCL,#~SCL_BIT
INC R2
CP R2,#8
JR ULT,READ0
NOP
NOP
OR P2CONH,#00001000B ;PEESDA
OR SDA,#SDA_BIT
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -