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

📄 ch375pcinterface.lst

📁 USB 1.1 U Device for CH375 & USB 2.0 for CH375A 读写usb超精简的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   CH375PCINTERFACE                                                      11/11/2005 10:20:32 PAGE 1   


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

line level    source

   1          //=================================================================================================
   2          //*************************************************************************************************
   3          // Module Name  : CH375PCInterface.C
   4          // Device object: 
   5          // Create date  : 2005-11-7 
   6          // Modify date  : 2005-11-7 
   7          // Description  : USB 1.1 PC Interface for CH375 
   8          //                
   9          // Author       : Li yuanzheng 
  10          // Version      : V1.0  
  11          //*************************************************************************************************
  12          //=================================================================================================
  13          // 
  14          //-------------------------------------------------------------------------------------------------
  15          // Includes 
  16          //-------------------------------------------------------------------------------------------------
  17          
  18          /*
  19          ****************************************
  20          **  USB 1.1 Host Examples for CH375   **
  21          **  KC7.0@MCS-51                      **
  22          ****************************************
  23          */
  24          /* CH375作为USB主机接口的程序示例 */
  25          
  26          
  27          
  28          /* MCS-51单片机C语言的示例程序, U盘数据读写 */
  29          
  30          
  31          
  32          #include "common.h"
*** WARNING C318 IN LINE 32 OF CH375PCInterface.C: can't open file 'common.h'
  33          
  34          
  35          
  36          unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */
  37          unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0; /* CH375数据端口的I/O地址 */
  38          extern unsigned char xdata DBUF[BUFFER_LENGTH];
*** ERROR C202 IN LINE 38 OF CH375PCINTERFACE.C: 'BUFFER_LENGTH': undefined identifier
*** ERROR C136 IN LINE 38 OF CH375PCINTERFACE.C: invalid dimension size: [0]
  39          
  40          
  41          
  42          //sbit LED_OUT   =  0x90^4; /* P1.4 低电平驱动LED显示,用于监控演示程序的进度 */
  43          sbit CH375_INT_WIRE =  0xB0^2; /* P3.2, INT0, 连接CH375的INT#引脚,用于查询中断状态 */
  44          
  45          
  46          
  47          
  48          #define mDelay1uS( )   /* 对于MCS51单片机,通常不需要1uS延时 */
  49          
  50          
  51          
  52          /* 延时2微秒,请根据单片机速度 */
C51 COMPILER V7.20   CH375PCINTERFACE                                                      11/11/2005 10:20:32 PAGE 2   

  53          //void mDelay1uS( )
  54          //{
  55          // unsigned char i;
  56          // for ( i = 1; i != 0; i -- );
  57          //}
  58          
  59          
  60          
  61          /* 延时2微秒,请根据单片机速度 */
  62          void mDelay2uS( )
  63          {
  64   1      unsigned char i;
  65   1      for ( i = 2; i != 0; i -- );
  66   1      }
  67          
  68          
  69          
  70          /* 向CH375命令端口写命令数据 */
  71          void CH375_CMD_PORT_d_out( INT8 d_out )
*** ERROR C141 IN LINE 71 OF CH375PCINTERFACE.C: syntax error near 'd_out', expected ')'
  72          {
  73   1      mDelay1uS( );
  74   1      CH375_CMD_PORT=d_out;
*** ERROR C202 IN LINE 74 OF CH375PCINTERFACE.C: 'd_out': undefined identifier
  75   1      mDelay2uS( );  /* 至少延时2uS */
  76   1      }
  77          
  78          
  79          
  80          /* 向CH375数据端口写数据 */
  81          void CH375_DAT_PORT_d_out( INT8 d_out )
*** ERROR C141 IN LINE 81 OF CH375PCINTERFACE.C: syntax error near 'd_out', expected ')'
  82          {
  83   1      CH375_DAT_PORT=d_out;
*** ERROR C202 IN LINE 83 OF CH375PCINTERFACE.C: 'd_out': undefined identifier
  84   1      mDelay1uS( );
  85   1      }
  86          
  87          
  88          
  89          /* 从CH375命令端口读数据 */
  90          INT8 CH375_DAT_PORT_in( )
*** ERROR C129 IN LINE 90 OF CH375PCINTERFACE.C: missing ';' before 'CH375_DAT_PORT_in'
  91          {
  92          mDelay1uS( );
  93          return( CH375_DAT_PORT );
  94          }
  95          
  96          
  97          
  98          /* 延时毫秒,不精确 */
  99          void DelayMs(unsigned char nFactor)
 100          {
 101          unsigned char i;
 102          unsigned int j;
 103          for(i=0; i<nFactor; i++) for(j=0;j<1000;j++) j=j;
 104          }
 105          
 106          
 107          
 108          /* 等待CH375中断并获取状态 */
 109          unsigned char mWaitInterrupt( )
C51 COMPILER V7.20   CH375PCINTERFACE                                                      11/11/2005 10:20:32 PAGE 3   

 110          {
 111          unsigned char c;
 112          while ( CH375_INT_WIRE );  /* 如果CH375的中断引脚输出高电平则等待 */
 113          CH375_CMD_PORT_d_out( CMD_GET_STATUS);  /* 获取当前中断状态 */
 114          c = CH375_DAT_PORT_in();  /* 返回中断状态 */
 115          /* if ( c == USB_INT_DISCONNECT )  /* 检测到USB设备断开事件 */
 116          /* else if ( c == USB_INT_CONNECT )  /* 检测到USB设备连接事件 */
 117          return( c );
 118          }
 119          
 120          
 121          
 122          /* 设置CH375为USB主机方式 */
 123          unsigned char mCH375Init( )
 124          {
 125          unsigned char i;
 126          #ifdef TEST_CH375_PORT
              unsigned char c;
              CH375_CMD_PORT_d_out(CMD_CHECK_EXIST);  /* 测试工作状态 */
              CH375_DAT_PORT_d_out( 0x55);  /* 测试数据 */
              c = CH375_DAT_PORT_in();  /* 返回数据应该是测试数据取反 */
              if ( c != 0xaa ) {  /* CH375出错 */
                for ( i = 100; i != 0; i -- ) {  /* 强制数据同步 */
                 CH375_CMD_PORT_d_out( CMD_RESET_ALL );  /* CH375执行硬件复位 */
                 c = CH375_DAT_PORT_in();  /* 延时 */
                }
                DelayMs( 50 );  /* 延时至少30mS */
              }
              #endif
 139          CH375_CMD_PORT_d_out( CMD_SET_USB_MODE);  /* 设置USB工作模式 */
 140          CH375_DAT_PORT_d_out( 6);  /* 模式代码,自动检测USB设备连接 */
 141          for ( i = 0xff; i != 0; i -- ) {  /* 等待操作成功,通常需要等待10uS-20uS */
 142            if ( CH375_DAT_PORT_in() == CMD_RET_SUCCESS ) break;  /* 操作成功 */
 143          }
 144          if ( i != 0 ) return( 0 );  /* 操作成功 */
 145          else return( 0xff );  /* CH375出错,例如芯片型号错或者处于串口方式或者不支持 */
 146          }
 147          
 148          
 149          --------------------------------------------------------------------------------
 150           
 151          --  作者:lxlong
 152          --  发布时间:2004-12-6 12:55:54
 153          
 154          --  
 155          
 156          /* 初始化磁盘 */
 157          unsigned char mInitDisk( )
 158          {
 159          unsigned char mIntStatus;
 160          CH375_CMD_PORT_d_out( CMD_DISK_INIT);  /* 初始化USB存储器 */
 161          mIntStatus = mWaitInterrupt( );  /* 等待中断并获取状态 */
 162          //if ( mIntStatus == USB_INT_SUCCESS ) return( 0 );  /* U盘已经成功初始化 */
 163            return  mIntStatus ;  /* 出现错误 */
 164          }
 165          
 166          unsigned char ReadCapacity(void)
 167          {
 168          unsigned char *mBufferPoint;
 169          unsigned char  mIntStatus,mLength;
 170          CH375_CMD_PORT_d_out( CMD_DISK_SIZE);  /* 读取容量 */
 171          mBufferPoint=DBUF;
C51 COMPILER V7.20   CH375PCINTERFACE                                                      11/11/2005 10:20:32 PAGE 4   

 172          mIntStatus = mWaitInterrupt( );
 173          if ( mIntStatus == USB_INT_DISK_READ )
 174          {  /* USB存储器读数据块,请求数据读出 */
 175             CH375_CMD_PORT_d_out( CMD_RD_USB_DATA);  /* 从CH375缓冲区读取数据块 */
 176             mLength = CH375_DAT_PORT_in();  /* 后续数据的长度 */
 177             while ( mLength ) {  /* 根据长度读取数据 */
 178              *mBufferPoint = CH375_DAT_PORT_in();  /* 读出数据并保存 */
 179              mBufferPoint ++;

⌨️ 快捷键说明

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