?? flash.c
字號:
#include "config.h"
#include "isp.h"
/****************************** FLASH寫入函數 ***************************
* 函數原型:void flash_wr(Uchar xdata *addr, Uchar val)
* 功 能:向映射到外部數據存儲器空間的FLASH地址單元addr寫入一個字節
* 的數據val。
*************************************************************************/
void flash_wr(Uchar xdata *addr, Uchar val) {
*addr = val;
}
/****************************** FLASH讀取函數 ***************************
* 函數原型: Uchar flash_rd(Uchar xdata *addr)
* 功 能:從映射到外部數據存儲器空間的FLASH地址單元addr讀取一個字節
* 的數據并返回主調函數。
*************************************************************************/
Uchar flash_rd(Uchar xdata *addr) {
return *addr;
}
/****************************** FLASH命令函數 ***************************
* 函數原型: void flash_cmd(Uchar cmd)
* 功 能:執行FLASH命令序列cmd。
*************************************************************************/
void flash_cmd(Uchar cmd) {
flash_wr(0x5555, 0xAA);
flash_wr(0x2AAA, 0x55);
flash_wr(0x5555, cmd);
}
/****************************** FLASH擦除函數 ***************************
* 函數原型: void flash_erase(void)
* 功 能:擦除整個FLASH存儲器。
*************************************************************************/
void flash_erase(void) {
Uchar pol_n, pol_n_1;
flash_cmd(0x80);
flash_cmd(0x10);
pol_n_1 = flash_rd(0x5555);
pol_n = flash_rd(0x5555);
while ((pol_n ^ pol_n_1) == 0x40) {
pol_n_1 = pol_n;
pol_n = flash_rd(0x5555);
}
}
/****************************** FLASH編程函數 ***************************
* 函數原型: void flash_prog(Uint16 addr, Uchar value)
* 功 能:對指定的FLASH存儲器地址addr編程一個字節的數據value。
*************************************************************************/
void flash_prog(Uint16 addr, Uchar value) {
flash_cmd(0xA0);
flash_wr(addr, value);
while (flash_rd(addr) != value);
}
/****************************** FLASH_ID函數 ***************************
* 函數原型: Uint16 flash_id()
* 功 能:讀取雙字節FLASH存儲器生產廠商和器件ID,高字節為廠商ID,
* 低字節為器件ID。
*************************************************************************/
Uint16 flash_id() {
Uint16 flash_id=0;
flash_cmd(0x90);
flash_id = flash_rd(0x0000) << 8 | flash_rd(0x0001);
flash_cmd(0xF0);
return flash_id;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -