📄 writefile.lst
字号:
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 + -