//———————–函数声明,变量界说——————————————————–
#include
#include
#include
#include
sbit FLASH_CLE=P1^0;
sbit FLASH_ALE=P1^1;
sbit FLASH_WE=P1^2;
sbit FLASH_WP=P1^3;
sbit FLASH_CE=P1^4;
sbit FLASH_RD=P1^5;
sbit FLASH_RB=P1^6;
void WriteCommand(unsigned char command);
void WriteAddress(
unsigned char H_ADR, //A16~A23 列地址
unsigned char M_ADR, //A8~A15
unsigned char L_ADR //A0~A7 行地址
);
void WRITEBYTE(unsigned char Wdata); //写一个数据到FLASH
unsigned char READBYTE(); //从FLSAH读一个数据
void REC_data_process(unsigned char Rdata); //接纳adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=fbb35db267215cd4&k=%CA%FD%BE%DD%B4%A6%C0%ED&k0=%CA%FD%BE%DD%B4%A6%C0%ED&kdi0=0&luki=4&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=d45c2167b25db3fb&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fmcu%2F2168%2Ehtml&urlid=0″ id=”2_nwl” mpid=”2″ target=”_blank”>数据处理,读一页时,每读一次处理一次
void READ_onepage1(); //连续读一页数据(528字节)
//————————————————————————————————–
// 函数称号: WriteCommand
// 进口参数: command指令字
// 函数功用: 写指令字,开端各种操作
//————————————————————————————————–
void WriteCommand(unsigned char command)
{
FLASH_ALE=0;
FLASH_CE=0;
FLASH_CLE=1;
FLASH_WE=0;
P0=command;
FLASH_WE=1;
FLASH_CLE=0;
FLASH_ALE=1;
}
//————————————————————————————————–
// 函数称号: WriteAddress
// 进口参数: H_ADR,M_ADR,L_ADR 队伍地址
// 函数功用: 写地址
//————————————————————————————————–
void WriteAddress(
unsigned char H_ADR, //A16~A23 列地址
unsigned char M_ADR, //A8~A15
unsigned char L_ADR //A0~A7 行地址
)
{
FLASH_WE=1;
FLASH_CE=0;
FLASH_CLE=0;
FLASH_ALE=1;
FLASH_WE=0;
P0=L_ADR;
FLASH_WE=1;
_nop_();
FLASH_WE=0;
P0=M_ADR;
FLASH_WE=1;
_nop_();
FLASH_WE=0;
P0=H_ADR;
FLASH_WE=1;
_nop_();
FLASH_ALE=0;
}
//————————————————————————————————–
// 函数称号: WRITEBYTE
// 进口参数: Wdata要写入 FLASH的数据
// 函数功用: 写一个数据到FLASH
//————————————————————————————————–
void WRITEBYTE(unsigned char Wdata) //写一个数据到FLASH
{
FLASH_WE=1;
FLASH_CLE=0;
FLASH_CE=0;
FLASH_ALE=0;
FLASH_WE=0;
_nop_();
P0=Wdata;
_nop_();
FLASH_WE=1;
}
//————————————————————————————————–
// 函数称号: READBYTE
// 出口参数: Rdata从FLASH读出的数据
// 函数功用: 从FLSAH读一个数据
//————————————————————————————————–
unsigned char READBYTE() //从FLSAH读一个数据
{
unsigned char Rdata;
FLASH_WE=1;
FLASH_CLE=0;
FLASH_ALE=0;
FLASH_CE=0;
FLASH_RD=0; //准备好读入
_nop_();
_nop_();
while(!FLASH_RB)//当读信号无效时,等候
{
}
Rdata=P0; //把P0口读出的值存入ACC寄存器
//刺进2个机器周期
_nop_();
_nop_();
FLASH_RD=1; //不再读入
return(Rdata);
}
unsigned char READ_Status()
{
unsigned char Status;
WriteCommand(0x70);
Status=READBYTE();
return(Status);
}
//————————————————————————————————–
// 函数称号: READ_onepage1
// 调用函数: WriteCommand
// WriteAddress
// REC_data_process();每接纳一个数据,处理
// 函数功用: 连续读一页数据(528字节)
//————————————————————————————————–
void READ_onepage1() //连续读一页数据(528字节)
{
unsigned char d=528;
unsigned char Rec_data;
WriteCommand(0x00); //写读的指令0x00或0x01
WriteAddress(0x00,0x00,0x00); //写读的地址
while(d>0)
{
Rec_data=READBYTE();
REC_data_process(Rec_data);
d–;
}
FLASH_CE=1;
}
//————————————————————————————————–
// 函数称号: REC_data_process
// 进口参数: Rdata按页读时,每次读回的数据
// 函数功用:接纳数据处理,读一页时,每读一次处理一次
//————————————————————————————————–
void REC_data_process(unsigned char Rdata) //接纳数据处理,读一页时,每读一次处理一次
{
}
8051单片机操作K9KF5608 FLASH存储器程序
———————–函数声明,变量定义——————————————————–includereg51
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/318434.html