📄 fat.lst
字号:
813 6 clear_DMA((U8 xdata *)0xF000);
814 6 if(!index)
815 6 {
816 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
817 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
818 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
819 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[0] = (S8)'.';
820 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[1] = (S8)' ';
821 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
822 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
823 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
824 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
C51 COMPILER V8.08 FAT 07/28/2007 11:42:16 PAGE 15
825 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
826 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
827 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
828 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
829 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
830 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
831 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
832 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
833 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
834 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
835 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
836 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusHI = LE16((U16)(varAl.TmpLong >> 16));
837 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
838 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
839 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusLO = LE16((U16)varAl.TmpLong);
840 7 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileSize = 0;
841 7
842 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
843 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
844 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
845 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[0] = (S8)'.';
846 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[1] = (S8)'.';
847 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
848 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
849 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
850 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
851 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
852 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
853 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
854 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
855 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
856 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
857 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
858 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
859 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
860 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
861 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
862 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FSClusHI = 0;
863 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
864 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
865 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FSClusLO = 0;
866 7 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileSize = 0;
867 7 }
868 6 DMA_write_sector(p++, 0x06);
869 6 }
870 5 SendChar(0xC5);
871 5 return;
872 5 }
873 4 else
874 4 {
875 5 FileData.wCurFDBNo++;
876 5 if(!(FileData.wCurFDBNo & 0x0F))
877 5 flag = 0;
878 5 }
879 4 }
880 3 FileData.wCurFDBNo = 0;
881 3 FileData.dwCurCluNo++;
882 3 }
883 2 //return KO;
884 2 }
885 1 else
886 1 {
C51 COMPILER V8.08 FAT 07/28/2007 11:42:16 PAGE 16
887 2 //FAT16
888 2 FileData.wCurFDBNo = 0;
889 2 for(;FileData.wCurFDBNo < (U16)FileData.RootDirNum;)
890 2 {
891 3 if(!flag)
892 3 {
893 4 position = CFatData.dwRootStartlba + (FileData.wCurFDBNo / CFatData.bFDBNumInSec);
894 4 DMA_load_sector(position, 0x06);
895 4 flag = 1;
896 4 }
897 3 if((((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] == (S8)DIR_Unused)
898 3 ||(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] == (S8)DIR_Deleted))
899 3 {
900 4 //在根目录中写入文件夹名
901 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
902 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
903 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
904 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] = (S8)'F';
905 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[1] = (S8)'J';
906 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
907 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
908 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
909 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
910 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
911 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
912 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
913 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
914 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
915 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
916 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
917 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
918 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
919 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
920 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
921 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FSClusHI = LE16((U16)(varAl.TmpLong
- >> 16));
922 4 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
923 4 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
924 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FSClusLO = LE16((U16)varAl.TmpLong)
-;
925 4 ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileSize = 0;
926 4 DMA_write_sector(position, 0x06);
927 4
928 4 //写子目录父目录索引, 并至少清除一簇
929 4 p = CFatData.dwClu2Startlba + (varAl.TmpLong - 2)* (U32)CFatData.bSectorsPerClu;
930 4 //DMA_load_sector(p, 0x06);
931 4 for(index = 0; index < CFatData.bSectorsPerClu; index++)
932 4 {
933 5 clear_DMA((U8 xdata *)0xF000);;
934 5 if(!index)
935 5 {
936 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
937 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
938 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
939 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[0] = (S8)'.';
940 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[1] = (S8)' ';
941 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
942 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
943 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
944 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
945 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
946 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
C51 COMPILER V8.08 FAT 07/28/2007 11:42:16 PAGE 17
947 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
948 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
949 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
950 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
951 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
952 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
953 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
954 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
955 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
956 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusHI = LE16((U16)(varAl.TmpLong >> 16));
957 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
958 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
959 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusLO = LE16((U16)varAl.TmpLong);
960 6 ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileSize = 0;
961 6
962 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
963 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
964 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
965 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[0] = (S8)'.';
966 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[1] = (S8)'.';
967 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
968 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
969 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
970 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
971 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
972 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
973 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
974 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
975 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
976 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
977 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
978 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
979 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
980 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
981 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
982 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FSClusHI = 0;
983 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
984 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
985 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FSClusLO = 0;
986 6 ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileSize = 0;
987 6 }
988 5 DMA_write_sector(p++, 0x06);
989 5 }
990 4 SendChar(0xC6);
991 4 return;
992 4 }
993 3 else
994 3 {
995 4 FileData.wCurFDBNo++;
996 4 if(!(FileData.wCurFDBNo & 0x0F))
997 4 flag = 0;
998 4 }
999 3 }
1000 2 }
1001 1 }
1002 #endif
1003 //***********************************************
1004 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 10070 ----
C51 COMPILER V8.08 FAT 07/28/2007 11:42:16 PAGE 18
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 39
IDATA SIZE = ---- ----
BIT SIZE = ---- 5
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -