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

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

?? storage.lst

?? 增強型51單片機fs7821sd卡、mmc卡讀寫程序
?? LST
字號:
C51 COMPILER V7.02b   STORAGE                                                              02/01/2007 10:35:43 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE STORAGE
OBJECT MODULE PLACED IN .\Output\Storage.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Storage.c OPTIMIZE(9,SPEED) BROWSE INCDIR(Include) DEFINE(READER) DEBUG OBJ
                    -ECTEXTEND PRINT(.\Output\Storage.lst) OBJECT(.\Output\Storage.obj)

stmt level    source

   1          /*
   2          **********************************************************************************************
   3          * Project:      TK7821
   4          * File:         Storage.c
   5          * Contents: 
   6          *          The storage access wrapper 
   7          *
   8          * $Date: 02/25/05    Jason    v0.1
   9          *        05/12/05    Mingo    v0.2   www.fameg.com
  10          *
  11          * Copyright (c) 2005 Fameg, Inc. All rights reserved
  12          ***********************************************************************************************
  13          */
  14          
  15          #include <reg51.h>
  16          #include <string.h>
  17          #include "Device.h"
  18          #include "UsbDisk.h"
  19          #include "Storage.h"
  20          #include "ScsiCmd.h"
  21          #include "FlashDisk.h"
  22          
  23          bit AccessStatus;          // ??? what for ??? 
  24          bit AccessWritable = false;// ??? what for ??? 
  25          BYTE AccessDevice;         // ??? what for ??? 
  26          BYTE CmdTimer;
  27          
  28          BYTE LastDevice;
  29          idata BYTE DeviceType[MAX_DEVICE_NUM];
  30          
  31          UINT16 CopyBuffer = DMA_BUFFER2; // Address of temporary block copy buffer
  32          UINT16 CurrentBuffer;
  33          bit Authenticated = false;
  34          xdata TDeviceInfo DeviceInfo;
  35          xdata TConfigData ConfigData;
  36          idata STATUS SdMediaStatus = STATUS_NO_MEDIA;
  37          
  38          //----------------------------------------------------------------------------
  39          // Description:
  40          //   Initiate the storage interfaces
  41          //----------------------------------------------------------------------------
  42          void StorageInit()
  43          {
  44   1        LastDevice = 0;
  45   1        CurrentBuffer = DMA_BUFFER0;
  46   1      
  47   1        // Init Parameters.
  48   1        memset((BYTE xdata *)ConfigData.ReadOnly, 0, MAX_DEVICE_NUM); //不可去除此條語句,否則會導致SD卡成寫保護
             -模式,只能讀不能寫也不能刪除文件
  49   1      
  50   1        SdInit();
  51   1        DeviceType[LastDevice] = DEVICE_SD;
  52   1      }
  53          
C51 COMPILER V7.02b   STORAGE                                                              02/01/2007 10:35:43 PAGE 2   

  54          //--------------------------------------------------------------------
  55          // Make the storage devices into suspend mode
  56          //--------------------------------------------------------------------
  57          void StorageSuspend()
  58          {
  59   1          SdSuspend();
  60   1      }
  61          
  62          //--------------------------------------------------------------------
  63          // Make the storage devices resume
  64          //--------------------------------------------------------------------
  65          void StorageResume()
  66          {
  67   1          SdResume(); // Resume SD first or CF will fail
  68   1      }
  69          
  70          //----------------------------------------------------------------------------
  71          // Description:
  72          //   Get the next buffer address
  73          //----------------------------------------------------------------------------
  74          UINT16 GetNextBuffer(UINT16 Buffer)
  75          {
  76   1        if (((TDataCast *)&Buffer)->ucByte[0] == (DMA_BUFFER0 >> 8))
  77   1          return DMA_BUFFER1;
  78   1        else
  79   1          return DMA_BUFFER0;
  80   1      }
  81          
  82          //---------------------------------------------------------------------------
  83          // Used to change device STATUS when StartStopUint "Start" cmd issued 
  84          //---------------------------------------------------------------------------
  85          void StorageStart()
  86          {   
  87   1              SdStart(); 
  88   1      }
  89          
  90          //---------------------------------------------------------------------------
  91          // Used to change device STATUS when StartStopUint "Stop" cmd issued
  92          //---------------------------------------------------------------------------
  93          void StorageEject()
  94          { 
  95   1              SdEject();       
  96   1      }
  97          
  98          //----------------------------------------------------------------------------
  99          //   Query one storage device for status
 100          //----------------------------------------------------------------------------
 101          STATUS QueryDevice()
 102          {
 103   1          xdata BYTE Status;
 104   1      
 105   1          switch (DeviceType[ScsiLun])
 106   1          {
 107   2              case DEVICE_SD: Status = SdQueryDevice(); break;
 108   2              default:
 109   2                  return STATUS_PARAM_ERROR;
 110   2          }
 111   1      
 112   1          if(ConfigData.ReadOnly[ScsiLun])
 113   1              DeviceInfo.WriteProtect = true;
 114   1      
 115   1          return Status;
C51 COMPILER V7.02b   STORAGE                                                              02/01/2007 10:35:43 PAGE 3   

 116   1      }
 117          
 118          //----------------------------------------------------------------------------
 119          //   Storage sector read routine
 120          //----------------------------------------------------------------------------
 121          STATUS ReadSector()
 122          {
 123   1          BYTE Status;
 124   1      
 125   1          AccessStatus = true; 
 126   1          AccessDevice = ScsiLun;
 127   1          CurrentBuffer = GetNextBuffer(CurrentBuffer);
 128   1      
 129   1          switch (DeviceType[ScsiLun])
 130   1          {
 131   2              case DEVICE_SD: Status = SdReadSector(); break;
 132   2              default:
 133   2                  return STATUS_PARAM_ERROR;
 134   2          }
 135   1          return Status;
 136   1      }
 137          
 138          //----------------------------------------------------------------------------
 139          //   Storage next sector read routine
 140          //----------------------------------------------------------------------------
 141          STATUS ReadNextSector()
 142          {
 143   1          BYTE Status;
 144   1        
 145   1          CurrentBuffer = GetNextBuffer(CurrentBuffer);
 146   1      
 147   1          switch (DeviceType[ScsiLun])
 148   1          {
 149   2              case DEVICE_SD: Status = SdReadNextSector(); break;
 150   2              default:
 151   2                  return STATUS_PARAM_ERROR;
 152   2          }
 153   1          return Status;
 154   1      }
 155          
 156          //----------------------------------------------------------------------------
 157          //   Storage sector write routine
 158          //----------------------------------------------------------------------------
 159          STATUS WriteSector()
 160          {
 161   1          BYTE Status;
 162   1      
 163   1          AccessStatus = true;
 164   1          AccessDevice = ScsiLun;
 165   1      
 166   1          switch (DeviceType[ScsiLun])
 167   1          {
 168   2              case DEVICE_SD: Status = SdWriteSector(); break;
 169   2              default:
 170   2                  Status = STATUS_PARAM_ERROR;
 171   2          }
 172   1          return Status;
 173   1      }
 174          
 175          //----------------------------------------------------------------------------
 176          //   Storage next sector write routine
 177          //----------------------------------------------------------------------------
C51 COMPILER V7.02b   STORAGE                                                              02/01/2007 10:35:43 PAGE 4   

 178          STATUS WriteNextSector()
 179          {
 180   1          BYTE Status;
 181   1      
 182   1          switch (DeviceType[ScsiLun])
 183   1          {
 184   2              case DEVICE_SD: Status = SdWriteNextSector(); break;
 185   2              default:
 186   2                  Status = STATUS_PARAM_ERROR;
 187   2          }
 188   1          return Status;
 189   1      }
 190          
 191          
 192          UINT32 ConvertEndian32(UINT32 Src)
 193          {
 194   1        UINT32 Des;
 195   1        PBYTE pSrc = (PBYTE)(&Src);
 196   1        PBYTE pDesc = (PBYTE)(&Des);
 197   1              
 198   1        pDesc[0] = pSrc[3];   
 199   1        pDesc[1] = pSrc[2];   
 200   1        pDesc[2] = pSrc[1];
 201   1        pDesc[3] = pSrc[0];   
 202   1        
 203   1        return Des; 
 204   1      }
 205          
 206          //----------------------------------------------------------------------------
 207          // Convert Big/Little endian to Little/Big endian, UINT16 applyed. 
 208          //  (Due to Keil simulation result,system was Big Endian)
 209          //----------------------------------------------------------------------------
 210          UINT16 ConvertEndian16(UINT16 Src)
 211          {
 212   1        UINT16 Des;
 213   1        PBYTE pSrc = (PBYTE)(&Src);
 214   1        PBYTE pDesc = (PBYTE)(&Des);
 215   1              
 216   1        pDesc[0] = pSrc[1];   
 217   1        pDesc[1] = pSrc[0];   
 218   1      
 219   1        return Des; 
 220   1      }    
 221          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    389    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     32       1
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7      30
   IDATA SIZE       =      2    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区视频免费| 在线播放91灌醉迷j高跟美女| 亚洲福利一二三区| 亚洲美女免费视频| 亚洲欧美另类小说| 一区二区成人在线视频| 一区二区三区欧美亚洲| 亚洲自拍都市欧美小说| 亚洲综合另类小说| 视频一区中文字幕| 日韩激情在线观看| 精品一二线国产| 国产成人av网站| 成人app软件下载大全免费| www.亚洲激情.com| av高清久久久| 欧美午夜精品久久久久久超碰| 欧美影院一区二区三区| 欧美情侣在线播放| 欧美va亚洲va香蕉在线| 日本一区免费视频| 亚洲黄色免费网站| 日韩精品欧美精品| 成人做爰69片免费看网站| 成人免费毛片app| 在线日韩av片| 久久综合中文字幕| 亚洲欧美另类图片小说| 日韩国产精品久久久| 国产黄色精品视频| 欧美性生活大片视频| 精品动漫一区二区三区在线观看| 欧美国产精品一区二区三区| 一级女性全黄久久生活片免费| 亚洲成av人片一区二区| 久88久久88久久久| 97久久精品人人澡人人爽| 在线播放国产精品二区一二区四区| 精品黑人一区二区三区久久| 一区二区三区中文字幕| 三级一区在线视频先锋 | 亚洲欧美一区二区三区国产精品 | eeuss鲁一区二区三区| 欧美日韩精品专区| 国产欧美一区二区在线观看| 婷婷丁香久久五月婷婷| 成a人片亚洲日本久久| 欧美精选一区二区| 国产精品福利av | 久久精品视频一区| 香蕉成人啪国产精品视频综合网| 国产.欧美.日韩| 日韩一级片网址| 亚洲一线二线三线视频| www.欧美日韩| 久久蜜臀中文字幕| 免费看欧美美女黄的网站| 91麻豆精品在线观看| 国产婷婷色一区二区三区在线| 免费观看在线综合| 7777精品伊人久久久大香线蕉经典版下载| 国产欧美综合色| 国产精品一级片在线观看| 日韩欧美一级特黄在线播放| 天天色天天爱天天射综合| 色老综合老女人久久久| 中文字幕一区二区三区不卡在线 | 91精品久久久久久久99蜜桃| 亚洲女同女同女同女同女同69| 国产成人小视频| 欧美精品一区二区三区在线| 日本中文一区二区三区| 欧美日韩一区高清| 亚洲一区二区av电影| 色94色欧美sute亚洲13| 亚洲精品乱码久久久久久久久| 成人国产精品免费观看| 国产精品色噜噜| 岛国一区二区在线观看| 国产日韩欧美a| 国产美女久久久久| 亚洲国产精品ⅴa在线观看| 国产精品一区二区在线观看网站| 精品久久久久久久久久久久久久久| 免费观看日韩av| 精品国产不卡一区二区三区| 国产风韵犹存在线视精品| 国产亚洲综合色| 99精品视频中文字幕| 亚洲三级在线免费观看| 欧美日韩一区二区在线观看视频 | 国产高清亚洲一区| 国产精品人人做人人爽人人添| 99久久精品国产观看| 一区二区三区在线免费观看 | 麻豆传媒一区二区三区| 精品国产sm最大网站免费看| 国产成人免费网站| 一区二区三区日韩| 日韩三级视频中文字幕| 成人性视频网站| 亚洲精品国产视频| 欧美一区二区三区免费| 成人午夜大片免费观看| 亚洲一线二线三线视频| 精品国一区二区三区| 99精品黄色片免费大全| 奇米四色…亚洲| 国产精品久久久久影视| 欧美三级电影在线观看| 国产乱码精品1区2区3区| 国产精品毛片久久久久久久| 欧美三级电影网站| 国产成人av电影在线| 亚洲国产aⅴ成人精品无吗| 欧美精品一区二区在线播放| 色综合一个色综合亚洲| 久久成人免费网| 一区二区三区欧美视频| 久久精品人人做人人爽97| 欧美日韩国产欧美日美国产精品| 国产99久久久国产精品潘金网站| 亚洲第一激情av| 国产精品久久三| 精品久久久久久无| 欧美老肥妇做.爰bbww视频| 成人深夜视频在线观看| 精品一区二区在线视频| 亚洲国产成人av网| 亚洲乱码中文字幕| 精品国产乱码久久久久久浪潮| 色婷婷久久久久swag精品| 久久精品国产精品亚洲红杏| 亚洲r级在线视频| 国产精品高潮久久久久无| 精品日韩欧美一区二区| 欧美日韩黄视频| 在线观看亚洲一区| 色综合久久久久综合99| 成人午夜精品一区二区三区| 国产乱人伦偷精品视频免下载 | 日韩一区二区在线免费观看| 色综合一个色综合亚洲| av不卡免费电影| 成人av综合一区| 国产91精品久久久久久久网曝门| 久久成人麻豆午夜电影| 日本免费在线视频不卡一不卡二| 亚洲国产精品欧美一二99| 亚洲精品久久久久久国产精华液| 国产精品久久久久久久久晋中 | 水野朝阳av一区二区三区| 一个色综合av| 亚洲综合激情网| 亚洲成人自拍一区| 偷拍自拍另类欧美| 日韩成人一级片| 久久66热re国产| 国产在线不卡一区| 国产乱码精品一区二区三| 国产成人午夜片在线观看高清观看| 国产suv精品一区二区883| 成熟亚洲日本毛茸茸凸凹| av电影一区二区| 在线观看视频欧美| 91精品国产美女浴室洗澡无遮挡| 欧美日韩成人一区二区| 日韩一级在线观看| 日本一区二区三区久久久久久久久不| 精品国产一区久久| **欧美大码日韩| 亚洲国产精品久久艾草纯爱| 青青草精品视频| 国产麻豆精品theporn| 91亚洲永久精品| 欧美色倩网站大全免费| 日韩欧美国产三级电影视频| 久久久久久久久久久电影| 亚洲欧美综合另类在线卡通| 亚洲第一主播视频| 狠狠色丁香婷婷综合久久片| www.日本不卡| 欧美一区二区三区男人的天堂 | 成人av影院在线| 欧美日韩在线免费视频| 亚洲精品在线一区二区| 亚洲欧美日韩电影| 日韩精品免费视频人成| 成人看片黄a免费看在线| 在线精品亚洲一区二区不卡| 精品国产凹凸成av人网站| 亚洲综合色丁香婷婷六月图片| 国内成人免费视频| 91国偷自产一区二区三区成为亚洲经典 | 极品瑜伽女神91| 国产一区二区电影| 久久影院电视剧免费观看| 欧美极品另类videosde| 亚洲一区二区视频| 欧美写真视频网站|