亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sd.lst

?? C8051F340讀寫SD卡,帶文件系統
?? LST
字號:
C51 COMPILER V7.06   SD                                                                    03/06/2010 17:37:23 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SD
OBJECT MODULE PLACED IN sd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe sd.c DB OE BR LARGE

stmt level    source

   1          #include "spi.h"
   2          #include "sd.h"
   3          /*-------------------------------------------------------------------------------------------------*/
   4          unsigned char SD_init(void)
   5          {
   6   1              unsigned char response = 0xff;
   7   1              unsigned char retry = 0;
   8   1              unsigned char i = 0;
   9   1                      
  10   1              FCLK_SLOW(); /*set SPI clk <= 400kHz*/
  11   1      
  12   1              SD_CS_DEASSERT;
  13   1                      for(i=0;i<10;i++)
  14   1                              SPI_transmit_m(0xff); /*74 clk*/
  15   1      
  16   1              do
  17   1              {       
  18   2                      response = SD_sendCommand(CMD0, 0); /*send 'reset & go idle' command, the response should be 0x01 if suc
             -cessfull*/
  19   2                      retry++;
  20   2                      if(retry > 0xfe)
  21   2                              return 1; /*time out*/
  22   2              }while(response != 0x01);
  23   1      
  24   1              retry = 0;
  25   1              do
  26   1              {
  27   2                      response = SD_sendCommand(CMD1, 0); /*activate card's initialization process, the response should be 0x0
             -0 if successfull*/
  28   2              response = SD_sendCommand(CMD1, 0); /*same command sent again for compatibility with some cards*/
  29   2                      retry++;
  30   2              if(retry > 0xfe) 
  31   2                              return 1; /*time out*/
  32   2              }while(response);
  33   1      
  34   1              SD_sendCommand(CMD16, 512); /*set block size to 512*/
  35   1      
  36   1              FCLK_FAST(); /*set SPI clk fast*/
  37   1      
  38   1              return 0; /*normal return*/
  39   1      }
  40          
  41          /*-------------------------------------------------------------------------------------------------*/
  42          unsigned char SD_sendCommand(unsigned char cmd, unsigned long arg)
  43          {
  44   1              unsigned char response = 0xff;
  45   1              unsigned char retry = 0;
  46   1      
  47   1              SD_CS_ASSERT;
  48   1      
  49   1              SPI_transmit_m(cmd); /*send command, first two bits always '01'*/
  50   1              SPI_transmit_m(arg>>24);
  51   1              SPI_transmit_m(arg>>16);
  52   1              SPI_transmit_m(arg>>8);
  53   1              SPI_transmit_m(arg);
C51 COMPILER V7.06   SD                                                                    03/06/2010 17:37:23 PAGE 2   

  54   1              SPI_transmit_m(0x95);   /*CRC, it must be 0x95 when cmd0*/
  55   1              
  56   1              do/*wait response*/
  57   1              {
  58   2                      SPI_receive_m(&response); /*equal to "response = SPI_receive();"*/
  59   2              if(retry++ > 0xfe) break; /*time out*/
  60   2              }while(response == 0xff); 
  61   1              
  62   1              SD_CS_DEASSERT;
  63   1              SPI_transmit_m(0xff);
  64   1      
  65   1              return response; 
  66   1      }
  67          /*-------------------------------------------------------------------------------------------------*/
  68          unsigned char SD_readSingleBlock(unsigned char *buff, unsigned long startBlock)
  69          {
  70   1              if(SD_sendCommand(CMD17, startBlock<<9)) return 1;
  71   1      
  72   1              if(receive_DataBlock(buff, 512)) return 1;
  73   1      
  74   1              return 0;
  75   1      }
  76          /*-------------------------------------------------------------------------------------------------*/
  77          unsigned char SD_writeSingleBlock(unsigned char *buff, unsigned long startBlock)
  78          {
  79   1              if(SD_sendCommand(CMD24, startBlock<<9)) return 1;
  80   1              
  81   1              if(transmit_DataBlock(buff, 0xfe)) return 1;
  82   1      
  83   1              return 0;
  84   1      }
  85          /*-------------------------------------------------------------------------------------------------*/
  86          unsigned char SD_readMultipleBlock(unsigned char *buff, unsigned long startBlock, unsigned long totalBlock
             -s)
  87          {
  88   1              unsigned char response = 0xff;
  89   1              unsigned int retry = 0;
  90   1              unsigned int nbyte = 512;
  91   1      
  92   1              if(SD_sendCommand(CMD18, startBlock<<9)) return 1;
  93   1      
  94   1              SD_CS_ASSERT;
  95   1      
  96   1              do 
  97   1              {       
  98   2                      do /*wait for start block token 0xfe (0x11111110)*/
  99   2                      {
 100   3                              SPI_receive_m(&response);
 101   3                      if(retry++ > 0xfffe) /*time out error*/
 102   3                              {
 103   4                                      SD_CS_DEASSERT; 
 104   4                                      return 1;       
 105   4                              }
 106   3                      }while(response != 0xfe); /*wait response*/
 107   2      
 108   2                      do /*Receive the data block into buffer*/
 109   2                      {                                                       
 110   3                              SPI_receive_m(buff++);
 111   3                              SPI_receive_m(buff++);
 112   3                              SPI_receive_m(buff++);
 113   3                              SPI_receive_m(buff++);
 114   3                      }while (nbyte -= 4);
C51 COMPILER V7.06   SD                                                                    03/06/2010 17:37:23 PAGE 3   

 115   2      
 116   2                      SPI_receive(); /*Discard CRC*/
 117   2                      SPI_receive();
 118   2      
 119   2                      nbyte = 512;
 120   2                      retry = 0;
 121   2      
 122   2              }while (--totalBlocks);
 123   1      
 124   1              SD_sendCommand(CMD12, 0); /*STOP_TRANSMISSION*/
 125   1      
 126   1              SD_CS_DEASSERT;
 127   1              SPI_transmit_m(0xff); /*extra 8 clk*/
 128   1      
 129   1              return 0;
 130   1      }
 131          
 132          /*-------------------------------------------------------------------------------------------------*/
 133          unsigned char SD_writeMultipleBlock(unsigned char *buff, unsigned long startBlock, unsigned long totalBloc
             -ks)
 134          {
 135   1              unsigned char response = 0xff; /*response from sd card*/
 136   1              unsigned char bc = 0; 
 137   1              unsigned int retry = 0;
 138   1      
 139   1              if(SD_sendCommand(CMD25, startBlock<<9)) return 1;
 140   1      
 141   1              SD_CS_ASSERT;
 142   1      
 143   1              do 
 144   1              {
 145   2                      SPI_transmit(0xfc); /*Send start block token 0xfc (0x11111100)*/
 146   2         
 147   2                      do /*ransmit the 512 byte data block to SDC*/
 148   2                      {                                               
 149   3                              SPI_transmit_m(*buff++);
 150   3                              SPI_transmit_m(*buff++);
 151   3                      } while (--bc);
 152   2      
 153   2                      SPI_transmit_m(0xFF); /* CRC (Dummy) */
 154   2                      SPI_transmit_m(0xFF);
 155   2                              
 156   2                      SPI_receive_m(&response);
 157   2                      if( (response & 0x1f) != 0x05) /*response= 0bXXX0AAA1 ; AAA='010' - data accepted*/
 158   2                      {                              /*AAA='101'-data rejected due to CRC error*/
 159   3                               SD_CS_DEASSERT;           /*AAA='110'-data rejected due to write error*/
 160   3                               return 1;
 161   3                      }
 162   2      
 163   2                      retry = 0;
 164   2                      while(SPI_receive()!=0xff) /*wait for SD card to complete writing and get idle*/
 165   2                              if(retry++ > 0xfffe){SD_CS_DEASSERT; return 1;}
 166   2                      SPI_transmit_m(0xff); /*extra 8 bits*/
 167   2      
 168   2              }while (--totalBlocks);
 169   1      
 170   1              SPI_transmit_m(0xfd); /*send 'stop transmission token'*/
 171   1      
 172   1              while(SPI_receive()!=0xff) //wait for SD card to complete writing and get idle
 173   1                      if(retry++ > 0xfffe){SD_CS_DEASSERT; return 1;}
 174   1      
 175   1              SD_CS_DEASSERT;
C51 COMPILER V7.06   SD                                                                    03/06/2010 17:37:23 PAGE 4   

 176   1              SPI_transmit_m(0xff);
 177   1      
 178   1              return 0;
 179   1      }
 180          /*-------------------------------------------------------------------------------------------------*/
 181          unsigned char SD_erase(unsigned long startBlock, unsigned long totalBlocks)
 182          {
 183   1              unsigned char response;
 184   1      
 185   1              response = SD_sendCommand(CMD32, startBlock<<9); /*send starting block address*/
 186   1              if(response != 0x00) /*check for SD status: 0x00 is OK*/
 187   1                      return response;
 188   1      
 189   1              response = SD_sendCommand(CMD33,(startBlock + totalBlocks - 1)<<9); /*send end block address*/
 190   1              if(response != 0x00)
 191   1                      return response;
 192   1      
 193   1              response = SD_sendCommand(CMD38, 0); /*erase all selected blocks*/
 194   1              if(response != 0x00)
 195   1                      return response;
 196   1      
 197   1              return 0; /*normal return*/
 198   1      }
 199          /*-------------------------------------------------------------------------------------------------*/
 200          unsigned char receive_DataBlock(
 201                  unsigned char *buff, /* Data buffer to store received data */ 
 202                  unsigned int btr /* Byte count (must be multiple of 4) */
 203          )
 204          {
 205   1              unsigned char response = 0xff;
 206   1              unsigned int retry = 0;
 207   1      
 208   1              SD_CS_ASSERT;
 209   1              do /*wait for start block token 0xfe (0x11111110)*/
 210   1              {
 211   2                      SPI_receive_m(&response);
 212   2              if(retry++ > 0xfffe) /*time out error*/
 213   2                      {
 214   3                              SD_CS_DEASSERT; 
 215   3                              return 1;       
 216   3                      }
 217   2              }while(response != 0xfe); /*wait response*/
 218   1      
 219   1              do /*Receive the data block into buffer*/
 220   1              {                                                               
 221   2                      SPI_receive_m(buff++);
 222   2                      SPI_receive_m(buff++);
 223   2                      SPI_receive_m(buff++);
 224   2                      SPI_receive_m(buff++);
 225   2              }while(btr -= 4);
 226   1      
 227   1              SPI_receive(); /*Discard CRC two bytes*/
 228   1              SPI_receive();
 229   1      
 230   1              SD_CS_DEASSERT;
 231   1              SPI_transmit_m(0xff); /*extra 8 clk*/
 232   1      
 233   1              return 0;
 234   1      }
 235          /*-------------------------------------------------------------------------------------------------*/
 236          unsigned char transmit_DataBlock(
 237                  const unsigned char *buff, /* 512 byte data block to be transmitted */
C51 COMPILER V7.06   SD                                                                    03/06/2010 17:37:23 PAGE 5   

 238                  unsigned char token /* Data/Stop token */
 239          )
 240          {
 241   1              unsigned char response = 0xff; 
 242   1              unsigned char bc = 0;
 243   1              unsigned int retry = 0;
 244   1      
 245   1              SD_CS_ASSERT;
 246   1              
 247   1              SPI_transmit_m(token); /*send start block token 0xfe (0x11111110)*/
 248   1      
 249   1              do /*transmit the 512 byte data block to SD card*/
 250   1              {                                       
 251   2                      SPI_transmit_m(*buff++);
 252   2                      SPI_transmit_m(*buff++);
 253   2              }while (--bc);
 254   1      
 255   1              SPI_transmit_m(0xff); /*CRC (Dummy)*/
 256   1              SPI_transmit_m(0xff);
 257   1      
 258   1              SPI_receive_m(&response);
 259   1              if( (response & 0x1f) != 0x05) /*response= 0bXXX0AAA1 ; AAA='010' - data accepted*/
 260   1              {                              /*AAA='101'-data rejected due to CRC error*/
 261   2                       SD_CS_DEASSERT;           /*AAA='110'-data rejected due to write error*/
 262   2                       return 1;
 263   2              }
 264   1      
 265   1              while(SPI_receive()!=0xff) //wait until the SD is not busy
 266   1                      if(retry++ > 0xfffe){SD_CS_DEASSERT; return 1;}
 267   1      
 268   1              SD_CS_DEASSERT;
 269   1              SPI_transmit_m(0xff); /*extra 8 clk*/
 270   1      
 271   1              return 0;
 272   1      }
 273          /*-------------------------------------------------------------------------------------------------*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1597    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      71
   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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99一区视频免费| 久久免费的精品国产v∧| 99精品久久久久久| 成人免费电影视频| 高清国产一区二区| 成人av免费网站| av网站一区二区三区| 99国内精品久久| 色拍拍在线精品视频8848| 一本一道久久a久久精品综合蜜臀| 国内精品久久久久影院薰衣草 | 福利一区在线观看| 国产精品综合视频| 成人黄色一级视频| 91亚洲国产成人精品一区二三| av一二三不卡影片| 色噜噜夜夜夜综合网| 在线观看中文字幕不卡| 欧美日韩色综合| 日韩视频一区在线观看| 久久综合九色综合欧美就去吻| 久久精品亚洲麻豆av一区二区| 欧美激情在线看| 亚洲欧美另类小说视频| 亚洲自拍与偷拍| 蜜臀va亚洲va欧美va天堂 | 成人不卡免费av| 91久久免费观看| 欧美一级欧美三级| 久久精品一区二区三区四区 | 风间由美一区二区av101| 91欧美一区二区| 欧美人狂配大交3d怪物一区| 日韩欧美国产系列| 国产精品欧美综合在线| 亚洲主播在线观看| 精品一二三四在线| 色婷婷综合久久久久中文一区二区| 欧美一a一片一级一片| 亚洲成av人片在线| 开心九九激情九九欧美日韩精美视频电影 | 欧美高清在线一区二区| 欧美成人性福生活免费看| 中文字幕一区二区在线观看 | 久久电影网站中文字幕| youjizz国产精品| 国产麻豆欧美日韩一区| 在线观看91视频| 久久久久久久久久久久久夜| 亚洲视频小说图片| 蜜臀a∨国产成人精品| 91亚洲国产成人精品一区二三| 7777女厕盗摄久久久| 国产精品毛片大码女人 | 欧美日韩国产一区二区三区地区| 久久麻豆一区二区| 亚洲va天堂va国产va久| 国产成人一区二区精品非洲| 欧美日韩国产综合久久| 国产精品萝li| 精品夜夜嗨av一区二区三区| 欧美在线不卡一区| 中文幕一区二区三区久久蜜桃| 天天色综合天天| gogogo免费视频观看亚洲一| 精品国产乱码久久久久久夜甘婷婷| 亚洲色图20p| 国产黄色91视频| 欧美一级欧美三级在线观看| 亚洲乱码国产乱码精品精可以看| 激情丁香综合五月| 欧美精三区欧美精三区| 亚洲女与黑人做爰| 成人网在线免费视频| 欧美变态口味重另类| 视频一区视频二区中文字幕| 色婷婷一区二区三区四区| 久久久综合九色合综国产精品| 日韩精品成人一区二区三区 | 久久一区二区视频| 亚洲成人自拍偷拍| 色综合天天性综合| **性色生活片久久毛片| 国产精品18久久久久久久久| 日韩欧美黄色影院| 奇米影视7777精品一区二区| 色综合激情久久| 亚洲私人影院在线观看| 成人av在线资源| 国产精品人人做人人爽人人添 | 日韩视频免费观看高清完整版| 一区二区三区小说| 成人18精品视频| 国产精品污www在线观看| 国产成人鲁色资源国产91色综| 欧美日韩黄色一区二区| 午夜精品爽啪视频| 91精品国产综合久久蜜臀| 视频在线观看一区| 91精品国产综合久久久久久漫画 | 亚洲午夜视频在线观看| 91精品福利视频| 亚洲一区二区视频在线| 欧美在线短视频| 亚洲成人一区在线| 91久久精品一区二区| 亚洲国产一区二区三区青草影视| 色嗨嗨av一区二区三区| 亚洲精品欧美二区三区中文字幕| 色欧美88888久久久久久影院| 亚洲天堂精品视频| 在线免费观看成人短视频| 亚洲国产日韩av| 欧美精品日韩一本| 日本免费在线视频不卡一不卡二| 日韩一区二区在线观看视频| 激情综合一区二区三区| 精品国产乱码久久久久久夜甘婷婷 | 免费观看日韩电影| 欧美精品一区二区三区视频| 国产精品一区2区| 国产精品免费丝袜| 91视频xxxx| 性久久久久久久久久久久| 91精品国产色综合久久不卡蜜臀| 日本欧美在线观看| 久久久精品tv| 99久久精品国产观看| 亚洲国产aⅴ成人精品无吗| 91精品国产欧美日韩| 激情深爱一区二区| 国产精品不卡在线观看| 欧美在线高清视频| 精品综合免费视频观看| 日本一区二区不卡视频| 91黄色激情网站| 久久精品二区亚洲w码| 欧美国产视频在线| 欧美在线小视频| 久久精品999| 国产精品不卡在线观看| 欧美疯狂做受xxxx富婆| 国产99久久久国产精品免费看| 亚洲狼人国产精品| 日韩欧美一级精品久久| hitomi一区二区三区精品| 免费不卡在线观看| 18成人在线观看| 日韩美女一区二区三区四区| 色综合色综合色综合色综合色综合| 日韩av不卡一区二区| 国产精品国产三级国产a| 777奇米四色成人影色区| av在线一区二区三区| 久久精品国产999大香线蕉| 亚洲欧洲av一区二区三区久久| 欧美日本在线观看| 成人免费看片app下载| 免费观看在线综合| 一区二区三区视频在线看| 久久伊99综合婷婷久久伊| 欧美日韩精品免费| 92精品国产成人观看免费| 精品一区二区三区久久| 亚洲国产一区二区三区| 中文av一区二区| 日韩精品一区二区三区在线播放| 91福利国产成人精品照片| 国产精品一二三四区| 美女网站一区二区| 亚洲成人久久影院| 亚洲免费观看在线观看| 久久久久久久久一| 日韩欧美另类在线| 欧美日韩国产小视频| 色综合婷婷久久| 成人黄色综合网站| 久久精品国产精品青草| 香蕉久久夜色精品国产使用方法 | 国产精品传媒在线| 欧美精品一区二区三区一线天视频| 欧美三级日韩三级| 色噜噜偷拍精品综合在线| 成人污污视频在线观看| 国产一区二区成人久久免费影院 | 免费观看日韩av| 午夜精品福利一区二区蜜股av | 亚洲一区在线电影| 国产精品久久久一本精品| 久久精品日韩一区二区三区| 日韩欧美成人激情| 欧美一区三区二区| 欧美图区在线视频| 欧美在线观看禁18| 欧美亚洲一区二区在线观看| www.亚洲色图.com| 不卡一区二区在线| 成人av网在线| 91在线观看高清| 91成人在线观看喷潮|