资源简介
51读写W25X16程序,已应用于实际的产品开发中,可直接拿来使用
代码片段和文件信息
//€$€$€$€$€$€$€$€$€$€$€$€$€$€€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$$
#include //包含位移和_nop_();
#include “STC12C5A60S2.H“
//***************************************************************
void WriteDisable (void); //写禁止
void WriteEnable (void); //写允许
unsigned char W25X_BUSY_OrNot (void); //判忙碌
void W25X_ChipErase(void); //片擦除
void W25X_BlockErase(unsigned long Addre24);
void W25X_SectorErase(unsigned long Addre24); //擦除资料图示的4KB空间
//读数据可以无限次,这里是由缓冲决定的大小
void W25X_Flash_Byte_Read (unsigned long Addre24unsigned char Quantity);//多字节读FLASH(1~256) -W25X32-000000-3FFF00(4M)-
void W25X_Flash_Byte_Write(unsigned long Addre24unsigned char Quantity); //往FLASH里写一个或多个字节(小于256字节)
unsigned char Read_OneByte(void); //从SPI收8位数
void Send_OneByte(unsigned char DATA8);
void InitSerial(void); //串行口初始化.通信速率9600bps 在22.1184MHz晶振频率
void Delay100ms(unsigned int _100ms); //100ms级延时
//进度: 发一个指令OK 写允许OK 读状态OK 读写一个字节OK
unsigned char xdata Send_DATA[256]; //要发送的数据
unsigned char xdata Recv_DATA[256]; //已接收的数据 如2个数,则为Recv_DATA[0] Recv_DATA[1]
unsigned char * Send_Pionter;
unsigned char * Recv_Pionter;
void main()
{
unsigned char BUSY; //判忙碌
unsigned long Addre24; //24位的Flash地址
unsigned char x=0;
unsigned char A;
unsigned char B;
unsigned char C;
unsigned long D;
//************************
A=0; B=0; C=0; D=0;
Delay100ms(2);
if(x)
{
WriteDisable (); //写禁止
W25X_ChipErase(); //片擦除
W25X_SectorErase(Addre24); //4K擦除
W25X_BlockErase (Addre24); //64K块擦除
BUSY=W25X_BUSY_OrNot(); //判忙碌
W25X_Flash_Byte_Read (Addre2421); //读FLASH
W25X_Flash_Byte_Write(Addre2421); //写入
}
//*************************
P1M0=0xB0;
InitSerial(); //串行口初始化.通信速率9600bps 在22.1184MHz晶振频率
Send_Pionter = &Send_DATA[0]; //发送指针取地址
Recv_Pionter = &Recv_DATA[0]; //接收指针取地址
for (D=0;D<256;D++)
{
Send_DATA[D]=D;
Recv_DATA[D]=0;
}
W25X_SectorErase(Addre24); Delay100ms (4); //4K擦除
//**************************
W25X_Flash_Byte_Write(0x000000255); //写N个数
W25X_Flash_Byte_Read (0x000000255); //读X个数
while(1)
{
SBUF =A;
while(TI==0);
TI=0;
SBUF =Recv_DATA[A] ;
while(TI==0);
TI=0;
Delay100ms(1);
A++;
}
} // End of Main
//*******************END of Main****************************
// ----W25X系统Flash读写---SUNYA注----
//sbit CS = P1^4; //选通
//sbit DIO = P1^5; //单片机输出
//sbit DO = P1^6; //FLASH输出
//sbit SCLK = P1^7; //时钟
//读写SPI口模拟模式3时钟平时为高电平
//#define W25X_ReadStatus 0x05 //读状态寄存器
//#define W25X_WriteStatus 0x01 //写状态寄存器
//#define W25X_ReadDATA8 0x03 //普读_数据
//#define W25X_FastRead 0x0B //快读_数据
//#define W25X_DualOutput 0x3B //快读_双输出
//#define W25X_Write 0x02 //写_数据_0~255个字节
//#define W25X_S_Erase
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6376 2005-03-22 15:22 W25X32_CON\STARTUP.A51
文件 14061 2010-08-20 07:01 W25X32_CON\STARTUP.LST
文件 749 2010-08-20 07:01 W25X32_CON\STARTUP.OBJ
文件 19204 2009-02-21 16:34 W25X32_CON\STC12C5A60S2.H
文件 9987 2009-02-22 13:17 W25X32_CON\W25X32.c
文件 17720 2010-08-20 07:01 W25X32_CON\W25X32.LST
文件 18042 2010-08-20 07:01 W25X32_CON\W25X32.OBJ
文件 2845 2010-08-20 07:01 W25X32_CON\W25X32_CONT.hex
文件 54 2010-08-20 07:01 W25X32_CON\W25X32_CONT.lnp
文件 20301 2010-08-20 07:01 W25X32_CON\W25X32_CONT.M51
文件 15261 2010-08-20 07:01 W25X32_CON\W25X32_CONT.mpw
文件 2046 2010-08-20 07:01 W25X32_CON\W25X32_CONT.mpw.opt.bak
文件 202 2010-08-20 15:03 W25X32_CON\W25X32_CONT.mpw.plg
文件 2195 2010-08-20 07:01 W25X32_CON\W25X32_CONT.mpw.Uv2.bak
文件 56149 2010-08-20 15:03 W25X32_CON\W25X32_CONT.mpw.uvopt
文件 13418 2010-08-20 08:15 W25X32_CON\W25X32_CONT.mpw.uvproj
文件 56149 2010-08-20 08:15 W25X32_CON\W25X32_CONT.mpw_uvopt.bak
文件 2053 2009-02-22 13:48 W25X32_CON\W25X32_CONT_mpw_Opt.Bak
文件 2205 2009-02-20 15:38 W25X32_CON\W25X32_CONT_mpw_Uv2.Bak
目录 0 2010-10-08 18:01 W25X32_CON
----------- --------- ---------- ----- ----
259017 20
评论
共有 条评论