
MAXQ612/MAXQ622 User’s Guide
Maxim Integrated 11-15
11.5.4 I
2
C Example: Slave Mode, Transmit
I
2
C configured as slave with address 1Ah:
; Setup for Slave Mode Receive
move I2CSLA, #01ah ; I2C Slave Address = 01ah
move I2CCN, #0001h ; I2CEN = 1, I2CMST = 0, I2CMODE = 0, I2CSTART = 0
call wait_start ; Polling routine to wait for I2CSTART to be set, indicating
; a received START
;; Check for address match
move ACC, I2CST
and #0020h ; Check for Address Match flag set
cmp #0020h
jump ne, no_match ; Not an address match
move ACC, I2CCN ; Check transfer mode is set
and #004h
cmp #004h
jump ne, not_sl_xmit ; If transfer mode is low, not a slave transmit, else:
move I2CBUF, #0aah ; Data byte to be transmitted
call wait_xmit ; Poll for transmit done
;; Verify ACK received from master
move ACC, I2CST
and #080h
cmp #000h
jump ne, FAIL ; If NACK bit set, handle retransmission, else continue
Comentários a estes Manuais