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

📄 ata.lst

📁 ATMEL AT89C51SND1 IDE TO USB READER
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   ATA                                                                   11/03/2008 13:09:04 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ATA
OBJECT MODULE PLACED IN ATA.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ATA.C OPTIMIZE(9,SPEED) BROWSE INCDIR(D:\IDE_demo_code\INCLUDE\) DEBUG OBJE
                    -CTEXTEND PRINT(.\LST\ATA.lst)

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #include <stdio.h >
   4          #include "include\Typedef.h"
   5          #include "include\AT89C51SND.h"
   6          #include "include\config.h"
   7          #include "include\constant.h"
   8          #include "include\global.h"
   9          #include "include\macro.h"
  10          #include "include\external.h"
  11          #include "include\gpio.h"
  12          
  13          /**************************************************************************
  14          *                           C O N S T A N T S
  15          *************************************************************************/
  16          
  17          /**************************************************************************
  18          *                              M A C R O S
  19          *************************************************************************/
  20          
  21          /**************************************************************************
  22          *                          D A T A    T Y P E S
  23          *************************************************************************/
  24          
  25          /**************************************************************************
  26          *                         G L O B A L    D A T A
  27          *************************************************************************/
  28          
  29          
  30          /**************************************************************************
  31          *  Function Name:                                                                                         
             -                  
  32          *                                                                                                         
             -                          
  33          *  Descriptions:                                                         
  34          *                                                                        
  35          *  Arguments:                                                            
  36          *                                                                        
  37          *  Returns: None                                                                                          
             -                      
  38          **************************************************************************/
  39          void ATAInit()
  40          {
  41   1              gATACapacity = 0; 
  42   1              ATA_RESET();
  43   1              msDelay();
  44   1              msDelay();
  45   1              msDelay();
  46   1              WriteReg(DRV_HEAD,0xa0);
  47   1      
  48   1              ATAWaitCardReady();
  49   1              gATACapacity = ATACapacity();
  50   1              printf("%08lu\n",gATACapacity);
  51   1      
C51 COMPILER V7.50   ATA                                                                   11/03/2008 13:09:04 PAGE 2   

  52   1      }
  53          /**************************************************************************
  54          *  Function Name:                                                                                         
             -                  
  55          *                                                                                                         
             -                          
  56          *  Descriptions:                                                         
  57          *                                                                        
  58          *  Arguments:                                                            
  59          *                                                                        
  60          *  Returns: None                                                                                          
             -                      
  61          **************************************************************************/
  62          void ATA_RESET(void)
  63          {       
  64   1              P4_5=0;
  65   1              msDelay();
  66   1              msDelay();
  67   1              msDelay();
  68   1              P4_5=1;
  69   1      
  70   1      }
  71          /**************************************************************************
  72          *  Function Name:                                                                                         
             -                  
  73          *                                                                                                         
             -                          
  74          *  Descriptions:                                                         
  75          *                                                                        
  76          *  Arguments:                                                            
  77          *                                                                        
  78          *  Returns: None                                                                                          
             -                      
  79          **************************************************************************/
  80          UINT8  ATAWaitDataReady(void)
  81          {
  82   1              UINT8 temp;
  83   1              gTB = 0;
  84   1              do {     temp=ReadReg(ALT_STATUS);
  85   2              if ( (temp & 0x01)||(gTB>=10000) ) return temp;
  86   2              } while((temp & 0x89)!=0x08);           //[11/08]
  87   1              gTB = 0;  
  88   1              do {     
  89   2                      temp=ReadReg(STATUS);
  90   2      
  91   2                      if ( (temp & 0x01)||(gTB>=10000) ) return temp;
  92   2              } while((temp & 0x89)!=0x08);           //[11/08]
  93   1      
  94   1              return 0;
  95   1      
  96   1      }
  97          
  98          /**************************************************************************
  99          *  Function Name:                                                                                         
             -                  
 100          *                                                                                                         
             -                          
 101          *  Descriptions:                                                         
 102          *                                                                        
 103          *  Arguments:                                                            
 104          *                                                                        
 105          *  Returns: None                                                                                          
C51 COMPILER V7.50   ATA                                                                   11/03/2008 13:09:04 PAGE 3   

             -                      
 106          **************************************************************************/
 107          /*wait BSY=0,DRDY=1*/
 108          UINT8  ATAWaitCardReady()
 109          {
 110   1              UINT8 temp;
 111   1              do {     
 112   2                      temp=ReadReg(ALT_STATUS);
 113   2              } while((temp & 0xC0)!=0x40);
 114   1               
 115   1              do {     
 116   2                      temp=ReadReg(STATUS);
 117   2              } while((temp & 0xC0)!=0x40);
 118   1      
 119   1              return 0;
 120   1      }
 121          
 122          /**************************************************************************
 123          *  Function Name:ATAReadID                                                                                
             -                           
 124          *                                                                                                         
             -                          
 125          *  Descriptions:                                                         
 126          *                                                                        
 127          *  Arguments:                                                            
 128          *                                                                        
 129          *  Returns: None                                                                                          
             -                      
 130          **************************************************************************/
 131          
 132          void    ATAReadID(void)
 133          {
 134   1              ATAWaitCardReady();
 135   1              WriteReg(DRV_HEAD,0XA0);
 136   1              WriteReg(COMMAND,0XEC);
 137   1              ATAWaitDataReady();
 138   1              Read1Sector();  
 139   1              ATAWaitCardReady();
 140   1      
 141   1      }
 142          
 143          /**************************************************************************
 144          *  Function Name:ATACapacity                                                                              
             -                             
 145          *                                                                                                         
             -                          
 146          *  Descriptions:                                                         
 147          *                                                                        
 148          *  Arguments:                                                            
 149          *                                                                        
 150          *  Returns: None                                                                                          
             -                      
 151          **************************************************************************/
 152          UINT32 ATACapacity(void)
 153          {
 154   1              LongByte lbTotal ;
 155   1              ATAReadID() ;
 156   1              lbTotal.BYTE.B3=DMA_BUF[123];
 157   1              lbTotal.BYTE.B2=DMA_BUF[122];
 158   1              lbTotal.BYTE.B1=DMA_BUF[121];
 159   1              lbTotal.BYTE.B0=DMA_BUF[120];
 160   1              return(lbTotal.ULONG);
C51 COMPILER V7.50   ATA                                                                   11/03/2008 13:09:04 PAGE 4   

 161   1      }
 162          
 163          /**************************************************************************
 164          *  Function Name:ATAGetCapacity                                                                           
             -                                
 165          *                                                                                                         
             -                          
 166          *  Descriptions:                                                         
 167          *                                                                        
 168          *  Arguments:                                                            
 169          *                                                                        
 170          *  Returns: None                                                                                          
             -                      
 171          **************************************************************************/
 172          UINT32 ATAGetCapacity(void)
 173          {
 174   1              return gATACapacity;
 175   1      }
 176          
 177          /**************************************************************************
 178          *  Function Name:ATAMultipleRead                                                                          
             -                                 
 179          *                                                                                                         
             -                          
 180          *  Descriptions:                                                         
 181          *                                                                        
 182          *  Arguments:                                                            
 183          *                                                                        
 184          *  Returns: None                                                                                          
             -                      
 185          **************************************************************************/
 186          UINT8 ATAMultipleRead(UINT32 u32SectorNo)
 187          {       
 188   1              UINT8   i,j,Fcnt;
 189   1              UINT16  bcnt=0;
 190   1              bit begin_ping_pong=0;
 191   1              union 
 192   1              {       
 193   1                      UINT32 sn; 
 194   1                      UINT8  secno[4]; 
 195   1              } s;    
 196   1              s.sn=u32SectorNo;
 197   1              if (ATAWaitCardReady()) {
 198   2      
 199   2                      return 1;
 200   2              }

⌨️ 快捷键说明

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