gc80c521a CORERIVER Semiconductor, gc80c521a Datasheet - Page 68

no-image

gc80c521a

Manufacturer Part Number
gc80c521a
Description
Flash / Isp / Iap 8-bit Turbo Microcontrollers
Manufacturer
CORERIVER Semiconductor
Datasheet
ORG 000h
ORG 06Bh
ORG 0100h
START:
I2C_RX:
LJMP
LJMP
ANL
ORL
ORL
MOV
ANL
ORL
ORL
SETB
SETB
JNB
JNB
SJMP
6.12. I2C : Slave Example
I2C Slave example code using interrupt
I2CACK
I2CSCL
I2CST
I2CIF
I2COF
I2CRW
I2CDA
I2CP
I2CS
I2CBF
I2CCON
I2CCFG
I2CSLA
I2CDAT
START
I2CS_ISR
I2CCFG,
I2CCFG,
I2CCFG,
I2CSLA,
I2CCON,
I2CCON,
I2CCON,
EIE.3
IE.7
I2CS,
I2CP,
I2C_RX
EQU 0EDH
EQU 0EDH
EQU 0E8H
EQU 0EFH
EQU 0EEH
EQU 0ECH
EQU 0EBH
EQU 0EAH
EQU 0E9H
EQU 0E8H
EQU 0E9H
EQU 0EAH
EQU 0EBH
EQU 0ECH
#0F7h
#04h
#02h
#80h
#0BFh
#02h
#01h
.
.
; I2CST SFR
; I2CST.7 Flag
; I2CST.6 Flag
; I2CST.5 Flag
; I2CST.4 Flag
; I2CST.3 Flag
; I2CST.2 Flag
; I2CST.1 Flag
; I2CST.0 Flag
; JMP I2C interrupt routine
; slave mode
; 10bit address mode
; Start/Stop interrupt enable
; 1
; 2
; I2C IO enable
; I2C enable
; I2C interrupt enable
; All interrupt enable
st
nd
Slave address
Slave address not compare
I2CS_ISR:
WAIT_BYTE:
S_RX:
S_TX:
END_TX:
SLA1_RX:
SLA2_RX:
END_ISR:
MOV
CLR
CLR
JB
JNB
CLR
MOV
JB
JB
MOV
INC
SJMP
JB
MOV
ORL
INC
SJMP
JB
JB
SJMP
MOV
SJMP
CLR
SETB
MOV
RETI
OSCICN,
EIE.3
I2CIF
I2CIF,
I2CIF
R1,
@R1,
SLA2BUF
WAIT_BYTE
I2CACK,
I2CDAT,
I2CCON,
SLA2BUF
WAIT_LOOP
I2CBF,
WAIT_LOOP
SLA2PTR,
WAIT_LOOP
I2CIF
EIE.5
OSCICN,
I2CP,
I2CDA,
I2CRW,
I2CRW,
#04h
END_ISR
WAIT_BYTE
SLA2BUF
SLA1_RX
S_TX
I2CDAT
END_TX
@R1
#20h
SLA2_RX
S_TX
I2CDTA
#0Fh
MiDAS1.0B Family
;---- I2C Slave interrupt routine ----
; clock speed-up
; I2C interrupt disable
; clear interrupt flag (START bit)
;------- Wait Event -------
; check STOP bit
; if I2CIF is set, go next process
; clear interrupt flag
; save 2
; check address or data field
; check RX or TX operation
;------- RX operation -------
; save I2CDAT(RX data) to R1
; increment 2
; repeat loop
;------- TX operation -------
; if no ack, finish TX
; TX data
; release SCL hold from “low”
; increment 2
; repeat loop
;------- SLA1 operation -------
; if I2CBF is set, RX 2
; if I2CRW is set, TX data
; repeat loop
;------- SLA2 operation -------
; save 2
; repeat loop
;------- end of I2C Slave -------
; clear interrupt flag (STOP bit)
; enable I2C interrupt
; restore clock speed
nd
nd
SLA to R1
SLA to SLA2BUF
nd
nd
SLA for burst
SLA for burst
nd
SLA
[68]
[68]

Related parts for gc80c521a