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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sd.lst

?? FS7805 使用SD卡的demo
?? LST
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
C51 COMPILER V7.50   SD                                                                    04/17/2007 10:40:23 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SD
OBJECT MODULE PLACED IN .\OUTPUT\Sd.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Sd.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\OUTPUT\Sd.lst) OBJ
                    -ECT(.\OUTPUT\Sd.obj)

line level    source

   1          
   2          #include "fs7805.h"
   3          #include "fs7805regs.h"
   4          #include "sd.h" 
   5          #include "include.h"
   6          static INT32U xdata SdAvailableBlocks = 0;
   7          static TCARD_TYPE xdata CardType = CARD_SD;
   8          BYTE idata SdCmdBuf[5];
   9          BYTE xdata SdRespBuf[17]; 
  10          BYTE xdata SdRespBufForProgCsd[17];
  11          static INT32U idata RCA = 0;
  12          static BOOL MmcProtol;
  13          
  14          INT32U SectorStart  = 0;
  15          INT16U SectorCount  = 0;
  16          
  17          BYTE CmdTimer;
  18          
  19          void SdInit()
  20          {
  21   1              SYSIO_CFG=SYSIO_CFG|bmSD_EN; //enable SDMI interface
  22   1              SDMI_CTL&=~bmSD_AUTO_CLK_EN; //
  23   1              SDMI_CTL   |= bmSD_CLK_40;//
  24   1      }
  25          
  26          void SdLowClk()
  27          {
  28   1              SDMI_CTL=(SDMI_CTL&~bmSD_CLK_SEL)|bmSD_CLK_EN;
  29   1      }
  30          
  31          void SdHiClk()
  32          {
  33   1              SDMI_CTL=(SDMI_CTL|bmSD_CLK_SEL)|bmSD_CLK_EN;
  34   1      }
  35          
  36          void SdStopClk()
  37          {
  38   1              SDMI_CTL=SDMI_CTL & ~bmSD_CLK_EN & ~bmSD_AUTO_CLK_EN;
  39   1      }
  40          
  41          void SdWaitCard()
  42          {
  43   1              while(SDMI_ST&bmSD_BUSY);
  44   1      }
  45          
  46          BYTE SdGetRespType(BYTE CmdIndex)
  47          {
  48   1          if(CmdIndex == SEND_RELATIVE_ADDR)
  49   1          {
  50   2              //if(CardType == CARD_SD)
  51   2                  return TYPE_RESP_R6;
  52   2              //else
  53   2              //    return TYPE_RESP_R1;
  54   2          }
C51 COMPILER V7.50   SD                                                                    04/17/2007 10:40:23 PAGE 2   

  55   1          switch(CmdIndex)
  56   1          {
  57   2              case GO_IDLE_STATE        : return TYPE_RESP_NO; break;
  58   2              case SEND_OP_COND         : return TYPE_RESP_R3; break;
  59   2              case ALL_SEND_CID         : return TYPE_RESP_R2; break;
  60   2              case SET_DSR              : return TYPE_RESP_NO; break;
  61   2              case SWITCH               : return TYPE_RESP_R1; break;
  62   2              case SELECT_CARD          : return TYPE_RESP_R1; break;
  63   2              case SEND_EXT_CSD         : return TYPE_RESP_R1; break;
  64   2              case SEND_CSD             : return TYPE_RESP_R2; break;
  65   2              case SEND_CID             : return TYPE_RESP_R2; break;
  66   2              case READ_DAT_UNTIL_STOP  : return TYPE_RESP_R1; break;
  67   2              case STOP_TRANS           : return TYPE_RESP_R1; break;
  68   2              case SEND_STATUS          : return TYPE_RESP_R1; break;
  69   2              case GO_INACTIVE_STATE    : return TYPE_RESP_NO; break;
  70   2              case SET_BLOCK_LEN        : return TYPE_RESP_R1; break;
  71   2              case READ_BLOCK           : return TYPE_RESP_R1; break;
  72   2              case READ_MUL_BLOCK       : return TYPE_RESP_R1; break;
  73   2              case WRITE_DAT_UNTIL_STOP : return TYPE_RESP_R1; break;
  74   2              case SET_BLOCK_COUNT      : return TYPE_RESP_R1; break;
  75   2              case WRITE_BLOCK          : return TYPE_RESP_R1; break;
  76   2              case WRITE_MUL_BLOCK      : return TYPE_RESP_R1; break;
  77   2              case PROGRAM_CID          : return TYPE_RESP_R1; break;
  78   2              case PROGRAM_CSD          : return TYPE_RESP_R1; break;
  79   2              case SET_WRITE_PROT       : return TYPE_RESP_R1; break;
  80   2              case CLR_WRITE_PROT       : return TYPE_RESP_R1; break;
  81   2              case SEND_WRITE_PROT      : return TYPE_RESP_R1; break;
  82   2              case ERASE_WR_BLK_START   : return TYPE_RESP_R1; break;
  83   2              case ERASE_WR_BLK_END     : return TYPE_RESP_R1; break;
  84   2              case ERASE_GROUP_START    : return TYPE_RESP_R1; break;
  85   2              case ERASE_GROUP_END      : return TYPE_RESP_R1; break;
  86   2              case ERASE                : return TYPE_RESP_R1; break;
  87   2              case FAST_IO              : return TYPE_RESP_R4; break;
  88   2              case GO_IRQ_STATE         : return TYPE_RESP_R5; break;
  89   2              case LOCK_UNLOCK          : return TYPE_RESP_R1; break;
  90   2              case APP_CMD              : return TYPE_RESP_R1; break;
  91   2              case GEN_CMD              : return TYPE_RESP_R1; break;
  92   2              // APP_CMDs
  93   2              case SEND_NUM_WR_BLOCKS   : return TYPE_RESP_R1; break;
  94   2              case SD_SEND_OP_COND      : return TYPE_RESP_R3; break;
  95   2              case SEND_SCR             : return TYPE_RESP_R1; break;
  96   2              default                   : return TYPE_RESP_NO; break;
  97   2          }
  98   1          // Following commands are with identical index and response type:
  99   1          //   1. SET_BUS_WIDTH        (ACMD6)    Response R1
 100   1          //      SWITCH               (CMD6)     Response R1
 101   1          //   2. SEND_SD_STATUS       (ACMD13)   Response R1
 102   1          //      SEND_STATUS          (CMD13)    Response R1
 103   1          //   3. SET_WR_BLK_ERASE_CNT (ACMD23)   Response R1
 104   1          //      SET_BLOCK_COUNT      (CMD23)    Response R1
 105   1          //   4. SET_CLR_CARD_DETECT  (ACMD42)   Response R1
 106   1          //      LOCK_UNLOCK          (CMD42)    Response R1
 107   1      }
 108          
 109          STATUS SdSendCmd(BYTE CmdIndex, BYTE *CmdBuf)
 110          {
 111   1          BYTE RespType , RespLen , CmdType;
 112   1          BYTE i;
 113   1          BYTE RetryCount = 0;
 114   1      
 115   1              RespType = SdGetRespType(CmdIndex);
 116   1      
C51 COMPILER V7.50   SD                                                                    04/17/2007 10:40:23 PAGE 3   

 117   1              if(     (CmdIndex == GEN_CMD)||
 118   1                      (CmdIndex == SEND_NUM_WR_BLOCKS)||
 119   1                      (CmdIndex == SEND_SCR)||
 120   1                      (CmdIndex == SEND_EXT_CSD)||
 121   1                      (CmdIndex == READ_BLOCK)||
 122   1                      (CmdIndex == READ_MUL_BLOCK)||
 123   1                      (CmdIndex == READ_DAT_UNTIL_STOP)/*||
 124   1                      (CmdIndex == SEND_WRITE_PROT)*/)          //2006.05.21
 125   1          {
 126   2              RespLen = 6;
 127   2              CmdType = SD_CMD_RX_DATA;
 128   2          }
 129   1          else if((CmdIndex == PROGRAM_CSD)||
 130   1                      (CmdIndex == LOCK_UNLOCK)||
 131   1                              (CmdIndex == WRITE_BLOCK)||
 132   1                  (CmdIndex == WRITE_MUL_BLOCK))
 133   1          {
 134   2              RespLen = 6;
 135   2              CmdType = SD_CMD_TX_DATA;
 136   2          }
 137   1          else if(RespType == TYPE_RESP_NO)
 138   1          {
 139   2              RespLen = 0;
 140   2              CmdType = SD_CMD_ONLY;
 141   2          }
 142   1          else if(RespType == TYPE_RESP_R2)
 143   1          {
 144   2              RespLen = 17;
 145   2              CmdType = SD_CMD_LONG_RSP;
 146   2          }
 147   1              
 148   1          else    
 149   1          {
 150   2              RespLen = 6;
 151   2              CmdType = SD_CMD_SHORT_RSP;
 152   2          }
 153   1      
 154   1              if (CmdIndex == 0x5)
 155   1              {
 156   2              RespLen = 6;
 157   2              CmdType = SD_CMD_SHORT_RSP;
 158   2      
 159   2              }
 160   1      
 161   1              for( ; RetryCount < 3; RetryCount++)
 162   1          {
 163   2                      SDMCMDRESBUF00=0x40|CmdIndex; //The First byte
 164   2                      for(i = 1; i <= 4; i++) //The next 4 bytes
 165   2                      ((BYTE xdata *)(&SDMCMDRESBUF00))[i]=CmdBuf[i];
 166   2      
 167   2                      SDMI_CMD=CmdType;
 168   2                      
 169   2                      CmdTimer = 5; // 50ms
 170   2              //while((SDMI_INT&bmSD_COMPLETE_INT)==0);
 171   2                      //SDMI_INT&=~bmSD_COMPLETE_INT;
 172   2                      while(CmdTimer > 0)
 173   2              {       
 174   3                              if((SDMI_INT&bmSD_COMPLETE_INT)!=0) //wait for command is completed.
 175   3                              {
 176   4                                      SDMI_INT&=~bmSD_COMPLETE_INT;
 177   4                                      break;
 178   4                              }
C51 COMPILER V7.50   SD                                                                    04/17/2007 10:40:23 PAGE 4   

 179   3                      }//*/
 180   2                      if(CmdTimer == 0) // Timeout
 181   2              {
 182   3                  SdCtrlReset(); // ???
 183   3                                          
 184   3                  //MMCerror2++;
 185   3                  continue;
 186   3              }
 187   2      
 188   2              if(RespType == TYPE_RESP_NO)
 189   2                  return STATUS_SUCCESS;
 190   2      
 191   2              if(RespType == TYPE_RESP_R3)
 192   2              {
 193   3                  // The response type of SD_SEND_OP_COND (ACMD41) and 
 194   3                  // SEND_OP_COND (CMD1) are both R3, which is not protected
 195   3                  // by CRC7. But hardware could still report CRC7 error for
 196   3                  // these command's response. So, to prevent from affecting 
 197   3                  // next command, we clear CRC7-ERR INT bit here.
 198   3                  SDMI_ST&=~bmSD_CRC7_ERR;
 199   3                  for(i = 0; i < RespLen; i++)
 200   3                      SdRespBuf[i] = ((BYTE xdata *)(&SDMCMDRESBUF00))[i];
 201   3                  return STATUS_SUCCESS;
 202   3              }
 203   2      
 204   2              if(SDMI_ST&bmSD_CRC7_ERR) // CRC7 Error
 205   2              {
 206   3                  SDMI_ST&=~bmSD_CRC7_ERR; // Clear INT
 207   3                  continue;
 208   3              }
 209   2      
 210   2              for(i = 0; i < RespLen; i++)
 211   2                  SdRespBuf[i] = ((BYTE xdata *)(&SDMCMDRESBUF00))[i];
 212   2      
 213   2              if(RespType == TYPE_RESP_R1)
 214   2              {
 215   3                  // Check following error bits in Card Status:
 216   3                  //   31 OUT_OF_RANGE         SdRespBuf[1].7
 217   3                  //   30 ADDRESS_ERROR        SdRespBuf[1].6
 218   3                  //   29 BLOCK_LEN_ERROR      SdRespBuf[1].5
 219   3                  //   28 ERASE_SEQ_ERROR      SdRespBuf[1].4
 220   3                  //   27 ERASE_PARAM          SdRespBuf[1].3
 221   3                  //   26 WP_VIOLATION         SdRespBuf[1].2
 222   3                  //   24 LOCK_UNLOCK_FAILED   SdRespBuf[1].0
 223   3                  //   23 COM_CRC_ERR          SdRespBuf[2].7
 224   3                  //   22 ILLEGAL_COMMAND      SdRespBuf[2].6
 225   3                  //   21 CARD_ECC_FAILED      SdRespBuf[2].5
 226   3                  //   20 CC_ERROR             SdRespBuf[2].4
 227   3                  //   19 ERROR                SdRespBuf[2].3
 228   3                  if( ( (SdRespBuf[1] & 0xFD) == 0 ) && // 8'b1111_1101
 229   3                      ( (SdRespBuf[2] & 0xF8) == 0 )  ) // 8'b1111_1000
 230   3                      return STATUS_SUCCESS;            // No error
 231   3                  else
 232   3                  if( ( SdRespBuf[1] == 0x80 ) &&     //ignor OUT_OF_RANGE error
 233   3                      ( SdRespBuf[2] == 0 )  &&               // when multi read last 5 blocks
 234   3                                      (( SectorStart >= SdAvailableBlocks-5)||
 235   3                                      ( SectorStart <= SdAvailableBlocks))) //see MMC 4.0 SPEC--4.6.3(page 49)
 236   3                      return STATUS_SUCCESS;   //         
 237   3                               else                                            //
 238   3                      continue;
 239   3              }
 240   2              else
C51 COMPILER V7.50   SD                                                                    04/17/2007 10:40:23 PAGE 5   

 241   2                  return STATUS_SUCCESS;
 242   2          }
 243   1          return STATUS_FLASH_ERROR;
 244   1      }
 245          
 246          STATUS SdSendAppCmd(BYTE AppCmdIndex, BYTE *CmdBuf)
 247          {
 248   1          STATUS Status;
 249   1          int RetryCount;
 250   1          BYTE CmdBuf55[5]; // for APP_CMD (CMD55)
 251   1       
 252   1          for(RetryCount = 0; RetryCount < 3; RetryCount++)
 253   1          {
 254   2              *((INT32U *)(&CmdBuf55[1])) = RCA;
 255   2              Status = SdSendCmd(APP_CMD,CmdBuf55);
 256   2              
 257   2              if(Status != STATUS_SUCCESS)
 258   2              {
 259   3                      continue;
 260   3              }
 261   2              
 262   2              Status = SdSendCmd(AppCmdIndex,CmdBuf);
 263   2              
 264   2              if(Status != STATUS_SUCCESS)
 265   2                  continue;
 266   2              else

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性大战久久久久久久蜜臀| 欧美色图第一页| 亚洲成人精品影院| 国产视频一区在线播放| 欧美日韩激情一区二区| 不卡高清视频专区| 久久激五月天综合精品| 亚洲第一电影网| 亚洲欧洲精品成人久久奇米网| 精品理论电影在线| 欧美日韩一区小说| 色综合视频一区二区三区高清| 精品一区二区影视| 秋霞电影一区二区| 亚洲一区电影777| 亚洲欧洲日韩一区二区三区| 精品盗摄一区二区三区| 91精品国产色综合久久ai换脸| 91同城在线观看| 国产成人av电影在线播放| 麻豆成人免费电影| 日本sm残虐另类| 视频一区视频二区中文| 亚洲午夜一区二区| 一区二区三国产精华液| 日韩毛片精品高清免费| 国产精品短视频| 国产精品热久久久久夜色精品三区| 精品免费国产二区三区| 日韩午夜三级在线| 日韩欧美国产三级电影视频| 91精品国模一区二区三区| 欧美日韩一区二区在线观看视频 | 精品国精品自拍自在线| 91精品久久久久久久99蜜桃| 91精品婷婷国产综合久久| 欧美日韩国产天堂| 在线播放欧美女士性生活| 欧美三级在线视频| 欧美高清视频不卡网| 欧美精品日韩一本| 555夜色666亚洲国产免| 日韩免费在线观看| 欧美精品一区二区精品网| 久久先锋资源网| 欧美激情一区二区三区蜜桃视频| 中文久久乱码一区二区| 亚洲美女电影在线| 一二三四社区欧美黄| 亚洲成av人在线观看| 日韩国产成人精品| 久久91精品久久久久久秒播| 国内精品久久久久影院一蜜桃| 国产精品一区二区在线观看不卡 | 成人午夜在线免费| av一本久道久久综合久久鬼色| 91麻豆国产精品久久| 欧美午夜寂寞影院| 日韩精品一区二| 中文字幕av资源一区| 亚洲精品日韩综合观看成人91| 亚洲大片在线观看| 精品一区精品二区高清| 成人午夜精品在线| 欧亚洲嫩模精品一区三区| 91精品国产91久久久久久一区二区 | 欧美综合色免费| 91精品国产综合久久福利软件| 日韩免费成人网| 国产精品另类一区| 亚洲成人动漫一区| 国产麻豆精品在线| 色哟哟亚洲精品| 日韩欧美一区在线观看| 国产精品人妖ts系列视频| 亚洲国产日韩一区二区| 国产老肥熟一区二区三区| 色综合网色综合| 欧美大片一区二区| 成人免费在线视频| 美国三级日本三级久久99| 99久久99久久免费精品蜜臀| 欧美精品vⅰdeose4hd| 国产精品污污网站在线观看 | 日韩电影在线一区二区三区| 国产精品一级片| 欧美三级在线播放| 久久久精品日韩欧美| 亚洲国产精品一区二区www在线 | 国产99久久久久| 欧美日韩一级二级| 国产精品免费视频一区| 日韩国产欧美三级| 91视频在线观看| 欧美成人高清电影在线| 亚洲精品精品亚洲| 国产98色在线|日韩| 欧美一区二区视频在线观看2020| 中文字幕在线免费不卡| 激情综合色播五月| 欧美日韩一区中文字幕| 国产精品久久久久久亚洲伦| 久久超碰97人人做人人爱| 在线观看视频一区| 国产精品久久久久久久久免费樱桃 | 精品粉嫩超白一线天av| 亚洲大尺度视频在线观看| av欧美精品.com| 久久久久久久综合| 日本 国产 欧美色综合| 欧美在线啊v一区| 国产精品久久99| 国产99久久久久久免费看农村| 91精品视频网| 亚洲成人黄色影院| 欧美亚洲日本国产| 综合av第一页| 波多野结衣亚洲| 日本一区二区三区免费乱视频| 九一久久久久久| 日韩免费视频线观看| 日韩不卡一区二区| 91精品国产综合久久久久久久久久| 一区二区三区在线视频免费观看| 成人av电影在线播放| 国产日产欧美精品一区二区三区| 九九九精品视频| 精品成人私密视频| 狠狠v欧美v日韩v亚洲ⅴ| 欧美一个色资源| 免费在线看成人av| 欧美一区二区三区免费大片 | 国产主播一区二区| 精品88久久久久88久久久| 久久av中文字幕片| 亚洲精品一区二区三区99| 久久99久久久久| 26uuu国产在线精品一区二区| 韩日精品视频一区| 久久青草欧美一区二区三区| 国产福利91精品一区二区三区| 久久婷婷成人综合色| 国产xxx精品视频大全| 国产精品高潮久久久久无| 91色乱码一区二区三区| 亚洲一区二区三区中文字幕在线| 欧美色精品在线视频| 日韩成人免费电影| 精品国内二区三区| 高清久久久久久| 亚洲欧美精品午睡沙发| 欧美在线观看一区二区| 日本在线不卡视频一二三区| 精品人伦一区二区色婷婷| 国产一区二区三区蝌蚪| 国产精品午夜在线观看| 色哦色哦哦色天天综合| 亚洲国产精品尤物yw在线观看| 日韩一区二区三区四区| 国产精品综合在线视频| 亚洲视频你懂的| 91精品一区二区三区久久久久久| 久久9热精品视频| 国产精品第五页| 69成人精品免费视频| 国产精品18久久久久久久久久久久| 国产精品福利av| 欧美性一区二区| 精东粉嫩av免费一区二区三区| 中文字幕国产一区| 欧美日本在线播放| 国产成人免费av在线| 亚洲综合久久久久| 精品国产3级a| 色狠狠色狠狠综合| 国产一区亚洲一区| 亚洲在线视频网站| 久久这里只有精品视频网| 日本高清无吗v一区| 日韩成人精品在线| 亚洲图片欧美激情| 欧美大黄免费观看| 色婷婷av一区二区三区软件| 另类专区欧美蜜桃臀第一页| 亚洲欧美在线高清| 欧美va亚洲va香蕉在线| 色欧美片视频在线观看在线视频| 久草热8精品视频在线观看| 亚洲欧美偷拍卡通变态| 精品99久久久久久| 欧美丝袜丝交足nylons| 国产成人啪免费观看软件| 亚洲成人免费影院| 中文字幕在线观看一区二区| 欧美成人a∨高清免费观看| 91久久精品一区二区三| 国产九色sp调教91| 免费欧美日韩国产三级电影| 亚洲女同ⅹxx女同tv| 久久久国产一区二区三区四区小说 |