打印

SPI接口操作 M25P16程序死在了check_busy()上了 求解

[复制链接]
1685|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huahua123|  楼主 | 2013-12-21 16:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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语言的  都是一样的

相关帖子

沙发
huahua123|  楼主 | 2013-12-21 16:44 | 只看该作者
大哥们    求救啊     搞很久了。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝