?? file_system.lst
字號:
C51 COMPILER V7.06 FILE_SYSTEM 03/02/2006 23:11:50 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FILE_SYSTEM
OBJECT MODULE PLACED IN file_system.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE file_system.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /************************************************************************************
2 本程序僅供廣大電子愛好者制作MP3學習和參考使用,不得用于其它用途,否則后果自負
3
4 file_system.c file
5 Created by Computer-lov. Date: 2005.3.19
6 Last edited date: 2005.5.31
7 version 1.1
8 Copyright (c) 2005 Computer-lov
9 All rigths reserved
10 *************************************************************************************/
11
12 #include "file_system.h"
13 #include "IDE.H"
14 #include "hardware.h"
15 #include "lcd.h"
16 #include "mp3.h"
17 #include "keyboard.h"
18
19
20 FILE xdata file;
21 unsigned int dir_length; //文件名長度
22 unsigned int folder_length; //文件夾名長度
23
24 //////////////////////////////////// 判斷是否為一個 MP3 文件 ///////////////////////////////
25 unsigned char is_a_mp3_file(void)
26 {
27 1 if((file.name[0]==0x00)||(file.name[0]==0xE5)||(file.name[0]=='.'))return 0;
28 1 if(file.attribute==0x0F)return 0; //此項目為長文件名項目
29 1 if(file.attribute & 0x04)return 0; //此文件為系統文件
30 1 if(file.attribute & 0x08)return 0; //此項目為系統標卷
31 1 if(file.attribute & 0x10)return 0; //此項目為子目錄
32 1 if((file.name[8]=='M')&&(file.name[9]=='P')&&(file.name[10]=='3'))return 1;
33 1 else return 0;
34 1 }
35 ///////////////////////////////////////////////////////////////////////////////////////////////
36
37 unsigned long int LAST_FAT_LBA;
38 //最后一次讀取FAT時的邏輯塊地址,用來判斷本次讀取是否需要重新從硬盤中讀取,以加快速度
39 unsigned int disp_count=0;
40 unsigned char disp_time;
41
42 ////////////////////////////////////////////////////////////////////////////////////////////////
43 unsigned long int get_next_sector(void) //根據當前簇號,獲取下一個扇區地址
44 {
45 1 unsigned long int LBA;
46 1 unsigned int i;
47 1 LBA=(file.next_cluster_number)/((dbr[driver_number].bytes_per_sectors)/4); //計算扇區地址
48 1 i=(file.next_cluster_number)*4-LBA*dbr[driver_number].bytes_per_sectors; //計算偏移地址
49 1 if(LAST_FAT_LBA!=LBA) //如果數據不在FAT_buffer[]中,則需要重新讀取
50 1 {
51 2 LAST_FAT_LBA=LBA;
52 2 LBA=LBA+FAT_start_sector[driver_number];
53 2 read_IDE_FAT_sector(LBA);
54 2 }
55 1 ((unsigned char *)&(file.next_cluster_number))[3]=FAT_buffer[i];
C51 COMPILER V7.06 FILE_SYSTEM 03/02/2006 23:11:50 PAGE 2
56 1 i++;
57 1 ((unsigned char *)&(file.next_cluster_number))[2]=FAT_buffer[i];
58 1 i++;
59 1 ((unsigned char *)&(file.next_cluster_number))[1]=FAT_buffer[i];
60 1 i++;
61 1 ((unsigned char *)&(file.next_cluster_number))[0]=FAT_buffer[i]; //獲取下一簇號
62 1 LBA=file.next_cluster_number-(dbr[driver_number].root_cluster_num); //
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -