Assembly code example - slave transmitter mode, Figure 55, Atmega163(l) – Rainbow Electronics ATmega163L User Manual
Page 85

ATmega163(L)
85
Figure 55. Formats and States in the Slave Transmitter Mode
Assembly Code Example - Slave Transmitter Mode
; Part specific include file and TWI include file must be included.
;
ldi
r16, (1< out TWCR, r16 ; Enable TWI in Slave Transmitter Mode ; wait14: in r16,TWCR ; Wait for TWINT flag set. This indicates that sbrs r16, TWINT ; SLA+R has been received, and ACK/NACK has rjmp wait14 ; been returned in r16, TWSR ; Check value of TWI Status Register. If status cpi r16, ST_SLA_ACK ; different from ST_SLA_ACK, go to ERROR brne ERROR ldi r16, 0x33 ; Load data (here, data = 0x33) into TWDR register out TWDR, r16 ldi r16, (1< out TWCR, r16 ; Clear TWINT bit in TWCR to start transmission of data. ; Setting TWEA indicates that ACK ; should be received when transfer finished ; wait15: in r16,TWCR ; Wait for TWINT flag set. This indicates that sbrs r16, TWINT ; data has been transmitted, and ACK/NACK has rjmp wait15 ; been received S SLA R A DATA A $A8 $B8 A $B0 Reception of the own Last data byte transmitted. Arbitration lost as master n From master to slave From slave to master Any number of data bytes This number (contained in TWSR) corresponds P or S DATA $C0 DATA A A $C8 P or S All 1's A
slave address and one or
more data bytes
Switched to not addressed
slave (TWEA = '0')
and addressed as slave
and their associated acknowledge bits
to a defined state of the 2-Wire Serial Bus