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

📄 ata.lst

📁 HardDiskUSBconnectsourcecode
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   ATA                                                                  05/22/2009 15:28:37 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE ATA
OBJECT MODULE PLACED IN ATA.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ATA.C BROWSE INCDIR(.\INCLUDE;D:\ch9\include\) DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #include <stdio.h >
   4          #include "Typedef.h"
   5          #include "AT89C51SND.h"
   6          #include "config.h"
   7          #include "constant.h"
   8          #include "global.h"
   9          #include "macro.h"
  10          #include "external.h"
  11          #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(char u8Reset)
  40          {
  41   1              gATACapacity = 0; 
  42   1              ATA_RESET();
  43   1              msDelay(5);
  44   1              msDelay(5);
  45   1              msDelay(5);
  46   1              WriteReg(DRV_HEAD,0xa0);
  47   1              
  48   1              ATAWaitCardReady(1500);
  49   1              gATACapacity = ATACapacity();
  50   1              
  51   1      }
*** WARNING C280 IN LINE 39 OF ATA.C: 'u8Reset': unreferenced local variable
C51 COMPILER V8.05a   ATA                                                                  05/22/2009 15:28:37 PAGE 2   

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

 105           **************************************************************************/
 106          /*wait BSY=0,DRDY=1*/
 107          UINT8  ATAWaitCardReady(UINT16 timeout)
 108          {
 109   1              UINT8 temp;
 110   1              gTB = 0;
 111   1              do {     
 112   2                       temp=ReadReg(ALT_STATUS);
 113   2                       //if ( (temp & 0x01)||(gTB>=timeout) ) return 1;//error 
 114   2              } while((temp & 0xC0)!=0x40); 
 115   1              gTB = 0;
 116   1              do {     
 117   2                       temp=ReadReg(STATUS);
 118   2                       //if ( (temp & 0x01)||(gTB>=timeout) ) return 1;
 119   2              } while((temp & 0xC0)!=0x40);
 120   1      
 121   1              return 0;
 122   1      }
*** WARNING C280 IN LINE 107 OF ATA.C: 'timeout': unreferenced local variable
 123          
 124          /**************************************************************************
 125           *  Function Name:ATAReadID                                                                               
             -                            
 126           *                                                                                                        
             -                           
 127           *  Descriptions:                                                         
 128           *                                                                        
 129           *  Arguments:                                                            
 130           *                                                                        
 131           *  Returns: None                                                                                         
             -                       
 132           **************************************************************************/
 133          
 134          void    ATAReadID(void)
 135          {
 136   1              ATAWaitCardReady(6000);
 137   1              WriteReg(DRV_HEAD,0XA0);
 138   1              WriteReg(COMMAND,0XEC);
 139   1              ATAWaitDataReady();
 140   1              Read1Sector();  
 141   1              ATAWaitCardReady(6000);
 142   1      
 143   1      }
 144          
 145          /**************************************************************************
 146           *  Function Name:ATACapacity                                                                             
             -                              
 147           *                                                                                                        
             -                           
 148           *  Descriptions:                                                         
 149           *                                                                        
 150           *  Arguments:                                                            
 151           *                                                                        
 152           *  Returns: None                                                                                         
             -                       
 153           **************************************************************************/
 154          UINT32 ATACapacity(void)
 155          {
 156   1              LongByte lbTotal ;
 157   1              ATAReadID() ;
 158   1              lbTotal.BYTE.B3=DMA_BUF[123];
 159   1              lbTotal.BYTE.B2=DMA_BUF[122];
C51 COMPILER V8.05a   ATA                                                                  05/22/2009 15:28:37 PAGE 4   

 160   1              lbTotal.BYTE.B1=DMA_BUF[121];
 161   1              lbTotal.BYTE.B0=DMA_BUF[120];
 162   1              return(lbTotal.ULONG);
 163   1      
 164   1      }
 165          
 166          /**************************************************************************
 167           *  Function Name:ATAGetCapacity                                                                          
             -                                 
 168           *                                                                                                        
             -                           
 169           *  Descriptions:                                                         
 170           *                                                                        
 171           *  Arguments:                                                            
 172           *                                                                        
 173           *  Returns: None                                                                                         
             -                       
 174           **************************************************************************/
 175          UINT32 ATAGetCapacity(void)
 176          {
 177   1              return gATACapacity;
 178   1      }
 179          
 180          /**************************************************************************
 181           *  Function Name:ATAMultipleRead                                                                         
             -                                  
 182           *                                                                                                        
             -                           
 183           *  Descriptions:                                                         
 184           *                                                                        
 185           *  Arguments:                                                            
 186           *                                                                        
 187           *  Returns: None                                                                                         
             -                       
 188           **************************************************************************/
 189          UINT8 ATAMultipleRead(UINT32 u32SectorNo)
 190          {       
 191   1              UINT8   i,j,Fcnt;
 192   1              UINT16  bcnt=0;
 193   1              bit begin_ping_pong=0;
 194   1              union 
 195   1              {       
 196   1              UINT32 sn; 
 197   1              UINT8  secno[4]; 
 198   1              } s;    
 199   1              s.sn=u32SectorNo;
 200   1              if (ATAWaitCardReady(5000)) {
 201   2                      
 202   2                      return 1;
 203   2              }
 204   1              //printf("ATAWaitCardReady\n");
 205   1             // printf("gSectors:%d",gSectors);
 206   1              WriteReg(DRV_HEAD,((s.secno[0] & 0x0f) | 0xE0));
 207   1              WriteReg(CYH,(s.secno[1]));
 208   1              WriteReg(CYL,(s.secno[2]));
 209   1              WriteReg(SN, (s.secno[3]));
 210   1              WriteReg(SC,gSectors);
 211   1              WriteReg(COMMAND,0X20); 
 212   1              //printf("writeREG0k\n");
 213   1              for(i=0;i<gSectors;i++)//how many sector must to read

⌨️ 快捷键说明

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