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

📄 flash.c

📁 对am29f040的flash的操作
💻 C
字号:
#include "stdio.h"
#include "reg51.h"
#define _29F040_h
 
#define FCD_reset 0xf0
#define FCD_erase_suspand 0xb0
#define FCD_erase_resume  0x30
 
#define FC_address555 0x555
#define FC_address2AA 0x2aa
#define size_29f040 0x80000
#define flash_map_begin 0x4000
#define flash_map_end   0x5fff  //8K
#define flash_page   IO_EX4
//--------------------------------------
void F29040_reset()
{
XBYTE[flash_map_begin+0x30]=FCD_reset;
}
//--------------------------------------
//给出一个地址,自动送出页面地址,且返回页内偏移地址
unsigned int F29040_calc_address(long address) 
{
 unsigned long segment;
 unsigned int ret; 
 unsigned char page;
 segment=address>>11;
 segment=address/2048;
 page=segment;
 XBYTE[flash_page]=page; //写页面地址
 ret=address;
 ret&=0x07ff;
 ret|=0x4000;
 return(ret);
}
//--------------------------------------
//向flash写入一个字节,写入之前请调用F29040_reset,返回0:成功,1失败
unsigned char F29040_write_a_byte(unsigned long address,unsigned char byte) 
{
 unsigned int offset; 
 unsigned char b1,b2;
 unsigned char i=0; 
 bit ok=0;
 F29040_reset();
 offset=F29040_calc_address(FC_address555);
 XBYTE[offset]=0xaa;
 offset=F29040_calc_address(FC_address2AA);
 XBYTE[offset]=0x55;
 offset=F29040_calc_address(FC_address555);
 XBYTE[offset]=0xa0;
 offset=F29040_calc_address(address);
 XBYTE[offset]=byte;
 do
 {
  b1=XBYTE[offset]; //读flash数据总线
  b1&=B1000_0000;
  b2=byte & B1000_0000;
  if(b1==b2) 
   return(0); //成功
  b1=XBYTE[offset];
  b1&=B0010_0000;
  //MACRO_CALL_REFURBISH_WATCHDOG
 }while(b1==0); //写字节周期完成
 b1=XBYTE[offset]; //读flash数据总线
 b1&=B1000_0000;
 b2=byte & B1000_0000;
 if(b1==b2) 
  return(0); //成功  
 else
  return(1); //失败
}
//--------------------------------------
//向flash读一个字节,写入之前请调用F29040_reset
unsigned char F29040_read_a_byte(long address) 
{
 unsigned int offset; 
 unsigned char ret;
 F29040_reset();
 offset=F29040_calc_address(address);
 ret=XBYTE[offset];
 return(ret);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -