📄 i2c.asm
字号:
;**************************************************
;Subroutine: SGT002 I2C通讯子程序 *
;Variable: [TEMP0]-R_ADDR, [TEMP1]-R_CON/R_DATA *
;Port: P10-INT, P11-DATA, P12-CLK *
;**************************************************
I2C_SGT002:
I2C_TRAN_SGT002:
MOV A,00000001B ;
CTLW P1C
BST P1,2 ;CLK
BST P1,1 ;D_DATA
NOP
BCLR P1,1 ;D_DATA
BCLR P1,2 ;CLK
SGT002_SEND_0:
SBZ [TEMP0],0
JMP SGT002_SEND_HIGH_0
SGT002_SEND_LOW_0:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_1
SGT002_SEND_HIGH_0:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_1:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP0],1
JMP SGT002_SEND_HIGH_1
SGT002_SEND_LOW_1:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_2
SGT002_SEND_HIGH_1:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_2:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP0],2
JMP SGT002_SEND_HIGH_2
SGT002_SEND_LOW_2:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_3
SGT002_SEND_HIGH_2:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_3:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],0
JMP SGT002_SEND_HIGH_3
SGT002_SEND_LOW_3:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_4
SGT002_SEND_HIGH_3:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_4:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],1
JMP SGT002_SEND_HIGH_4
SGT002_SEND_LOW_4:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_5
SGT002_SEND_HIGH_4:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_5:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],2
JMP SGT002_SEND_HIGH_5
SGT002_SEND_LOW_5:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_6
SGT002_SEND_HIGH_5:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_6:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],3
JMP SGT002_SEND_HIGH_6
SGT002_SEND_LOW_6:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_7
SGT002_SEND_HIGH_6:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_7:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],4
JMP SGT002_SEND_HIGH_7
SGT002_SEND_LOW_7:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_8
SGT002_SEND_HIGH_7:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_8:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],5
JMP SGT002_SEND_HIGH_8
SGT002_SEND_LOW_8:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_9
SGT002_SEND_HIGH_8:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_9:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],6
JMP SGT002_SEND_HIGH_9
SGT002_SEND_LOW_9:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_A
SGT002_SEND_HIGH_9:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_A:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP1],7
JMP SGT002_SEND_HIGH_A
SGT002_SEND_LOW_A:
BCLR P1,1 ;D_DATA
JMP SGT002_SEND_B
SGT002_SEND_HIGH_A:
BST P1,1 ;D_DATA
NOP
SGT002_SEND_B:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SGT002_TRAN_END:
MOV A,00000110B
BST P1,2 ;SET CLK
BST P1,1 ;SET D_DATA
RET
;****************************************
;RECEIVING
;****************************************
I2C_REC_SGT002:
MOV A,00000001B ;
CTLW P1C
BST P1,2 ;CLK
BST P1,1 ;D_DATA
NOP
BCLR P1,1 ;D_DATA
BCLR P1,2 ;CLK
SGT002_RECING_0:
SBZ [TEMP0],0
JMP SGT002_REC_HIGH_0
SGT002_REC_LOW_0:
BCLR P1,1 ;D_DATA
JMP SGT002_REC_1
SGT002_REC_HIGH_0:
BST P1,1 ;D_DATA
NOP
SGT002_REC_1:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP0],1
JMP SGT002_REC_HIGH_1
SGT002_REC_LOW_1:
BCLR P1,1 ;D_DATA
JMP SGT002_REC_2
SGT002_REC_HIGH_1:
BST P1,1 ;D_DATA
NOP
SGT002_REC_2:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SBZ [TEMP0],2
JMP SGT002_REC_HIGH_2
SGT002_REC_LOW_2:
BCLR P1,1 ;D_DATA
JMP SGT002_REC_3
SGT002_REC_HIGH_2:
BST P1,1 ;D_DATA
NOP
SGT002_REC_3:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
SGT002_I2C_RECING:
MOV A,00000011B ; SET D_DATA AS INPUT
CTLW P1C
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
NOP
BST [TEMP1],0
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],0
SGT002_REC_4:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
BST [TEMP1],1
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],1
SGT002_REC_5:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
BST [TEMP1],2
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],2
SGT002_REC_6:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
BST [TEMP1],3
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],3
SGT002_REC_7:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
BST [TEMP1],4
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],4
SGT002_REC_8:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
BST [TEMP1],5
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],5
SGT002_REC_9:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
BST [TEMP1],6
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],6
SGT002_REC_A:
BST P1,2 ;CLK
NOP
BCLR P1,2 ;CLK
NOP
BST [TEMP1],7
SBNZ P1,1 ;D_DATA
BCLR [TEMP1],7
SGT002_REC_END:
MOV A,00000001B
CTLW P1C
BST P1,2
BST P1,1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -