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)); 
}