QUOTE (mib383 @ Jun 18 2012, 11:58)

Между какими строками мне его вставить, чтобы отмести эту проблему
Заставили меня глянуть в описание процессора. NACK он формирует сам после получения UCB1CTL1 |= UCTXSTP.
Но и вы прочитайте описание:
QUOTE
Setting the UCTXSTP bit will generate a STOP condition. After setting
UCTXSTP, a NACK followed by a STOP condition is generated after reception
of the data from the slave, or immediately if the USCI module is currently
waiting for UCBxRXBUF to be read.
CODE
If UCBxRXBUF is not read the master holds the bus during reception of the last
data bit and until the UCBxRXBUF is read.
QUOTE
When performing multiple consecutive I2C master transactions without the
repeated start feature, the current transaction must be completed before the
next one is initiated. This can be done by ensuring that the transmit stop
condition flag UCTXSTP is cleared before the next I2C transaction is initiated
with setting UCTXSTT = 1. Otherwise, the current transaction might be
affected.
Значит ваш код должен выглядеть примерно так:
CODE
while(!(UC1IFG & UCB1RXIFG));//wait 4 rx interrupt
UCB1CTL1 |= UCTXSTP; //init stop condition
temp.b[3] = UCB1RXBUF;//read byte 3
while( UCB1CTL1 & UCTXSTP); //wait until STOP processed
И в процессе передачи дергать UCB1CTL1 |= UCTXNACK; вам не нужно - подтверждения выдает ваша память, вы их слушаете.