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

📄 ch375hf4.lst

📁 USB 1.1 U Device for CH375 & USB 2.0 for CH375A 读写usb超精简的程序
💻 LST
字号:
C51 COMPILER V7.20   CH375HF4                                                              11/10/2005 21:58:36 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE CH375HF4
OBJECT MODULE PLACED IN CH375HF4.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil Uvision V7.20\C51\BIN\C51.EXE CH375HF4.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //=================================================================================================
   2          //*************************************************************************************************
   3          // Module Name  : CH375HF4.C
   4          // Device object: 
   5          // Create date  : 2005-11-10 
   6          // Modify date  : 2005-11-10 
   7          // Description  : USB 1.1 Host for CH375 
   8          //                USB 2.0 Host for CH375A 
   9          // Author       : Li yuanzheng 
  10          // Version      : V1.0 
  11          //*************************************************************************************************
  12          //=================================================================================================
  13          // 
  14          //-------------------------------------------------------------------------------------------------
  15          // Includes 
  16          //-------------------------------------------------------------------------------------------------
  17          
  18          #include <regx52.h>                       // SFR declarations 
  19          //#include <string.h>
  20          //#include <stdio.h>
  21          //#include <intrins.h>
  22          #include "CH375HF4.H"
*** ERROR C202 IN LINE 1069 OF CH375HF4.H: 'CH375_CMD_PORT_ADDR': undefined identifier
*** ERROR C202 IN LINE 1070 OF CH375HF4.H: 'CH375_DAT_PORT_ADDR': undefined identifier
  23          
  24          //-------------------------------------------------------------------------------------------------
  25          // 
  26          
  27          
  28          //=================================================================================================
  29          //=================================================================================================
  30          // 
  31          //=================================================================================================
  32          //=================================================================================================
  33          // 
  34          //-------------------------------------------------------------------------------------------------
  35          // 中断状态查询处理程序 
  36          //-------------------------------------------------------------------------------------------------
  37          // 
  38          #ifndef NO_DEFAULT_CH375_INT 
  39          // 在应用程序中定义 NO_DEFAULT_CH375_INT 可以禁止默认的中断处理程序,然后用自行编写的程序代替它 
  40          //-------------------------------------------------------------------------------------------------
  41          //-------------------------------------------------------------------------------------------------
  42          #if LIB_CFG_INT_EN == 0                                 
  43          // CH375的INT#引脚连接方式为"查询方式" 
  44          //-------------------------------------------------------------------------------------------------
  45          // 查询 CH375 中断并更新中断状态 
  46          void xQueryInterrupt( void )                    
  47          {
  48   1              //while ( CH375_INT_WIRE );  // 如果CH375的中断引脚输出高电平则等待 
  49   1              if( !CH375_INT_WIRE )      // 中断请求 
*** ERROR C202 IN LINE 49 OF CH375HF4.C: 'CH375_INT_WIRE': undefined identifier
  50   1              {
  51   2                      CH375_CMD_PORT = CMD_GET_STATUS;  // 获取当前中断状态 
  52   2                      CH375IntStatus &= 0x80; if ( CH375IntStatus ) CH375IntStatus = 0;  // 操作无意义,用于至少延时2uS 
C51 COMPILER V7.20   CH375HF4                                                              11/10/2005 21:58:36 PAGE 2   

  53   2                      CH375IntStatus = CH375_DAT_PORT;  // 获取中断状态 
  54   2                      if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT;  // 检测到USB设备断开事件
             - 
  55   2                      else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT;  // 检测到USB设备连接事件 
  56   2              }
  57   1      }
  58          
  59          //-------------------------------------------------------------------------------------------------
  60          #else 
              // LIB_CFG_INT_EN != 0, CH375的INT#引脚连接方式为"中断方式"                                                                     
              //-------------------------------------------------------------------------------------------------
              // 查询中断状态,等待硬件中断 
              void xQueryInterrupt( void )                    
              {
                      ;    // 该操作无意义,只是避免出现警告信息 
              }
              
              // CH375中断服务程序,由CH375的INT#的低电平或者下降沿触发单片机中断 
              void CH375Interrupt( void ) interrupt CH375_INT_NO 
              {
                      CH375_CMD_PORT = CMD_GET_STATUS;        // 获取中断状态并取消中断请求 
                      CH375IntStatus &= 0x80; if ( CH375IntStatus ) CH375IntStatus = 0;  // 操作无意义,用于至少延时2uS 
                      CH375IntStatus = CH375_DAT_PORT;        // 获取中断状态 
                      if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT;  // 检测到USB设备断开事件 
                      else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT;   // 检测到USB设备连接事件 
              }
              #endif
  79          
  80          //-------------------------------------------------------------------------------------------------
  81          #endif
  82          
  83          //-------------------------------------------------------------------------------------------------
  84          //-------------------------------------------------------------------------------------------------
  85          // 
  86          #if LIB_CFG_FILE_IO == 0                                
              // 文件读写的数据的复制方式为"外部子程序" 
              //-------------------------------------------------------------------------------------------------
              // 
              //#ifdef LIB_CFG_FILE_IO_DEFAULT        
              // 如果应用程序中定义该值则使用默认"外部子程序",否则应该自行编写程序代替 
              //-------------------------------------------------------------------------------------------------
              // 
              unsigned char xdata *current_buffer;    // 保存文件数据读写时的缓冲区的当前指针,由应用程序在调用CH375FileRead
             -X和CH375FileWriteX子程序前设置初值 
              
              // 该子程序由CH375的子程序库调用,用于从CH375读取文件数据到外部缓冲区,被CH375FileReadX调用 
              void xWriteToExtBuf( UINT8 mLength )    
              {
              //      if ( (UINT16)current_buffer + mLength >= (UINT16)&FILE_DATA_BUF + sizeof( FILE_DATA_BUF ) ) return;  //
             - 防止缓冲区溢出 
                      if ( mLength ) 
                      {
                              do // 根据长度读取数据,实际上长度总是CH375_MAX_DATA_LEN,也就是64 
                              {  
                                      *current_buffer = CH375_DAT_PORT;  // 读出数据并保存,可以用这种方式将文件数据保存到单片机的各种串行存储
             -器中 
                                      current_buffer ++;
                              } while ( -- mLength );
                      }    // 复制上述数据的总时间不得超过2mS 
                      else // 重试,恢复缓冲区起址,如果将文件数据读写的缓冲区的当前指针放在mCmdParam.ReadX.mDataBuffer中则会被自
             -动恢复,无需下面的两行程序 
                      {  
C51 COMPILER V7.20   CH375HF4                                                              11/10/2005 21:58:36 PAGE 3   

                              current_buffer += (UINT16)mCmdParam.ReadX.mDataBuffer;  // mDataBuffer中为负值 
                              mCmdParam.ReadX.mDataBuffer = 0;  // 为了支持重试,在调用CH375FileReadX之前也应该清0 
                      }
              }
              
              #ifdef EN_DISK_WRITE
              //-------------------------------------------------------------------------------------------------
              // 该子程序由CH375的子程序库调用,用于从外部缓冲区读取文件数据到CH375,被CH375FileWriteX调用 
              void xReadFromExtBuf( UINT8 mLength )   
              {
                      if ( mLength ) 
                      {
                              do // 根据长度写入数据,实际上长度总是CH375_MAX_DATA_LEN,也就是64 
                              {  
                                      CH375_DAT_PORT = *current_buffer;  // 将数据写入,可以用这种方式从单片机的各种串行存储器中取出文件数据 
                                      current_buffer ++;
                              } while ( -- mLength );
                      }    // 复制上述数据的总时间不得超过2mS 
                      else // 重试,恢复缓冲区起址,如果将文件数据读写的缓冲区的当前指针放在mCmdParam.WriteX.mDataBuffer中则会被

⌨️ 快捷键说明

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