Вижу PSCTL = 0x02; но вроде используют PSCTL |= 0x03; Поставь TCP-чего-то-там от Silabs и посмотри C:\SiLabs\MCU\Examples\C8051F34x\Ethernet\CP2201EK_SOURCE\F34x_Ethernet_Bootloader\F340_FlashPrimitives.c
void FLASH_PageErase (FLADDR addr)
{
bit EA_SAVE = EA; // preserve EA
char xdata * data pwrite; // FLASH write pointer
EA = 0; // disable interrupts
// change clock speed to slow, then restore later
VDM0CN = 0x80; // enable VDD monitor
RSTSRC = 0x02; // enable VDD monitor as a reset source
pwrite = (char xdata *) addr;
FLKEY = 0xA5; // Key Sequence 1
FLKEY = 0xF1; // Key Sequence 2
PSCTL |= 0x03; // PSWE = 1; PSEE = 1
VDM0CN = 0x80; // enable VDD monitor
RSTSRC = 0x02; // enable VDD monitor as a reset source
*pwrite = 0; // initiate page erase
PSCTL &= ~0x03; // PSWE = 0; PSEE = 0
EA = EA_SAVE; // restore interrupts
}