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

📄 sdx.lst

📁 SD卡-SDHC卡扇区读写测试
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   SDX                                                                  11/03/2010 20:37:00 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE SDX
OBJECT MODULE PLACED IN sdx.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sdx.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "sdx.h"
   2          #include "myfun.h" //这是振南的公共函数头文件
   3          
   4          /*******************************************************
   5          
   6                  +------------------------------------+
   7                  |  振南电子 驱动程序模块 SD/SDHC 部分|
   8                  +------------------------------------+
   9          
  10            此源码版权属 振南 全权享有,如欲引用,敬请署名并告知
  11                  严禁随意用于商业目的,违者必究,后果自负
  12                   振南电子 
  13                       ->产品网站 http://www.znmcu.cn/
  14                       ->产品论坛 http://bbs.znmcu.cn/
  15                       ->产品网店 http://shop.znmcu.cn/
  16                       ->产品咨询 QQ:987582714 MSN:yzn07@126.com
  17                                  WW:yzn07                                  
  18          ********************************************************/
  19          
  20          //变量定义
  21          //--------------------------------------------------------------
  22          bit is_init;  //在初始化的时候设置此变量为1,同步数据传输(SPI)会放慢
  23          
  24          unsigned char addr_mode; //寻址方式,1为块寻址,0为字节寻址
  25          unsigned char sd_ver; //SD卡的版本 0x05说明是SD1.0  0x01说明是SD2.0
  26          //---------------------------------------------------------------
  27          
  28          unsigned char bdata _dat; //用于优化模拟SPI的中间bdata类型变量,方便取各个位
  29          sbit _dat7=_dat^7;
  30          sbit _dat6=_dat^6;
  31          sbit _dat5=_dat^5;
  32          sbit _dat4=_dat^4;
  33          sbit _dat3=_dat^3;
  34          sbit _dat2=_dat^2;
  35          sbit _dat1=_dat^1;
  36          sbit _dat0=_dat^0;
  37          
  38          /******************************************************************
  39           - 功能描述:IO模拟SPI,发送一个字节
  40           - 隶属模块:SD/SDHC模块
  41           - 函数属性:内部
  42           - 参数说明:x是要发送的字节
  43           - 返回说明:无返回
  44           - 注:其中is_init为1时,写的速度放慢,初始化SD卡SPI速度不能太高
  45           ******************************************************************/
  46          
  47          void SD_spi_write(unsigned char x) 
  48          {
  49   1       _dat=x;
  50   1       
  51   1       SD_SI=_dat7;
  52   1       SD_SCL=0; 
  53   1       if(is_init) delay(DELAY_TIME); 
  54   1       SD_SCL=1;
  55   1       if(is_init) delay(DELAY_TIME);
C51 COMPILER V8.05a   SDX                                                                  11/03/2010 20:37:00 PAGE 2   

  56   1      
  57   1       SD_SI=_dat6;
  58   1       SD_SCL=0; 
  59   1       if(is_init) delay(DELAY_TIME); 
  60   1       SD_SCL=1;
  61   1       if(is_init) delay(DELAY_TIME);
  62   1      
  63   1       SD_SI=_dat5;
  64   1       SD_SCL=0;
  65   1       if(is_init) delay(DELAY_TIME);
  66   1       SD_SCL=1;
  67   1       if(is_init) delay(DELAY_TIME);
  68   1      
  69   1       SD_SI=_dat4;
  70   1       SD_SCL=0;
  71   1       if(is_init) delay(DELAY_TIME); 
  72   1       SD_SCL=1;
  73   1       if(is_init) delay(DELAY_TIME);
  74   1      
  75   1       SD_SI=_dat3;
  76   1       SD_SCL=0; 
  77   1       if(is_init) delay(DELAY_TIME); 
  78   1       SD_SCL=1;
  79   1       if(is_init) delay(DELAY_TIME);
  80   1      
  81   1       SD_SI=_dat2;
  82   1       SD_SCL=0;
  83   1       if(is_init) delay(DELAY_TIME); 
  84   1       SD_SCL=1;
  85   1       if(is_init) delay(DELAY_TIME);
  86   1      
  87   1       SD_SI=_dat1;
  88   1       SD_SCL=0; 
  89   1       if(is_init) delay(DELAY_TIME); 
  90   1       SD_SCL=1;
  91   1       if(is_init) delay(DELAY_TIME);
  92   1      
  93   1       SD_SI=_dat0;
  94   1       SD_SCL=0;
  95   1       if(is_init) delay(DELAY_TIME);  
  96   1       SD_SCL=1;
  97   1       if(is_init) delay(DELAY_TIME);
  98   1      }
  99          
 100          /******************************************************************
 101           - 功能描述:IO模拟SPI,读取一个字节
 102           - 隶属模块:SD/SDHC模块
 103           - 函数属性:内部
 104           - 参数说明:无
 105           - 返回说明:返回读到的字节
 106           ******************************************************************/
 107          
 108          unsigned char SD_spi_read() //SPI读一个字节
 109          {  
 110   1       SD_SO=1;
 111   1      
 112   1       SD_SCL=1;
 113   1       if(is_init) delay(DELAY_TIME);
 114   1       SD_SCL=0;
 115   1       if(is_init) delay(DELAY_TIME); 
 116   1       _dat7=SD_SO; 
 117   1      
C51 COMPILER V8.05a   SDX                                                                  11/03/2010 20:37:00 PAGE 3   

 118   1       SD_SCL=1;
 119   1       if(is_init) delay(DELAY_TIME);
 120   1       SD_SCL=0;
 121   1       if(is_init) delay(DELAY_TIME);
 122   1       _dat6=SD_SO; 
 123   1      
 124   1       SD_SCL=1;
 125   1       if(is_init) delay(DELAY_TIME);
 126   1       SD_SCL=0;
 127   1       if(is_init) delay(DELAY_TIME);
 128   1       _dat5=SD_SO; 
 129   1      
 130   1       SD_SCL=1;
 131   1       if(is_init) delay(DELAY_TIME);
 132   1       SD_SCL=0;
 133   1       if(is_init) delay(DELAY_TIME);
 134   1       _dat4=SD_SO; 
 135   1      
 136   1       SD_SCL=1;
 137   1       if(is_init) delay(DELAY_TIME);
 138   1       SD_SCL=0;
 139   1       if(is_init) delay(DELAY_TIME); 
 140   1       _dat3=SD_SO; 
 141   1      
 142   1       SD_SCL=1;
 143   1       if(is_init) delay(DELAY_TIME);
 144   1       SD_SCL=0;
 145   1       if(is_init) delay(DELAY_TIME);
 146   1       _dat2=SD_SO; 
 147   1      
 148   1       SD_SCL=1;
 149   1       if(is_init) delay(DELAY_TIME);
 150   1       SD_SCL=0;
 151   1       if(is_init) delay(DELAY_TIME);
 152   1       _dat1=SD_SO;
 153   1      
 154   1       SD_SCL=1;
 155   1       if(is_init) delay(DELAY_TIME);
 156   1       SD_SCL=0;
 157   1       if(is_init) delay(DELAY_TIME);
 158   1       _dat0=SD_SO; 
 159   1       
 160   1       return (_dat);
 161   1      }
 162          
 163          /******************************************************************

⌨️ 快捷键说明

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