#include<C8051F360.H>
unsigned char xdata Data_byte[256];
//CHECK-BUSY子程序
void Check_Busy()
{
unsigned char mem_status=0x01;
NSSMD0=0; //选通M25P16
SPI0DAT=0x05; //送度状态寄存器命令
while(SPIF!=1)
{
}
SPIF=0;
while(mem_status==0x01)
{
SPI0DAT=0xFF;
while(SPIF!=1) //等待完成
{
}
SPIF=0;
mem_status=SPI0DAT&0x01; //检查忙标志
}
NSSMD0=1; //静止M25P16
}
//M25P16初始化子程序
void Flash_Init()
{
NSSMD0=0;
SPI0DAT=0x06; //送写允许命令
while(SPIF!=1)
{
}
SPIF=0;
NSSMD0=1;
NSSMD0=0;
SPI0DAT=0x01; //送写状态字命令
while(SPIF!=1)
{
}
SPIF=0;
SPI0DAT=0x00; //送状态字,BP2—BP0置0
while(SPIF!=1)
{
}
SPIF=0;
NSSMD0=1;
Check_Busy(); //等待内部操作结束
}
我在main()里面初始化 Flash_Init()
的时候,程序就死在了 Flash_Init()
里面的一条指令check_busy()上面,当我把这条
指令删去的时候,程序就能跑了。主要是
操作M25P16的程序我都是书上抄的,然后就
不知道怎么改了 有用过的教一下吧 我用的单片机
是C8051F360,不过是c语言的 都是一样的
|