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

📄 sd2000.lst

📁 C8051F120 _AD开发过程中的一些代码和文档
💻 LST
字号:
C51 COMPILER V7.06   SD2000                                                                01/02/2000 11:14:25 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SD2000
OBJECT MODULE PLACED IN Sd2000.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Sd2000.c LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<intrins.h>
   2          #include "C8051f.h"
   3          #include "Sd2000.h"
   4          #include "Timer.h"
   5          #include "App.h"
   6          
   7          unsigned char bdata temp_p;
   8          
   9          sbit DD_7 = temp_p^7;
  10          sbit DD_0 = temp_p^0;
  11          
  12          void Start()
  13          {
  14   1              RT_SCL = 0;
  15   1              RT_SDA = 1;
  16   1              Delay5us();
  17   1              RT_SCL = 1;
  18   1              Delay5us();
  19   1              RT_SDA = 0;
  20   1              Delay5us();     
  21   1              RT_SCL = 0;
  22   1      }
  23          
  24          
  25          void Stop()
  26          {
  27   1              RT_SCL = 0;
  28   1              RT_SDA = 0;
  29   1              Delay5us();
  30   1              RT_SCL = 1;
  31   1              Delay5us();
  32   1              RT_SDA = 1;
  33   1              Delay5us();
  34   1              RT_SCL = 0;
  35   1      }
  36          
  37          /***************************************************************************/
  38          /*
  39          void Ack()
  40          {
  41                  RT_SDA = 0;
  42                  RT_SCL = 1;
  43                  Delay5us();
  44                  RT_SCL = 0;
  45                  RT_SDA = 1;
  46                  Delay5us();
  47          }
  48          */
  49          /***************************************************************************/
  50          /*
  51          void NoAck() 
  52          {
  53                  RT_SDA = 1;
  54                  RT_SCL = 1;
  55                  Delay5us();
C51 COMPILER V7.06   SD2000                                                                01/02/2000 11:14:25 PAGE 2   

  56                  RT_SCL = 0;
  57                  Delay5us();
  58          }
  59          */
  60          /***************************************************************************/
  61          void TestAck()
  62          {
  63   1      /*      bit ErrorBit;
  64   1              RT_SDA = 1;
  65   1              RT_SCL = 1;
  66   1              Delay5us();
  67   1              ErrorBit = SDA;
  68   1              RT_SCL = 0;
  69   1              Delay5us();
  70   1              return(ErrorBit);
  71   1              */
  72   1      }
  73          
  74          void SendBit(bit mm)
  75          {
  76   1              RT_SDA = 0;
  77   1              RT_SCL = 0;
  78   1              _nop_();
  79   1              RT_SDA = mm;
  80   1              Delay5us();
  81   1              RT_SCL = 1;
  82   1              Delay5us();
  83   1              RT_SCL = 0;
  84   1      }
  85          
  86          bit LoadBit()
  87          { 
  88   1              bit mm;
  89   1              RT_SDA = 1;
  90   1              RT_SCL = 0;
  91   1              Delay5us();
  92   1      //      mm=SDA;
  93   1      //      delay5us();
  94   1              RT_SCL = 1;
  95   1              Delay5us();
  96   1              mm = RT_SDA;
  97   1              _nop_();
  98   1              RT_SCL = 0;
  99   1              return(mm);
 100   1      }
 101          /***************************************************************************/
 102          void Write8Bit(unsigned char input)
 103          {
 104   1              unsigned char temp_2;
 105   1      
 106   1              temp_p = input;
 107   1              for(temp_2 = 8; temp_2 != 0; temp_2--)
 108   1              {
 109   2      //              SendBit(DD_0);
 110   2                      RT_SDA = 0;
 111   2                      RT_SCL = 0;
 112   2                      _nop_();
 113   2                      RT_SDA = DD_0;
 114   2                      Delay5us();
 115   2              
 116   2                      RT_SCL = 1;
 117   2                      Delay5us();
C51 COMPILER V7.06   SD2000                                                                01/02/2000 11:14:25 PAGE 3   

 118   2              
 119   2                      RT_SCL = 0;
 120   2                      temp_p = temp_p>>1;
 121   2                      
 122   2              }
 123   1      //      LoadBit();
 124   1                      RT_SDA = 1;
 125   1                      RT_SCL = 0;
 126   1                      Delay5us();
 127   1              
 128   1      //      mm=SDA;
 129   1      //      delay5us();
 130   1                      RT_SCL = 1;
 131   1                      Delay5us();
 132   1              
 133   1                      DD_0 = RT_SDA;
 134   1                      _nop_();
 135   1                      RT_SCL=0;
 136   1      }
 137          
 138          /***************************************************************************/
 139          void Write8BitCOMM(unsigned char input)
 140          {
 141   1              unsigned char temp_2;
 142   1      
 143   1              temp_p = input;
 144   1              for(temp_2 = 8; temp_2 != 0; temp_2--)
 145   1              {
 146   2      //              SendBit(DD_7);
 147   2                      RT_SDA = 0;
 148   2                      RT_SCL = 0;
 149   2                      _nop_();
 150   2                      RT_SDA = DD_7;
 151   2                      Delay5us();
 152   2      
 153   2                      RT_SCL = 1;
 154   2                      Delay5us();
 155   2              
 156   2                      RT_SCL = 0;
 157   2                      temp_p = temp_p<<1;
 158   2                      
 159   2              }
 160   1      //      LoadBit();
 161   1              RT_SDA = 1;
 162   1              RT_SCL = 0;
 163   1              Delay5us();
 164   1      
 165   1      //      mm=SDA;
 166   1      //      Delay5us();
 167   1              RT_SCL = 1;
 168   1              Delay5us();
 169   1              
 170   1              DD_0 = RT_SDA;
 171   1              _nop_();
 172   1              RT_SCL = 0;
 173   1      }
 174          
 175          /***************************************************************************/
 176          unsigned char Read8Bit()
 177          {
 178   1              unsigned char temp_2;
 179   1              unsigned char rbyte = 0;
C51 COMPILER V7.06   SD2000                                                                01/02/2000 11:14:25 PAGE 4   

 180   1      
 181   1              for(temp_2 = 8; temp_2 != 0; temp_2--)
 182   1              {
 183   2                      temp_p = temp_p>>1;
 184   2      //              DD_7=LoadBit();
 185   2                      RT_SDA = 1;
 186   2                      RT_SCL = 0;
 187   2                      Delay5us();
 188   2              
 189   2      //      mm=SDA;
 190   2      //              delay5us();
 191   2                      RT_SCL = 1;
 192   2                      Delay5us();
 193   2              
 194   2                      DD_7 = RT_SDA;
 195   2                      _nop_();
 196   2                      RT_SCL = 0;
 197   2              }
 198   1              return(temp_p);
 199   1      }
 200          
 201          void ResetSD()
 202          {
 203   1              EA = 0;
 204   1              Start();
 205   1              Write8BitCOMM(ResetSD2000);
 206   1      //      TestAck();
 207   1              Stop();
 208   1              Delay5us();             
 209   1              EA = 1;
 210   1      }
 211          
 212          void InitSD(void)
 213          {
 214   1              EA = 0;
 215   1              RT_SCL = 0;
 216   1              RT_SDA = 0;
 217   1              Delay5us();
 218   1              Delay5us();
 219   1              if(ReadStateRegSD()>0x7f)
 220   1              {
 221   2                      Delay1ms(200);
 222   2                      if(ReadStateRegSD()>0x7f)
 223   2                      {
 224   3                              ResetSD();
 225   3                      }       
 226   2              }       
 227   1              Delay5us();
 228   1              Delay5us();
 229   1              WriteStateRegSD(0xc0);
 230   1              EA = 1;
 231   1      }
 232          
 233          unsigned char ReadStateRegSD()
 234          {       
 235   1              unsigned tempd;
 236   1              EA = 0;
 237   1              Start();
 238   1              Write8BitCOMM(ReadStateReg);
 239   1      //      TestAck();
 240   1              tempd = Read8Bit();
 241   1              SendBit(0);
C51 COMPILER V7.06   SD2000                                                                01/02/2000 11:14:25 PAGE 5   

 242   1      //      TestAck();
 243   1              Stop();
 244   1              Delay5us();
 245   1              EA = 1;
 246   1              return(tempd);
 247   1      }
 248          
 249          void WriteStateRegSD(unsigned char state)
 250          {
 251   1              EA = 0;
 252   1              Start();
 253   1              Write8BitCOMM(WriteStateReg);
 254   1      //      TestAck();
 255   1              Write8Bit(state);
 256   1      //      TestAck();
 257   1              Stop();
 258   1              Delay5us();
 259   1              EA = 1;
 260   1      }
 261          
 262          void ReadTimeSD(unsigned char *time)
 263          { 
 264   1              unsigned char tempp;
 265   1      
 266   1              EA = 0;
 267   1              Start();
 268   1              Write8BitCOMM(ReadTime);
 269   1      //      TestAck();
 270   1              for(tempp = 0; tempp < 7; tempp++)
 271   1              {
 272   2                      time[tempp] = Read8Bit();
 273   2                      SendBit(0);
 274   2      //              TestAck();
 275   2              }               
 276   1              Stop();
 277   1              Delay5us();
 278   1              EA = 1;
 279   1      }
 280          
 281          void WriteTimeSD(unsigned char * time)
 282          {
 283   1              unsigned char tempp;
 284   1      
 285   1              EA = 0;
 286   1              Start();
 287   1              Write8BitCOMM(WriteTime);
 288   1      //      TestAck();
 289   1              for(tempp = 0; tempp<7; tempp++)
 290   1              {
 291   2                      Write8Bit(time[tempp]);
 292   2      //              TestAck();              
 293   2              }
 294   1              Stop();
 295   1              Delay5us();
 296   1              EA = 1;
 297   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    610    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     17    ----
C51 COMPILER V7.06   SD2000                                                                01/02/2000 11:14:25 PAGE 6   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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