www.pudn.com > flash.rar > flash.c


 
 
 
unsigned long int Page=0; 
//********************************************************************** 
// @Function void read_FSR_Busy(void) 
//---------------------------------------------------------------------- 
// @Description This function read FSR Register 
//---------------------------------------------------------------------- 
// @Returnvalue none 
//********************************************************************** 
void Read_FSR_Busy(void) 
{ 
	unsigned int far *Flash_Register = (unsigned int far *) 0xFFF000; 
	unsigned int Register; 
	Register = *Flash_Register; 
	while(Register & 0x0001) 
		{ 
		Register = *Flash_Register; 
		} 
} 
 
//********************************************************************** 
// @Function int read_sequence_error(void) 
//---------------------------------------------------------------------- 
// @Description This function detects sequence errors 
//---------------------------------------------------------------------- 
// @Returnvalue Error yes/no 
//********************************************************************** 
int Read_sequence_error(void) 
{ 
	unsigned int far *Flash_Register = (unsigned int far *) 0xFFF000; 
	unsigned int Register; 
	Register = *Flash_Register; 
	if(Register & 0x0040) 
		{ 
		return(FALSE); 
		} 
	else 
		return(OK); 
} 
 
 
//********************************************************************** 
// @Function int Erase_sector (unsigned long int sector) 
//---------------------------------------------------------------------- 
// @Description This function erases one sector 
//---------------------------------------------------------------------- 
// @Parameter Sector start address 
//---------------------------------------------------------------------- 
// @Returnvalue Success 
//---------------------------------------------------------------------- 
// @Parameters any constant or register value 
//********************************************************************** 
int Erase_sector (unsigned long int sector) 
{ 
	unsigned int far *Flash_Command_1 = (unsigned int far *) 0x0c000AA; 
	unsigned int far *Flash_Command_2 = (unsigned int far *) 0x0c00054; 
	unsigned int far *Flash_Command_3 = (unsigned int far *) sector; 
	//command sequence 
	*Flash_Command_1 = 0x0080; 
	*Flash_Command_2 = 0x00AA; 
	*Flash_Command_3 = 0x0033; 
	Read_FSR_Busy(); 
	return (Read_sequence_error()); 
}