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

📄 writefile.lst

📁 全国电子设计大赛:智能电动车的设计.实现功能:以AT89C52单片机为核心
💻 LST
📖 第 1 页 / 共 2 页
字号:
 116   2                  mCopyCodeStringToBUF( "第一片铁片到起跑线的距离为:" ); 
 117   2                  i = Read12C887RAM( DISTANCE_RANGE_1_H );    // 从 12C887 中取出数据 
C51 COMPILER V7.20   WRITEFILE                                                             11/15/2005 18:46:55 PAGE 3   

 118   2                  MetalDistance =  ( unsigned int )i*256;
 119   2                  i = Read12C887RAM( DISTANCE_RANGE_1_L );
 120   2                  MetalDistance += i;
 121   2                  mCopyNumberToBUF( MetalDistance/10000+0x30 ); mCopyNumberToBUF( MetalDistance%10000/1000+0x30 ); mCop
             -yNumberToBUF( '.' ); mCopyNumberToBUF( MetalDistance%1000/100+0x30 ); mCopyNumberToBUF( MetalDistance%100/10+0x30 ); mCo
             -pyNumberToBUF( MetalDistance%10+0x30 ); 
 122   2                  mCopyCodeStringToBUF( "(m)" ); 
 123   2                  mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A );   // 回车换行 
 124   2              }
 125   1              if( IronNumber > 1 )
 126   1              {
 127   2                  mCopyCodeStringToBUF( "第二片铁片到起跑线的距离为:" ); 
 128   2                  i = Read12C887RAM( DISTANCE_RANGE_2_H );    // 从 12C887 中取出数据 
 129   2                  MetalDistance =  ( unsigned int )i*256;
 130   2                  i = Read12C887RAM( DISTANCE_RANGE_2_L );
 131   2                  MetalDistance += i;
 132   2                  mCopyNumberToBUF( MetalDistance/10000+0x30 ); mCopyNumberToBUF( MetalDistance%10000/1000+0x30 ); mCop
             -yNumberToBUF( '.' ); mCopyNumberToBUF( MetalDistance%1000/100+0x30 ); mCopyNumberToBUF( MetalDistance%100/10+0x30 ); mCo
             -pyNumberToBUF( MetalDistance%10+0x30 ); 
 133   2                  mCopyCodeStringToBUF( "(m)" ); 
 134   2                  mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A );   // 回车换行 
 135   2              }
 136   1              if( IronNumber > 2 )
 137   1              {
 138   2                  mCopyCodeStringToBUF( "第三片铁片到起跑线的距离为:" ); 
 139   2                  i = Read12C887RAM( DISTANCE_RANGE_3_H );    // 从 12C887 中取出数据 
 140   2                  MetalDistance =  ( unsigned int )i*256;
 141   2                  i = Read12C887RAM( DISTANCE_RANGE_3_L );
 142   2                  MetalDistance += i;
 143   2                  mCopyNumberToBUF( MetalDistance/10000+0x30 ); mCopyNumberToBUF( MetalDistance%10000/1000+0x30 ); mCop
             -yNumberToBUF( '.' ); mCopyNumberToBUF( MetalDistance%1000/100+0x30 ); mCopyNumberToBUF( MetalDistance%100/10+0x30 ); mCo
             -pyNumberToBUF( MetalDistance%10+0x30 ); 
 144   2                  mCopyCodeStringToBUF( "(m)" ); 
 145   2                  mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A );   // 回车换行   
 146   2              }
 147   1      
 148   1              mCopyCodeStringToBUF( "全程路程:" ); 
 149   1              i = Read12C887RAM( DISTANCE_RANGE_H );   // 从 12C887 中取出数据 
 150   1              Distance = ( unsigned int )i*256;
 151   1              i = Read12C887RAM( DISTANCE_RANGE_L );   // 从 12C887 中取出数据 
 152   1              Distance += i; 
 153   1              mCopyNumberToBUF( Distance/10000+0x30 ); mCopyNumberToBUF( Distance%10000/1000+0x30 ); mCopyNumberToBUF( 
             -'.' ); mCopyNumberToBUF( Distance%1000/100+0x30 ); mCopyNumberToBUF( Distance%100/10+0x30 ); mCopyNumberToBUF( Distance%
             -10+0x30 ); 
 154   1              mCopyCodeStringToBUF( "(m)" ); 
 155   1              mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A );   // 回车换行 
 156   1      
 157   1              mCopyCodeStringToBUF( "全程行驶时间为:" ); 
 158   1              i = Read12C887RAM( JOURNEY_TIME_RANGE );   // 从 12C887 中取出数据 
 159   1              mCopyNumberToBUF( i/10+0x30 ); mCopyNumberToBUF( i%10+0x30 );
 160   1              mCopyCodeStringToBUF( "(s)" ); 
 161   1              mCopyNumberToBUF( 0x0D ); mCopyNumberToBUF( 0x0A );   // 回车换行 
 162   1      
 163   1              *buffer = '\0';                 // 文件结束标志 
 164   1      }
 165          
 166          
 167          //=================================================================================================
 168          //                                File Procedure: USB 
 169          //=================================================================================================
 170          // 保存文件数据到U盘中名为:(智能小车.TXT) 的文本文件中 
 171          void FileProcess( void )
C51 COMPILER V7.20   WRITEFILE                                                             11/15/2005 18:46:55 PAGE 4   

 172          {
 173   1              unsigned char   guage = 0;      // 进度参数 
 174   1              unsigned char   i, SecCount;    // 
 175   1      
 176   1              unsigned long   OldFileSize;    // 原文件数据大少 
 177   1              unsigned int    LastSize;       // 原文件尾部不足一个扇区的零碎数据字节数(0--511) 
 178   1      
 179   1      #ifdef CH375HM_INT 
 180   1      #if CH375HM_INT == 0 
                      ExecCommand( CMD_QueryStatus, 0 );  // 查询当前模块的状态,中断方式则不需要此步骤 
                      mIntStatus = mCmdParam.Status.mIntStatus; 
              #endif 
 184   1      #endif 
 185   1      
 186   1              if ( mIntStatus == ERR_USB_CONNECT )   // 等待U盘连接,由中断服务程序产生状态 
 187   1              {
 188   2                  // 查询当前模块的状态,实际上用于撤消模块产生的中断 
 189   2                      for( i=0; i<10; i++ ) 
 190   2                      {
 191   3                          ExecCommand( CMD_QueryStatus, 0 ); 
 192   3                              if( mCmdParam.Status.mDiskStatus == DISK_CONNECT ) break;  // 有时候,USB端口接触不良或者插拔不干脆,导致
             -U盘刚连接又断开 
 193   3                      }
 194   2                      LED_OUT_ACT( );  // LED亮, 表示正在对U盘进行操作 
 195   2      
 196   2                      // 检查U盘是否准备好,大多数U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 
 197   2                      for ( i = 0; i < 5; i ++ ) 
 198   2                      {
 199   3                              mDelaymS( 10 );
 200   3                              if ( ExecCommand( CMD_DiskReady, 0 ) == ERR_SUCCESS ) break;  // 查询磁盘是否准备好 
 201   3                      }
 202   2      
 203   2                      modifying    = 1;   // 用于清屏之用 ,显示U盘操作进度之前的清屏 
 204   2                      confirm_down = 1;
 205   2                      SCREEN = 50; 
 206   2                      Display( );
 207   2      
 208   2                      //---------------------------------------
 209   2                      // 读取原文件 
 210   2                      DisplayGuage ( guage++ ); // 显示U盘操作进度 
 211   2                      memcpy( mCmdParam.Open.mPathName, "\\智能小车.TXT", MAX_PATH_LEN );  // 文件名,在根目录下 
 212   2                      i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN );  // 打开文件,输入参数置为最大值,省得再计算参数长度 
 213   2                      if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE )  // ERR_MISS_DIR说明没有找到C51子目录,ERR_MISS_FILE说明没
             -有找到文件 
 214   2                      {  
 215   3                          //---------------------------------------
 216   3                          // 没有找到指定的文件,则产生新文件 
 217   3                              superaddition = 0;        // 追加数据次数清零 
 218   3                          DisplayGuage ( guage++ ); // 显示U盘操作进度 
 219   3                          memcpy( mCmdParam.Create.mPathName, "\\智能小车.TXT", MAX_PATH_LEN );  // 新文件名,在根目录下 
 220   3                          i = ExecCommand( CMD_FileCreate, MAX_PATH_LEN );  // 新建文件并打开,如果文件已经存在则先删除后再新建
             - 
 221   3                          mStopIfError( i );
 222   3      
 223   3                          DisplayGuage ( guage++ ); // 显示U盘操作进度 
 224   3                          WriteDataToBUF( DATA_BUF ); // 向缓冲区写入数据块文件 
 225   3                          SecCount = ( WriteFileSize + 511 ) >> 9;  // (WriteFileSize+511)/512, 计算文件的扇区数,因为读写是以

⌨️ 快捷键说明

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