📄 ideio.lst
字号:
221 3 Usb_write_byte(hdd_read_byte());
222 3 Usb_write_byte(hdd_read_byte());
223 3 Usb_write_byte(hdd_read_byte());
224 3 Usb_write_byte(hdd_read_byte());
225 3 Usb_write_byte(hdd_read_byte());
226 3 Usb_write_byte(hdd_read_byte());
227 3 Usb_write_byte(hdd_read_byte());
228 3 Usb_write_byte(hdd_read_byte());
229 3 Usb_write_byte(hdd_read_byte());
230 3 Usb_write_byte(hdd_read_byte());
231 3 Usb_write_byte(hdd_read_byte());
232 3 Usb_write_byte(hdd_read_byte());
233 3 Usb_write_byte(hdd_read_byte());
234 3 Usb_write_byte(hdd_read_byte());
235 3 Usb_write_byte(hdd_read_byte());
236 3 Usb_write_byte(hdd_read_byte());
237 3 Usb_write_byte(hdd_read_byte());
238 3 Usb_write_byte(hdd_read_byte());
239 3 Usb_write_byte(hdd_read_byte());
240 3 Usb_write_byte(hdd_read_byte());
C51 COMPILER V7.50 IDEIO 06/03/2006 10:32:52 PAGE 5
241 3 Usb_write_byte(hdd_read_byte());
242 3 Usb_write_byte(hdd_read_byte());
243 3 Usb_write_byte(hdd_read_byte());
244 3 Usb_write_byte(hdd_read_byte());
245 3 Usb_write_byte(hdd_read_byte());
246 3 Usb_write_byte(hdd_read_byte());
247 3 Usb_write_byte(hdd_read_byte());
248 3 Usb_write_byte(hdd_read_byte());
249 3 Usb_write_byte(hdd_read_byte());
250 3 Usb_write_byte(hdd_read_byte());
251 3
252 3 Usb_set_TXRDY();
253 3 Usb_select_ep(EP_IN);
254 3 while (!Usb_tx_complete());
255 3 Usb_clear_TXCMPL();
256 3 }
257 2 hdd_read_close();
258 2
259 2 return OK;
260 2 }
261 1 return KO;
262 1 }
263
264
265 /**********************************************************
266 *函数名称:bit hdd_write_open(Uint32 hdd_sector) *
267 *用途:写硬盘OPEN动作 *
268 ***********************************************************/
269 bit hdd_write_open(Uint32 hdd_sector)
270 {
271 1 uchar head,cylinderh,cylinderl,sector;
272 1 head = ((Byte*)&hdd_sector)[0];
273 1 cylinderh = ((Byte*)&hdd_sector)[1];
274 1 cylinderl = ((Byte*)&hdd_sector)[2];
275 1 sector = ((Byte*)&hdd_sector)[3];
276 1
277 1 do{ACC = FILE7;} while(BSY);
278 1 FILE6 = (0xe0 | (head & 0x0f));
279 1 FILE5 = cylinderh; //high 2-bit cylinder
280 1 FILE4 = cylinderl;//low 8-bit cylinder
281 1 FILE3 = sector; //start sector
282 1 FILE2 = 1; //sector counter
283 1
284 1 WriteCommand(0x30);
285 1
286 1 do{ACC = FILE7;} while(BSY |! DRQ); //wait for noBUSY and data request
287 1
288 1 ACC = FILE7;
289 1 if (ERR)
290 1 return KO;
291 1
292 1 return OK;
293 1 }
294
295
296 /**********************************************************
297 *函数名称:bit hdd_write_byte(Byte hdd_data) *
298 *用途:写硬盘CLOSE动作 *
299 ***********************************************************/
300 bit hdd_write_byte(Byte hdd_data)
301 {
302 1 gl_hdd_buffer[gl_hdd_buffer_ptr++] = hdd_data ;
C51 COMPILER V7.50 IDEIO 06/03/2006 10:32:52 PAGE 6
303 1 return OK;
304 1 }
305
306 /**********************************************************
307 *函数名称:bit hdd_write_close(void) *
308 *用途:写硬盘CLOSE动作 *
309 ***********************************************************/
310 bit hdd_write_close(void)
311 {uint i;
312 1 for(i = 0; i < 512; i+=2)
313 1 {
314 2 DAT16H = gl_hdd_buffer[i+1];
315 2 FILE0 = gl_hdd_buffer[i];
-
316 2 }
317 1
318 1 do{ACC = FILE7;} while(BSY);
319 1
320 1 return OK;
321 1
322 1 }
323
324
325
326 /**********************************************************
327 *函数名称:bit hdd_write_usb_sector(Uint32 hdd_sector) *
328 *用途:将USB接收到的一个扇区的数据写入硬盘 *
329 ***********************************************************/
330 bit hdd_write_usb_sector(Uint32 hdd_sector)
331 {uchar j;
332 1
333 1 Usb_select_ep(EP_OUT);
334 1 gl_hdd_buffer_ptr = 0;
335 1
336 1 for (j = 0; j < 8; j++)
337 1 {
338 2 while(!Usb_rx_complete()); /* wait end of reception */
339 2 hdd_write_byte(Usb_read_byte());
340 2 hdd_write_byte(Usb_read_byte());
341 2 hdd_write_byte(Usb_read_byte());
342 2 hdd_write_byte(Usb_read_byte());
343 2 hdd_write_byte(Usb_read_byte());
344 2 hdd_write_byte(Usb_read_byte());
345 2 hdd_write_byte(Usb_read_byte());
346 2 hdd_write_byte(Usb_read_byte());
347 2 hdd_write_byte(Usb_read_byte());
348 2 hdd_write_byte(Usb_read_byte());
349 2 hdd_write_byte(Usb_read_byte());
350 2 hdd_write_byte(Usb_read_byte());
351 2 hdd_write_byte(Usb_read_byte());
352 2 hdd_write_byte(Usb_read_byte());
353 2 hdd_write_byte(Usb_read_byte());
354 2 hdd_write_byte(Usb_read_byte());
355 2 hdd_write_byte(Usb_read_byte());
356 2 hdd_write_byte(Usb_read_byte());
357 2 hdd_write_byte(Usb_read_byte());
358 2 hdd_write_byte(Usb_read_byte());
359 2 hdd_write_byte(Usb_read_byte());
360 2 hdd_write_byte(Usb_read_byte());
361 2 hdd_write_byte(Usb_read_byte());
362 2 hdd_write_byte(Usb_read_byte());
363 2 hdd_write_byte(Usb_read_byte());
C51 COMPILER V7.50 IDEIO 06/03/2006 10:32:52 PAGE 7
364 2 hdd_write_byte(Usb_read_byte());
365 2 hdd_write_byte(Usb_read_byte());
366 2 hdd_write_byte(Usb_read_byte());
367 2 hdd_write_byte(Usb_read_byte());
368 2 hdd_write_byte(Usb_read_byte());
369 2 hdd_write_byte(Usb_read_byte());
370 2 hdd_write_byte(Usb_read_byte());
371 2 hdd_write_byte(Usb_read_byte());
372 2 hdd_write_byte(Usb_read_byte());
373 2 hdd_write_byte(Usb_read_byte());
374 2 hdd_write_byte(Usb_read_byte());
375 2 hdd_write_byte(Usb_read_byte());
376 2 hdd_write_byte(Usb_read_byte());
377 2 hdd_write_byte(Usb_read_byte());
378 2 hdd_write_byte(Usb_read_byte());
379 2 hdd_write_byte(Usb_read_byte());
380 2 hdd_write_byte(Usb_read_byte());
381 2 hdd_write_byte(Usb_read_byte());
382 2 hdd_write_byte(Usb_read_byte());
383 2 hdd_write_byte(Usb_read_byte());
384 2 hdd_write_byte(Usb_read_byte());
385 2 hdd_write_byte(Usb_read_byte());
386 2 hdd_write_byte(Usb_read_byte());
387 2 hdd_write_byte(Usb_read_byte());
388 2 hdd_write_byte(Usb_read_byte());
389 2 hdd_write_byte(Usb_read_byte());
390 2 hdd_write_byte(Usb_read_byte());
391 2 hdd_write_byte(Usb_read_byte());
392 2 hdd_write_byte(Usb_read_byte());
393 2 hdd_write_byte(Usb_read_byte());
394 2 hdd_write_byte(Usb_read_byte());
395 2 hdd_write_byte(Usb_read_byte());
396 2 hdd_write_byte(Usb_read_byte());
397 2 hdd_write_byte(Usb_read_byte());
398 2 hdd_write_byte(Usb_read_byte());
399 2 hdd_write_byte(Usb_read_byte());
400 2 hdd_write_byte(Usb_read_byte());
401 2 hdd_write_byte(Usb_read_byte());
402 2 hdd_write_byte(Usb_read_byte());
403 2
404 2 Usb_clear_RXOUT_PP();
405 2 }
406 1
407 1 hdd_write_open(hdd_sector);
408 1 hdd_write_close();
409 1 return OK;
410 1 }
411
412
413 s_format *hdd_format()
414 {
415 1 code s_format hdd_tab_format=
416 1 /* nb_cylinder, nb_head, nb_sector, nb_hidden, nb_sector_per_cluster */
417 1 { 1000, (Byte)16, (Byte)32, (Byte)63, (Byte)32 };
418 1
419 1 return &hdd_tab_format;
420 1 }
421
422
423
424
425
C51 COMPILER V7.50 IDEIO 06/03/2006 10:32:52 PAGE 8
426
427
428
429
430
431
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1110 ----
CONSTANT SIZE = 6 ----
XDATA SIZE = ---- 9
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -