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

📄 usbhost.lst

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 LST
字号:
C51 COMPILER V8.01   USBHOST                                                               03/28/2006 09:49:40 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE USBHOST
OBJECT MODULE PLACED IN UsbHost.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UsbHost.c LARGE OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          /*
   2          * Copyright (c) 2004,成都港顺科技发展有限公司
   3          * All rights reserved.
   4          *
   5          * 编 译 器:Keil:C Compiler:7.20;Assembler:7.10
   6          * 工程名称:POS-Test.UV2
   7          * 文件名称:Windows.C
   8          * 摘  要:窗体显示
   9          *
  10          * 单 片 机:uPSD3254
  11          * 当前版本:0.4
  12          * 作  者:范小飞
  13          * 完成日期:2004-12-7 14:45
  14          */
  15          
  16          #include "Main.h"
  17          #include "CH375HFC.H"
  18          #define LIB_CFG_FILE_IO                 1               /* 文件读写的数据的复制方式,0为"外部子程序",1为"内部复制" */
  19          #define LIB_CFG_INT_EN                  0               /* CH375的INT#引脚连接方式,0为"查询方式",1为"中断方式" */
  20          #define DISK_BASE_BUF_ADDR              0x7000  /* 外部RAM的磁盘数据缓冲区的起始地址,从该单元开始的缓冲区长度为SECTOR_S
             -IZE */
  21          #define FILE_DATA_BUF_ADDR              0x5000  /* 外部RAM的文件数据缓冲区的起始地址,缓冲区长度不小于一次读写的数据长度
             -,字节模式不用该缓冲区 */
  22          
  23          
  24          
  25          
  26          #define USBA0COM  0xe800
  27          #define USBA0DAT  0xe000
  28          
  29          
  30          
  31          void    mDelay100mS( )                                                  //延时
  32          {
  33   1              UINT8   i, j, c;
  34   1              for ( i = 200; i != 0; i -- ) for ( j = 200; j != 0; j -- ) c+=3;
  35   1      }
  36          void mDelay1_2uS( )  
  37          {
  38   1              return;
  39   1      }
  40           void xWriteCH375Cmd( UINT8 mCmd ) //写命令函数
  41          {       
  42   1      
  43   1              XBYTE[USBA0COM]=mCmd;
  44   1      
  45   1      }
  46          
  47          void xWriteCH375Data( UINT8 mData ) //写数据函数
  48          {
  49   1      
  50   1      XBYTE[USBA0DAT]=mData;  
  51   1      
  52   1      }
  53          UINT8 xReadCH375Data( void )      //读数据函数
C51 COMPILER V8.01   USBHOST                                                               03/28/2006 09:49:40 PAGE 2   

  54          {       
  55   1              UINT8 i;        
  56   1              i=XBYTE[USBA0DAT];
  57   1              return i;
  58   1      }
  59          void CH375_PORT_INIT( )          //端口初始化
  60          {                       
  61   1              xWriteCH375Cmd(0x05);
  62   1      }
  63          
  64          
  65          
  66          /* 将程序空间的字符串复制到内部RAM中,返回字符串长度 */
  67          UINT8   mCopyCodeStringToXRAM( UINT8 xdata *iDestination, UINT8 code *iSource )
  68          {
  69   1              UINT8   i = 0;
  70   1              while ( *iDestination = *iSource ) 
  71   1              {
  72   2                      iDestination ++;
  73   2                      iSource ++;
  74   2                      i ++;
  75   2              }
  76   1              return( i );
  77   1      }
  78          
  79          
  80          /* 检查操作状态,如果错误则显示错误代码并停机 */
  81          void  mStopIfError( UINT8 iError )
  82          {
  83   1              if ( iError == ERR_SUCCESS ) return;  /* 操作成功 */
  84   1              else
  85   1              {
  86   2              //显示错误代码 iError   
  87   2              mDelay100mS( );
  88   2              while(1);
  89   2              }
  90   1      }
  91                  
  92          void UsbByteWrite(UINT8 *filesname, uchar len,uchar *str)            //U盘写字节写函数
  93          {
  94   1              UINT8 i;
  95   1      //      uchar j,c;
  96   1      //      ulong k;
  97   1              uint l,m,n;
  98   1              CH375_PORT_INIT( ); 
  99   1              mDelay100mS( );    
 100   1              i=CH375LibInit();                                                                                                                                                                       //初始化文件库
 101   1              mStopIfError(i);        
 102   1              
 103   1              while(1)
 104   1              {
 105   2      
 106   2                      while(CH375DiskStatus !=DISK_CONNECT)xQueryInterrupt();         //检查U盘是否己连接,如果己连接则断续,如果未连
             -接则等待
 107   2                              mDelay100mS();                                            //延时
 108   2                              mDelay100mS();                                            //延时
 109   2                              for ( i = 0; i < 10; i ++ )                               //检查U盘是否准备好
 110   2                              { 
 111   3                                      mDelay100mS( );                 
 112   3                                      if ( CH375DiskReady( ) == ERR_SUCCESS ) break;       //如果U盘准备好则继续下一步操作
 113   3                              }
 114   2                              mCopyCodeStringToXRAM( mCmdParam.Open.mPathName, filesname );  //对文件名进行操作
C51 COMPILER V8.01   USBHOST                                                               03/28/2006 09:49:40 PAGE 3   

 115   2                              i = CH375FileOpen( );                                      //打开文件
 116   2                              if ( i == ERR_SUCCESS || i == ERR_MISS_FILE )            //如果文件打开成功或者文件名不存在则进行下一步
             -操作
 117   2                               { 
 118   3                                      if(i==ERR_MISS_FILE)                                 //如果是文件名不存在则新建文件
 119   3                                      {
 120   4                                              i = CH375FileCreate( );                           //按给定的文件名建立文件
 121   4                                              mStopIfError( i );                                //判断返回状态是否有错:这里指新建文件是否成功
 122   4                                      }                       
 123   3                                      mCmdParam.ByteLocate.mByteOffset = 0xffffffff;  /* 移到文件的尾部 */
 124   3                                      i = CH375ByteLocate( );
 125   3                                      mStopIfError( i );
 126   3                              
 127   3                              if(len>30)
 128   3                              {
 129   4                                      l=len/30;
 130   4                                      m=len%30;
 131   4                                      n=0;
 132   4                                      
 133   4                                              while(l)
 134   4                                              {
 135   5                                                      for(i=0;i<30;i++)
 136   5                                                      {
 137   6                                                              mCmdParam.ByteWrite.mByteBuffer[i]=*str;
 138   6                                                              str++;                                  
 139   6                                                      }
 140   5                                                      mCmdParam.ByteWrite.mByteCount = 30; 
 141   5                                                      i = CH375ByteWrite( );  /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */
 142   5                                                      mStopIfError( i );
 143   5                                                      l--;
 144   5                                              }
 145   4                                              if(m)
 146   4                                              {
 147   5                                                      while(m)
 148   5                                                      {
 149   6                                                      mCmdParam.ByteWrite.mByteBuffer[i]=*str;
 150   6                                                      str++;  
 151   6                                                      m--;    
 152   6                                                      }                                               
 153   5                                                      mCmdParam.ByteWrite.mByteCount = m; 
 154   5                                                      i = CH375ByteWrite( );  
 155   5                                                      mStopIfError( i );      
 156   5                                                                              
 157   5                                              }
 158   4                                              else
 159   4                                              {
 160   5                                              mCmdParam.Close.mUpdateLen = 1;                      //文件长度更新
 161   5                                              i = CH375FileClose( );                               //写文件完成,关闭文件
 162   5                                              mStopIfError( i );
 163   5                                              break;                                          
 164   5                                                      
 165   5                                              }
 166   4                              }
 167   3                              else
 168   3                              {
 169   4                                      for(i=0;i<len;i++)
 170   4                                      {
 171   5      
 172   5                                      mCmdParam.ByteWrite.mByteBuffer[i]=*str;        
 173   5                                      str++;
 174   5                              
 175   5                                      }       
C51 COMPILER V8.01   USBHOST                                                               03/28/2006 09:49:40 PAGE 4   

 176   4                                      mCmdParam.ByteWrite.mByteCount = len; 
 177   4                                      i = CH375ByteWrite( );  /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */
 178   4                                      mStopIfError( i );                      
 179   4                              }               
 180   3                                      mCmdParam.Close.mUpdateLen = 1;                      //文件长度更新
 181   3                                      i = CH375FileClose( );                               //写文件完成,关闭文件
 182   3                                      mStopIfError( i );
 183   3                                      break;                                  
 184   3                              }
 185   2                              else mStopIfError( i ); 
 186   2                      }                
 187   1                                                                            //判断返回状态是否有错:这里指关闭文件是否成功
 188   1      }
 189          
 190          void UsbFilesWrite(UINT8 *filesname,ulong Sectorlen ,uchar *str)            //U盘写字节写函数
 191          {
 192   1              UINT8 i;
 193   1              uint c,b;
 194   1              CH375_PORT_INIT( ); 
 195   1              mDelay100mS( );                                      //端口初始化:这里指初始化串口
 196   1              i=CH375LibInit();                                                                                                                                                                       //初始化文件库
 197   1              mStopIfError(i); 
 198   1              while(1)
 199   1              {
 200   2                      while(CH375DiskStatus !=DISK_CONNECT)xQueryInterrupt();         //检查U盘是否己连接,如果己连接则断续,如果未连
             -接则等待
 201   2                      
 202   2                      for ( i = 0; i < 2; i ++ )                               //检查U盘是否准备好
 203   2                      { 
 204   3                              if ( CH375DiskReady( ) == ERR_SUCCESS ) break;       //如果U盘准备好则继续下一步操作
 205   3                      }
 206   2                      mCopyCodeStringToXRAM( mCmdParam.Open.mPathName, filesname );  //对文件名进行操作
 207   2                      i = CH375FileOpen( );                                      //打开文件
 208   2                      if ( i == ERR_SUCCESS || i == ERR_MISS_FILE )            //如果文件打开成功或者文件名不存在则进行下一步

⌨️ 快捷键说明

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