I2C从机程序
0赞
发表于 1/11/2012 5:58:42 PM
阅读(4083)
#includevoid IRQ_Handler() __irq; int i = 0, dat[9]; int main() { // I2C on P1.0 and P1.1 GP1CON = 0x22; IRQEN = 0x200; // I2C0 Slave Interupt I2C0CFG = 0x01; // Slave Enable I2C0ID0 = 0xA0; // Slave ID I2C0STX = 0x77; while (1) { }; return 0; } void IRQ_Handler() __irq { // Slave Recieve if ((I2C0SSTA & 0x08)==0x08) // Slave Recieve IRQ { dat[i] = I2C0SRX; i++; } // Slave Transmit if ((I2C0SSTA & 0x04)==0x04) // Slave Transmit IRQ { if(i > 4) // Resetting value of i if it has been incremented by RX { i = 0; } i++; switch (i) { case 1: I2C0STX = 0x55; break; case 2: I2C0STX = 0x33; break; case 3: I2C0STX = 0xAA; break; case 4: I2C0STX = 0x11; break; }; } }
