flash_rw.c
来自「基于at89c51单片机的mp3 flash芯片读写实验代码」· C语言 代码 · 共 104 行
C
104 行
#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 + =
减小字号Ctrl + -
显示快捷键?