⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readsd.lst

📁 C51读写SD卡,SD卡使用SPI模式进行读写
💻 LST
字号:
C51 COMPILER V8.08   READSD                                                                12/26/2008 19:38:32 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE READSD
OBJECT MODULE PLACED IN readSD.OBJ
COMPILER INVOKED BY: C:\Keil  C51\C51\BIN\C51.EXE readSD.c LARGE OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***********************************************************************
   2          *引用头文件
   3          ***********************************************************************/
   4          #include <absacc.h> 
   5          #include <reg52.h>
   6          #include <stdio.h>
   7          #include <string.h>
   8          #include "SDCARDREAD.h"
   9          #include "spi.c"
  10          #include "SD.c"
  11          
  12          
  13          //初始化系统
  14          void init_SYS(void)
  15          {
  16   1        TMOD=0x21;  //设置波特率为57600定时器1方式和定时器0使用16位定时器
  17   1        TL1=0xff;   //设置波特率为
  18   1        TH1=0xff;
  19   1        SCON=0x50;//串口方式1,10位异步收发
  20   1        PCON=0x80;//波特率倍增
  21   1        //TR1=1;//打开定时器开始计时
  22   1        AUXR&=0xbf;
  23   1        //ES=1;
  24   1      //设置定时器0计时,100MS溢出一次
  25   1        TH0=0x4C;
  26   1        TL0=0X00;
  27   1        ET0=1;                //开定时器0中断
  28   1        
  29   1        TI=0;
  30   1        RI=0;
  31   1        //TBDATA=78;           //78*200=15600≈8000000/512=15625=1秒
  32   1      }
  33          
  34          //===================================================================== 
  35          //串口接收数据 
  36          //===================================================================== 
  37          uchar UARTin(uchar *RecData,uchar longofRecData) 
  38          { 
  39   1        uchar i=0;
  40   1        Timeout=0;
  41   1        for(i=0;i<longofRecData;i++)
  42   1        {
  43   2            TR0=1;                 //开启超时计数
  44   2            while(RI==0)            //等待接收1字节数据
  45   2            {
  46   3              if(Timeout==1)           //如果延时Delaytime未接收到数据退出循环
  47   3              {
  48   4                        Timeout=0;
  49   4                TR0=0;
  50   4                return 0;
  51   4              }
  52   3            }
  53   2            act=0;                       //如果接收到了则act归零,act用来记延时
  54   2            TR0=0;
  55   2                RI=0;
C51 COMPILER V8.08   READSD                                                                12/26/2008 19:38:32 PAGE 2   

  56   2            *(RecData+i)=SBUF;
  57   2        }
  58   1        return 1;
  59   1      } 
  60          //===================================================================== 
  61          //串口发送数据 
  62          //===================================================================== 
  63          void UARTout(uchar *sendData,uchar sendNum) 
  64          { 
  65   1        uchar i;
  66   1      //      while(TI==0);              //正处于移发送忙 
  67   1        for(i=0;i<sendNum;i++)
  68   1        {
  69   2          SBUF= *(sendData++);       //取字节到发送串口缓冲区 
  70   2              while(TI==0);              //正处于移发送忙 
  71   2          //可以发送新数据
  72   2          TI=0;                     //置发送忙标志,启动发送 
  73   2        }
  74   1      } 
  75          /*****************************************************************************
  76          *main主函数,看接收到的SD卡的厂商和序列号
  77          *****************************************************************************/
  78          void main()
  79          {//$1
  80   1        uchar i=0;
  81   1        uchar Request[3]={0xbb,0xaa,0xcc};
  82   1        
  83   1        init_SYS();
  84   1        Timeout=0;
  85   1        cou=0;
  86   1        act=0;
  87   1              for(i=0;i<5;i++)publicdata[i]=0;  //初始化
  88   1        EA=1;                   //开全局中断
  89   1              //TR0=1;                                        //启动TC0开始计时
  90   1              TR1=1;                  //打开定时器1开始计时
  91   1       
  92   1              while(1)
  93   1              {//$4
  94   2               UARTout(Request,3);
  95   2               if(UARTin(Request,1)==1)
  96   2               {
  97   3                      if (Request[0]=='X')
  98   3                 //读取SD卡信息
  99   3                       {
 100   4              //* send command CMD0 to SD Card (reset SD Card) 
 101   4              /*Request[0]=SD_SendCmd2(0,0);
 102   4              //* send command CMD1 to SD Card (set SD Card Model:SPI) 
 103   4              Request[1]=SD_SendCmd2(1,0);
 104   4              UARTout(Request,3);*/
 105   4            
 106   4                       sd_init();
 107   4                       UARTout(publicdata,8);
 108   4                       }  
 109   3                }
 110   2              }//$4
 111   1      
 112   1      }//$1
 113          
 114          //定时器0中断,50ms一次中断
 115          void timer0(void)interrupt 1 using 1
 116          {
 117   1              if(cou++==20)
C51 COMPILER V8.08   READSD                                                                12/26/2008 19:38:32 PAGE 3   

 118   1              {//每秒act+1
 119   2                      cou=0;
 120   2                      if(act++==DelayTime)
 121   2                      {
 122   3                              //BUSY_AT45=!BUSY_AT45;
 123   3                              act=0;
 124   3                              Timeout=1;
 125   3                              //UARTout(Request,3);
 126   3                      }
 127   2              }
 128   1              //计数器重新装载
 129   1              TH0=0x4C;
 130   1              TL0=0X00;
 131   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    824    ----
   CONSTANT SIZE    =      3    ----
   XDATA SIZE       =    104      29
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -