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

📄 ideio.lst

📁 atmel at89c51snd1c mp3芯片方案源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   IDEIO                                                                 11/28/2007 08:34:16 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE IDEIO
OBJECT MODULE PLACED IN ideio.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE lib_mcu\ide\ideio.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\ideio.lst) OBJE
                    -CT(ideio.obj)

line level    source

   1          /*C**************************************************************************
   2          * NAME:         ideio.c         
   3          *----------------------------------------------------------------------------
   4          * Copyright (c) 2003 Atmel.
   5          *----------------------------------------------------------------------------
   6          * RELEASE:      snd1c-refd-nf-4_0_3      
   7          * REVISION:     1.21     
   8          *----------------------------------------------------------------------------
   9          * PURPOSE:
  10          * 
  11          *****************************************************************************/
  12          
  13          
  14          /*_____ I N C L U D E S ____________________________________________________*/
  15          #include "config.h"                         /* system configuration */
  16          #include "ideio.h"
  17          #include "..\usb\usb_drv.h"                 /* usb driver definition */
  18          #include "lib_mcu\lcd\lcd_drv.h"                /* c51 driver definition */
  19          //#include "lib_mcu\serial\serial.h"
  20          
  21          #define Usb_clear_RXOUTB0()  {if(UEPSTAX & 0x42)  UEPSTAX &= 0xbd;}
  22          
  23          extern  bdata bit     gl_hdd_buffer_flag;
  24          extern  xdata Byte    gl_hdd_buffer[512];
  25          extern  xdata Byte    fat_buf_sector[512];
  26          extern  xdata uint    gl_hdd_buffer_ptr; //hdd_buffer[]的序列号
  27          extern data   Uint32  dCBWDataTransferLength;
  28          extern  data  Uint16  hdd_data_length;
  29          
  30          data  Uint32          hdd_current_sector;
  31          
  32          extern uchar   HDD_MANUFACTURER_ID[8];
  33          extern uchar   HDD_PRODUCT_ID[16];
  34          //extern uchar   HDD_REVITION[4];
  35          
  36          extern  void usb_mass_storage_csw (void);
  37          
  38          
  39          /**********************************************************
  40          *函数名称:void DriveID(void)                              *
  41          *用途:读硬盘ID                                            *
  42          ***********************************************************/ 
  43          void DriveID(void) 
  44          {
  45   1       uint i;
  46   1      
  47   1       do{ACC=FILE7;}while(BSY);
  48   1          FILE7=0xec;
  49   1      
  50   1       do{ACC=FILE7;}while(BSY|!DRQ);
  51   1      
  52   1          for (i = 0; i<512;)
  53   1            {
  54   2                  gl_hdd_buffer[i++]=FILE0;
C51 COMPILER V7.50   IDEIO                                                                 11/28/2007 08:34:16 PAGE 2   

  55   2              gl_hdd_buffer[i++]=DAT16H;
  56   2            }
  57   1      
  58   1        HDD_MANUFACTURER_ID[1] = gl_hdd_buffer[54];
  59   1        HDD_MANUFACTURER_ID[0] = gl_hdd_buffer[55];
  60   1        HDD_MANUFACTURER_ID[3] = gl_hdd_buffer[56];
  61   1        HDD_MANUFACTURER_ID[2] = gl_hdd_buffer[57];
  62   1        HDD_MANUFACTURER_ID[5] = gl_hdd_buffer[58];
  63   1        HDD_MANUFACTURER_ID[4] = gl_hdd_buffer[59];
  64   1        HDD_MANUFACTURER_ID[7] = gl_hdd_buffer[60];
  65   1        HDD_MANUFACTURER_ID[6] = gl_hdd_buffer[61];
  66   1      
  67   1        HDD_PRODUCT_ID[1] = gl_hdd_buffer[62];
  68   1        HDD_PRODUCT_ID[0] = gl_hdd_buffer[63];
  69   1        HDD_PRODUCT_ID[3] = gl_hdd_buffer[64];
  70   1        HDD_PRODUCT_ID[2] = gl_hdd_buffer[65];
  71   1        HDD_PRODUCT_ID[5] = gl_hdd_buffer[66];
  72   1        HDD_PRODUCT_ID[4] = gl_hdd_buffer[67];
  73   1        HDD_PRODUCT_ID[7] = gl_hdd_buffer[68];
  74   1        HDD_PRODUCT_ID[6] = gl_hdd_buffer[69];
  75   1        HDD_PRODUCT_ID[9] = gl_hdd_buffer[70];
  76   1        HDD_PRODUCT_ID[8] = gl_hdd_buffer[71];
  77   1        HDD_PRODUCT_ID[11] = gl_hdd_buffer[72];
  78   1        HDD_PRODUCT_ID[10] = gl_hdd_buffer[73];
  79   1        HDD_PRODUCT_ID[13] = gl_hdd_buffer[74];
  80   1        HDD_PRODUCT_ID[12] = gl_hdd_buffer[75];
  81   1        HDD_PRODUCT_ID[15] = gl_hdd_buffer[76];
  82   1        HDD_PRODUCT_ID[14] = gl_hdd_buffer[77];
  83   1      
  84   1      }
  85          
  86          
  87          
  88          
  89          /*********************************************************
  90          *函数名称:WriteCommand(command)                          *
  91          *函数用途:写命令                                         *
  92          **********************************************************/
  93          WriteCommand(command)
  94          {
  95   1       do{ACC = FILE7;}while(BSY);
  96   1       FILE7 = command;
  97   1      }
  98          
  99          /**********************************************************
 100          *函数名称:bit  ata_install(void)                          *
 101          *用途:初始化硬盘                                          *
 102          ***********************************************************/
 103          bit  ata_install(void)
 104          {
 105   1       INTQ = 1;
 106   1       ARST = 0;
 107   1      
 108   1       ARST = 1;
 109   1      
 110   1       AUXR = 0x5c;         //设置EXT16=1,使能16-BIT传送模式
 111   1      
 112   1       do{FILE6 = 0xa0; ACC = FILE7;} while(!DRDY | BSY);
 113   1          FILE6 = 0x20;
 114   1          FILE2 = 64;
 115   1          FILE7 = 0x91;
 116   1      
C51 COMPILER V7.50   IDEIO                                                                 11/28/2007 08:34:16 PAGE 3   

 117   1       do{ACC = FILE7;} while(BSY);
 118   1          FILE7 = 0x10;
 119   1      
 120   1       do{ACC = FILE7;} while(BSY); 
 121   1      
 122   1       DriveID();
 123   1      
 124   1      return OK;
 125   1      }
 126          
 127          /**********************************************************
 128          *函数名称:HardDiskSleep(void)                             *
 129          *用途:硬盘休眠                                            *
 130          ***********************************************************/
 131          void HardDiskSleep(void)
 132          {
 133   1       do{ACC = FILE7;} while(BSY); //wait for NO busy
 134   1       WriteCommand(0xe0);   //write command code
 135   1      // do{ACC = FILE7;} while(BSY |! DRQ); //wait for noBUSY and data request
 136   1      }
 137          /**********************************************************
 138          *函数名称:bit hdd_read_open(Uint32 hdd_sector)            *
 139          *用途:读硬盘OPEN动作                                      *
 140          ***********************************************************/ 
 141          bit hdd_read_open(Uint32 hdd_sector)
 142          {   
 143   1         uint i = 0;
 144   1         uchar head,cylinderh,cylinderl,sector;
 145   1         hdd_current_sector = hdd_sector;
 146   1         head      = ((Byte*)&hdd_current_sector)[0];
 147   1         cylinderh = ((Byte*)&hdd_current_sector)[1];
 148   1         cylinderl = ((Byte*)&hdd_current_sector)[2];
 149   1         sector    = ((Byte*)&hdd_current_sector)[3];
 150   1         do{ACC = FILE7;} while(BSY); //wait for NO busy
 151   1           FILE6 = (0xe0 | (head & 0x0f)); 
 152   1           FILE5 = cylinderh;    //high 2-bit cylinder
 153   1           FILE4 = cylinderl;    //low 8-bit cylinder
 154   1           FILE3 = sector;       //start sector
 155   1           FILE2 = 0x01;         //sector counter
 156   1           WriteCommand(0x20);   //write command code
 157   1       
 158   1         do{ACC = FILE7;} while(BSY |! DRQ); //wait for noBUSY and data request
 159   1      
 160   1         ACC = FILE7;
 161   1         if (ERR)
 162   1           return KO;
 163   1      
 164   1         for (i = 0; i<512;)
 165   1            {
 166   2                  gl_hdd_buffer[i++]=FILE0;
 167   2              gl_hdd_buffer[i++]=DAT16H;
 168   2            }
 169   1      
 170   1            gl_hdd_buffer_ptr = 0;
 171   1                gl_hdd_buffer_flag = 1;
 172   1                return OK;
 173   1      
 174   1      }
 175          
 176          
 177          /**********************************************************
 178          *函数名称:Byte hdd_read_byte(void)                        *
C51 COMPILER V7.50   IDEIO                                                                 11/28/2007 08:34:16 PAGE 4   

 179          *用途:读硬盘缓存中的一个字节                              *
 180          ***********************************************************/ 
 181          Byte hdd_read_byte(void)
 182          {
 183   1       gl_hdd_buffer_ptr++;
 184   1       
 185   1       if (gl_hdd_buffer_ptr > 512)  
 186   1         {
 187   2          gl_hdd_buffer_ptr = 0;
 188   2          hdd_current_sector +=1;
 189   2          hdd_read_open(hdd_current_sector);
 190   2          gl_hdd_buffer_ptr++;
 191   2         }
 192   1      
 193   1       return (gl_hdd_buffer[gl_hdd_buffer_ptr - 1]);
 194   1      }
 195          
 196          
 197          /**********************************************************
 198          *函数名称:bit hdd_read_close(void)                        *
 199          *用途:读硬盘CLOSE动作                                     *
 200          ***********************************************************/ 
 201          bit hdd_read_close(void)
 202          {  
 203   1         gl_hdd_buffer_flag = 0;
 204   1         gl_hdd_buffer_ptr = 0;
 205   1         return OK;
 206   1      }
 207          
 208          
 209          /**********************************************************
 210          *函数名称:bit hdd_read_one_sector(Uint32 hdd_sector)      *
 211          *用途:将硬盘中一个扇区的数据送入USB接口                   *
 212          ***********************************************************/ 
 213          bit hdd_read_one_sector(Uint32 hdd_sector)
 214          {
 215   1        Byte i;
 216   1      
 217   1       if (hdd_read_open(hdd_sector) == OK)
 218   1       {
 219   2        for (i = 0; i < 8; i++)
 220   2           {
 221   3            Usb_select_ep(EP_IN);
 222   3                            /* read 64 bytes from card */
 223   3              Usb_write_byte(hdd_read_byte());        
 224   3              Usb_write_byte(hdd_read_byte());
 225   3              Usb_write_byte(hdd_read_byte());        
 226   3              Usb_write_byte(hdd_read_byte());
 227   3              Usb_write_byte(hdd_read_byte());        
 228   3              Usb_write_byte(hdd_read_byte());
 229   3              Usb_write_byte(hdd_read_byte());        
 230   3              Usb_write_byte(hdd_read_byte());
 231   3              Usb_write_byte(hdd_read_byte());        
 232   3              Usb_write_byte(hdd_read_byte());
 233   3              Usb_write_byte(hdd_read_byte());        
 234   3              Usb_write_byte(hdd_read_byte());
 235   3              Usb_write_byte(hdd_read_byte());        
 236   3              Usb_write_byte(hdd_read_byte());

⌨️ 快捷键说明

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