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