📄 flash.c
字号:
#include "includes.h"
// This routine erases the first 8 pages of FLASH (0x0000 to 0x0FFF).
UINT8 code_erased = FALSE;
UINT8 f_valid = FALSE;
void FlashErase(UINT8 Erase_Page)
{
char xdata* data pagePointer = 0;// a pointer to xdata located in data space
// points to the first FLASH page that
// will be erased
bit EA_state; // holds interrupt state
EA_state = EA; // save interrupt state
EA = 0; // disable interrupts
FLSCL |= 0x01; // enable FLASH write/erase
PSCTL = 0x03; // MOVX erases FLASH
// Erase the first 8 FLASH pages
pagePointer=Erase_Page*512;
*pagePointer = 0; // initiate the erase
PSCTL = 0x00; // MOVX writes target XRAM
FLSCL &= ~0x01; // disable FLASH write/erase
EA = EA_state; // restore interrupt state
f_valid = FALSE; // indicate that code is no longer valid
code_erased = TRUE; // indicate that FLASH has been erased
}
void FlashWrite(UINT8 *Write_Buf,UINT8 Write_Page)
{
char xdata* data pwrite;
UINT16 i;
EA = 0; // disable interrupts (precautionary)
FLSCL |= 0x01; // enable FLASH write/erase
PSCTL = 0x01; // MOVX writes FLASH
pwrite = Write_Page*512; // initialize the write pointer
// write the record into flash
for( i = 0; i < 512; i++)
{
*pwrite=Write_Buf[i];
pwrite++;
}
PSCTL = 0x00; // MOVX writes target XRAM
FLSCL &= ~0x01; // disable FLASH write/erase
}
UINT8 FlashRead(UINT16 Read_Address)
{
char code* data pread;
UINT8 ReadTemp;
pread = (char code*)Read_Address;
ReadTemp=*pread;
return(ReadTemp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -