⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.c

📁 该工程是自己在KEIL环境下写的关于C8051F020的Bootloader,调试成功
💻 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 + -