📄 flash_rw.c
字号:
#include "AT89C51SND1_REG.H"
#include "Flash_RW.H"
#include "MCU_UART.H"
void Flash_Reset()
{
K9F_FUN = COMMAND;
K9F5608 = 0xff;
K9F_FUN = INACTIVE;
}
void ReadFlashID(unsigned char *MID,unsigned char *DID)
{
K9F_FUN = COMMAND;
K9F5608 = 0x90;
K9F_FUN = ADDRESS;
K9F5608 = 0;
K9F_FUN = D_DATA;
*MID = K9F5608;
*DID = K9F5608;
K9F_FUN = INACTIVE;
}
void ReadPage(unsigned int BlockPage,unsigned char *PageBuf)
{
unsigned int data i;
K9F_FUN = COMMAND;
K9F5608 = 0x00;
K9F_FUN = ADDRESS;
K9F5608 = 0; //A0-A7
K9F5608 = BlockPage; //A9-A16
K9F5608 = BlockPage >> 8; //A17-A24
K9F_FUN = D_DATA;
i = 512;
while(!(K9F_FUN & RB));
while(i--)
*PageBuf++ = K9F5608;
K9F_FUN = INACTIVE;
}
void BlockErase(unsigned int BlockPage)
{
K9F_FUN = COMMAND;
K9F5608 = 0x60;
K9F_FUN = ADDRESS;
K9F5608 = BlockPage;
K9F5608 = BlockPage >> 8;
K9F_FUN = COMMAND;
K9F5608 = 0xd0;
K9F_FUN = D_DATA;
while(!(K9F_FUN & RB));
K9F_FUN = INACTIVE;
}
void WritePage(unsigned int BlockPage,unsigned char *PageBuf)
{
unsigned int data i;
K9F_FUN = COMMAND;
K9F5608 = 0x80;
K9F_FUN = ADDRESS;
K9F5608 = 0; //A0-A7
K9F5608 = BlockPage; //A9-A16
K9F5608 = BlockPage >> 8; //A17-A24
K9F_FUN = D_DATA;
i=512;
while(i--)
K9F5608 = *PageBuf++;
K9F_FUN = COMMAND;
K9F5608 = 0x10;
K9F_FUN = D_DATA;
while(!(K9F_FUN & RB));
K9F_FUN = INACTIVE;
}
void CopyBack(unsigned int S_BlockPage,unsigned int D_BlockPage)
{
K9F_FUN = COMMAND;
K9F5608 = 0x00;
K9F_FUN = ADDRESS;
K9F5608 = 0; //A0-A7
K9F5608 = S_BlockPage; //A9-A16
K9F5608 = S_BlockPage >> 8; //A17-A24
K9F_FUN = D_DATA;
while(!(K9F_FUN & RB));
K9F_FUN = COMMAND;
K9F5608 = 0x8a;
K9F_FUN = ADDRESS;
K9F5608 = 0; //A0-A7
K9F5608 = D_BlockPage; //A9-A16
K9F5608 = D_BlockPage >> 8; //A17-A24
K9F_FUN = D_DATA;
while(!(K9F_FUN & RB));
K9F_FUN = INACTIVE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -