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

📄 flash.h

📁 c8051f120为主控芯片,P5口的8位IO口完成的16位按键
💻 H
字号:
/************************************************************************************
*  Copyright (c) 2004,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* 文件名称: Flash.H
* 文件标识: none
* 适用器件: SST39VF040
* 
* 摘 要: 本文件是外部Flash存储器SST39VF040的操作函数库的头文件;
* 
* 当前版本: 1.1
* 作者:刘大伟
* 完成日期:2007年1月24日
*
* 历史版本:1.0
* 作 者:卢 阳
* 完成日期:2004年11月14日
*
* 历史版本:0.9 
* 原作者 : 李林利
* 完成日期:2004年1月1日
*************************************************************************************/
#ifndef __Flash_h__
#define __Flash_h__

#define BANK_ADDRHN 		P4 		//外部存储器地址高位占用P4口
#define CMD0_Addr			XBYTE[0XD555]
#define CMD1_Addr			XBYTE[0XEAAA]

#define BANK_ADDR_512		0X03	//39VF512高位地址占用I/O口低2位	
#define BANK_ADDR_010		0X07	//39VF010高位地址占用I/O口低3位
#define BANK_ADDR_020		0X0F	//39VF020高位地址占用I/O口低4位
#define BANK_ADDR_040		0X1F	//39VF040高位地址占用I/O口低5位

#define Chip_512			2		//39VF512在系统中由P4口提供地址线的位数
#define Chip_010			3		//39VF010在系统中由P4口提供地址线的位数
#define Chip_020			4		//39VF020在系统中由P4口提供地址线的位数
#define Chip_040			5		//39VF040在系统中由P4口提供地址线的位数

#define SST39VF512_SECTORS	16 		//39VF512扇区数	
#define SST39VF010_SECTORS	32 		//39VF010扇区数
#define SST39VF020_SECTORS	64		//39VF020扇区数 
#define SST39VF040_SECTORS	128		//39VF040扇区数

/*****在此修改选用器件,将选用器件后的值改为"1",其他不用的器件改为"0"*****/

#define SST39VF512	0
#define	SST39VF010	0	
#define	SST39VF020	0									
#define	SST39VF040	1				//系统使用39VF040

#if		SST39VF512
#define BANK_ADDR			BANK_ADDR_512
#define BANK_ADDRHN_CLR 	BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model			Chip_512					//选择系统选用的芯片
#define FLASH_SECTORS  		SST39VF512_SECTORS

#elif	SST39VF010
#define BANK_ADDR			BANK_ADDR_010
#define BANK_ADDRHN_CLR 	BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model			Chip_010					//选择系统选用的芯片
#define FLASH_SECTORS  		SST39VF010_SECTORS

#elif	SST39VF020
#define BANK_ADDR			BANK_ADDR_020
#define BANK_ADDRHN_CLR 	BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model			Chip_020					//选择系统选用的芯片
#define FLASH_SECTORS  		SST39VF020_SECTORS

#elif	SST39VF040
#define BANK_ADDR			BANK_ADDR_040
#define BANK_ADDRHN_CLR 	BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model			Chip_040					//选择系统选用的芯片
#define FLASH_SECTORS  		SST39VF040_SECTORS

#endif		

/*********************************函数外部引用声明***********************************/

/*************************************************************************************
* 函数名称:Flash_ChipErase;
*
* 函数功能描述:Flash芯片整片擦除程序;
*              
* 输入参数:none;
*
* 返回数据:none;
*
* 注意:    操作数据与顺序是针对39VF系列的固定操作,参考SST39VF512/010/020/040.PDF
*			系统选用39VF040,如有同系列型号变动,可修改头文件,无须改动此程序;
************************************************************************************/
void Flash_ChipErase (void);

/************************************************************************************
* 函数名称:Flash_SectorErase;
*
* 函数功能描述:Flash芯片扇区擦除程序;
*              
* 输入参数:unsigned char类型扇区区号;
*
* 返回数据:none;
*
* 注意:    参数有效位位数与选用器件有关,系统中选用39VF040.
*		    作数据与顺序是针对39VF系列的固定操作,参考SST39VF512/010/020/040.PDF
*			如有同系列型号变动,可修改头文件,无须改动此程序;
************************************************************************************/
void Flash_SectorErase (unsigned char sector);

/************************************************************************************
* 函数名称:Flash_ByteWR;
*
* 函数功能描述:Flash写入字节程序;
*              
* 输入参数:unsigned long类型地址,unsigned char类型数据;
*
* 返回数据:none;
*
* 注意:    系统选用39VF040,如有同系列型号变动,可修改头文件,无须改动此程序;
*************************************************************************************/
void Flash_ByteWR (unsigned long address, unsigned char dat);

/*************************************************************************************
* 函数名称:Flash_DataWR;
*
* 函数功能描述:Flash写入多数据程序;
*              
* 输入参数:unsigned long类型地址,unsigned char类型数据起始指针,unsigned char类型数据长度;
*
* 返回数据:none;
*
* 注意:    字符串长度不超过256字节;
*************************************************************************************/
void Flash_DataWR (unsigned long address, unsigned char *dat_sta, unsigned char count);

/*************************************************************************************
* 函数名称:Flash_ByteRD;
*
* 函数功能描述:Flash读取字节函数程序;
*              
* 输入参数:unsigned long类型地址;
*
* 返回数据:unsigned char类型读出数据;
*
* 注意:    系统选用39VF040,如有同系列型号变动,可修改头文件,无须改动此程序;
*************************************************************************************/
unsigned char Flash_ByteRD (unsigned long Address);

/*************************************************************************************
* 函数名称:Flash_DataRD;
*
* 函数功能描述:Flash多数据读取程序;
*              
* 输入参数:unsigned long类型地址,unsigned char类型数据存储起始地址指针,unsigned char类型数据长度;
*
* 返回数据:none;
*
* 注意:    注意所给地址范围,地址出错将返回不正确的数据;
**************************************************************************************/
void Flash_DataRD (unsigned long address, unsigned char *buf, unsigned char count);

/*************************************************************************************/
#endif

/*************************************************************************************/
// 文件结束
/*************************************************************************************/

⌨️ 快捷键说明

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