I2C主机程序
0赞
发表于 1/11/2012 5:57:40 PM
阅读(3641)
#includevoid delay(int); void IRQ_Handler() __irq; #define count 0x4; // Number of bytes to be recieved - 1 int i = 0, dat[5]; // Size of dat should be (count + 1) int main() { GP1CON = 0x22; // I2C on P1.0 and P1.1 I2C0CFG = 0x82; // Master Enable & Enable Generation of Master Clock // I2C-Master setup I2C0DIV = 0xCFCF; // 0x3232 = 400kHz // 0xCFCF = 100kHz IRQEN = 0x400; // I2C0 Master Interupt // Transmit I2C0ADR = 0xA0; // set i2c address (LSB = 0, Master Write) I2C0MTX = 0x55; // send i2c byte address delay(4000); // Recieve i = 0; I2C0CNT = count; // Number of bytes to be read from slave I2C0ADR = 0xA1; // set i2c address (LSB = 1, Master Read) while (1) { }; return 0; } void delay (int length) { while (length >0) length--; } void IRQ_Handler() __irq { // Transmit if(((I2C0MSTA & 0x4) == 0x4) && (i < 8)) // Master Transmit IRQ { i++; // Transmits numbers 1-8 I2C0MTX = i; } // Recieve if((I2C0MSTA & 0x8) == 0x8) // Master Recieve IRQ { dat[i] = I2C0MRX; i++; } }
