www.pudn.com > IICtest.rar > eint.c
/***************************************** NAME: eint.c DESC: External interrupt test HISTORY: 2001.04.03:purnnamu: draft ver 0.0 *****************************************/ #include#include "def.h" #include "option.h" #include "2410addr.h" #include "2410lib.h" #include "2410slib.h" void delay(U32 time) { U32 i; for(;time>0;time--) for(i=0;i<39;i++); } void iicconfig(void) { rGPEUP = 0xc000; //Pull-up disable rGPECON = 0xa0000000; //GPE15:IICSDA , GPE14:IICSCL rIICCON = 0xe0; rIICSTAT = 0x10; rEINTMASK = 0xffffff; rINTMSK = BIT_ALLMSK; Uart_Printf("Config port complete.\n"); Uart_Printf("complete.\n"); } void iicwrite(U8 addr,U8 data) { rIICSTAT |= 0xc0; rIICDS = 0xa0; rIICSTAT = 0xf0; while(rIICCON != 0xf0); rIICDS = addr; rIICCON = 0xe0; while(rIICCON != 0xf0); rIICDS = data; rIICCON = 0xe0; while(rIICCON != 0xf0); rIICSTAT = 0xd0; rIICCON = 0xe0; Delay(1); delay(1000); } U8 iicread(U8 addr) { U8 i; rIICSTAT |= 0xc0; rIICDS = 0xa0; rIICCON = 0xe0; rIICSTAT = 0xf0; while(rIICCON != 0xf0); rIICDS = addr; rIICCON = 0xe0; while(rIICCON != 0xf0); rIICDS = 0xa1; rIICSTAT = 0xb0; rIICCON = 0xe0; while(rIICCON != 0xf0); rIICCON = 0x60; while(rIICCON != 0x70); i = rIICDS; rIICSTAT = 0x90; rIICCON = 0x60; Delay(1); return i; } void iictest(void) { unsigned int i = 0; iicconfig(); Uart_Printf("Write AT24C04....\n"); // for(i=0;i<256;i++) // iicwrite(i,0xaa); Uart_Printf("\n\nRead AT24C04....\n"); for(i=0;i<256;i++) Uart_Printf("%x ",iicread(i)); }