Está en la página 1de 1

////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////
//
UCB0I2CSA = 0x41;
// direccion de esclavo
//
UCB0CTL1 POSI (UCTR);
// modo de transmision
OI2CB0.slaveDevice(0x41, WRITE);
//
UCB0CTL1 POSI (UCTXSTT);
// condicion de
START
OI2CB0.condition(START_I2C);
while(!(UCB0IFG & UCTXIFG));
// esperando que
se ponga a uno para escribir dato en buffer
UCB0TXBUF = 0xFE;
// escribiendo dato en buffer vacio
while(UCB0CTL1 & UCTXSTT);
// esper
ando ACK de START
while(UCB0IFG & UCNACKIFG);
while(!(UCB0IFG & UCTXIFG));
// esperando que
se envie el dato
while(UCB0IFG & UCNACKIFG);
// esper
ando que sea cero para confirmar el ACK del esclavo del dato
__no_operation();
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//
// modo recepsion
//
START

UCB0CTL1 NEGA (UCTR);


OI2CB0.slaveDevice(0x41, READ);
UCB0CTL1 POSI (UCTXSTT);
OI2CB0.condition(RESTART_I2C);
while(UCB0CTL1 & UCTXSTT);

// condicion de
// esper

ando ACK de START


while(UCB0IFG & UCNACKIFG);
__no_operation();
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
while(!(UCB0IFG & UCRXIFG));
// esperando a q
ue el dato llegue del SLAVE
prueba1 = (unsigned int)(UCB0RXBUF) << 8;
OI2CB0.condition(STOP_I2C);
//
UCB0CTL1 POSI (UCTXSTP);
while(!(UCB0IFG & UCRXIFG));
// esperando el
siguiente dato
prueba1 |= (UCB0RXBUF);
__no_operation();
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////

También podría gustarte