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

📄 file.lst

📁 protues仿真
💻 LST
📖 第 1 页 / 共 5 页
字号:
   1               		.file	"file.c"
   2               		.arch atmega128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  80               		.lcomm FileManage,27
  82               	.global	_Z7FS_Initv
  84               	_Z7FS_Initv:
   1:file.c        **** /*
   2:file.c        **** ;**************************************************************************************************
   3:file.c        **** ;*									Copyright (c) 2006 by JiaoJinXing. 
   4:file.c        **** ;*											All rights reserved.
   5:file.c        **** ;*
   6:file.c        **** ;*---- 文件信息 -----------------------------------------------------------------------------------
   7:file.c        **** ;* 文   件   名 : file.c
   8:file.c        **** ;* 创   建   人 : 焦进星
   9:file.c        **** ;* 描        述 : 文件操作文件
  10:file.c        **** ;*
  11:file.c        **** ;*---- 历史版本信息 -------------------------------------------------------------------------------
  12:file.c        **** ;* 日   期  : 2008年 12 月 15 日
  13:file.c        **** ;* 创 建 人  : 焦进星
  14:file.c        **** ;* 描   述  : 建立版本 V1.0.0
  15:file.c        **** ;*
  16:file.c        **** ;*---- 联系方式 -----------------------------------------------------------------------------------
  17:file.c        **** ;* Email    : wyoujtg@163.com
  18:file.c        **** ;* Web      : http://wyoujtg.blog.163.com  
  19:file.c        **** ;**************************************************************************************************
  20:file.c        **** ;*/
  21:file.c        **** 
  22:file.c        **** #include "minifs.h"
  23:file.c        **** 
  24:file.c        **** /*
  25:file.c        **** ;**************************************************************************************************
  26:file.c        **** ;* 变量名称 : FileManageInfo
  27:file.c        **** ;* 描    述 : 文件管理器
  28:file.c        **** ;**************************************************************************************************
  29:file.c        **** ;*/
  30:file.c        **** static struct FileManageInfo FileManage[MAX_FILE_OPEN];
  31:file.c        **** 
  32:file.c        **** /*
  33:file.c        **** ;**************************************************************************************************
  34:file.c        **** ;* 函数名称 : FS_Init
  35:file.c        **** ;* 描    述 : 文件系统初始化
  36:file.c        **** ;* 输 	 入 : 无
  37:file.c        **** ;*        
  38:file.c        **** ;* 输 	 出 : TRUE OR FALSE
  39:file.c        **** ;**************************************************************************************************
  40:file.c        **** ;*/
  41:file.c        **** uint8 FS_Init(void)
  42:file.c        **** {	
  86               	.LM1:
  87               	/* prologue: frame size=0 */
  88               	/* prologue end (size=0) */
  89               	.LBB2:
  90               	.LBB3:
  43:file.c        **** 	M_FILE pf = FileManage;
  44:file.c        **** 	uint8 i;
  45:file.c        **** 
  46:file.c        **** 	/* 扇区缓存器初始化 */
  47:file.c        **** 	Cache_Init();
  92               	.LM2:
  93 0000 0E94 0000 		call _Z10Cache_Initv
  48:file.c        **** 
  49:file.c        **** 	/* 文件管理器初始化 */
  50:file.c        **** 	for (i = 0; i < MAX_FILE_OPEN; i++, pf++)
  51:file.c        **** 	{
  52:file.c        **** 		ClearNbyte((uint8 *)pf, sizeof(struct FileManageInfo));
  95               	.LM3:
  96 0004 6BE1      		ldi r22,lo8(27)
  97 0006 70E0      		ldi r23,hi8(27)
  98 0008 80E0      		ldi r24,lo8(FileManage)
  99 000a 90E0      		ldi r25,hi8(FileManage)
 100 000c 0E94 0000 		call _Z10ClearNbytePvj
  53:file.c        **** 	}
  54:file.c        **** 
  55:file.c        **** 	/* 磁盘初始化 */
  56:file.c        **** 	return Disk_Init();
 102               	.LM4:
 103 0010 0E94 0000 		call _Z9Disk_Initv
 104               	.LBE3:
 105               	.LBE2:
  57:file.c        **** }
 107               	.LM5:
 108 0014 9927      		clr r25
 109               	/* epilogue: frame size=0 */
 110 0016 0895      		ret
 111               	/* epilogue end (size=1) */
 112               	/* function uint8 FS_Init() size 12 (11) */
 115               	.global	_Z14GetFreeFileManv
 117               	_Z14GetFreeFileManv:
  58:file.c        **** 
  59:file.c        **** /*
  60:file.c        **** ;**************************************************************************************************
  61:file.c        **** ;* 函数名称 : GetFreeFileMan
  62:file.c        **** ;* 描    述 : 分配空闲文件管理器
  63:file.c        **** ;* 输 	 入 : 无
  64:file.c        **** ;*        
  65:file.c        **** ;* 输 	 出 : 文件指针
  66:file.c        **** ;**************************************************************************************************
  67:file.c        **** ;*/	
  68:file.c        **** M_FILE GetFreeFileMan(void)
  69:file.c        **** {
 119               	.LM6:
 120               	/* prologue: frame size=0 */
 121               	/* prologue end (size=0) */
 122               	.LBB4:
 123               	.LBB5:
  70:file.c        **** 	M_FILE pf = FileManage;
  71:file.c        **** 	uint8 i;
  72:file.c        **** 
  73:file.c        **** 	for (i = 0; i < MAX_FILE_OPEN; i++, pf++)
  74:file.c        **** 	{
  75:file.c        **** 		if (pf->Flag == 0x00)
 125               	.LM7:
 126 0018 8091 0000 		lds r24,FileManage+18
 127 001c 8823      		tst r24
 128 001e 31F4      		brne .L18
  76:file.c        **** 		{
  77:file.c        **** 			pf->Flag = FILE_OPEN;
 130               	.LM8:
 131 0020 81E0      		ldi r24,lo8(1)
 132 0022 8093 0000 		sts FileManage+18,r24
  78:file.c        **** 			return pf;
 134               	.LM9:
 135 0026 80E0      		ldi r24,lo8(FileManage)
 136 0028 90E0      		ldi r25,hi8(FileManage)
 137 002a 0895      		ret
 138               	.L18:
  79:file.c        **** 		}
  80:file.c        **** 	}
  81:file.c        **** 	return ((M_FILE)0);
 140               	.LM10:
 141 002c 80E0      		ldi r24,lo8(0)
 142 002e 90E0      		ldi r25,hi8(0)
 143               	.LBE5:
 144               	.LBE4:
  82:file.c        **** }
 146               	.LM11:
 147 0030 0895      		ret
 148               	/* epilogue: frame size=0 */
 149 0032 0895      		ret
 150               	/* epilogue end (size=1) */
 151               	/* function FileManageInfo* GetFreeFileMan() size 14 (13) */
 155               	.global	_Z11_IsFileOpenPc
 157               	_Z11_IsFileOpenPc:
  83:file.c        **** 
  84:file.c        **** /*
  85:file.c        **** ;**************************************************************************************************
  86:file.c        **** ;* 函数名称 : _IsFileOpen
  87:file.c        **** ;* 描    述 : 判断文件是否已打开
  88:file.c        **** ;* 输 	 入 : Filename[11]: 内部文件名
  89:file.c        **** ;*        
  90:file.c        **** ;* 输 	 出 : 文件指针
  91:file.c        **** ;**************************************************************************************************
  92:file.c        **** ;*/	
  93:file.c        **** M_FILE _IsFileOpen(char Filename[11])
  94:file.c        **** {
 159               	.LM12:
 160               	/* prologue: frame size=0 */
 161 0034 CF93      		push r28
 162 0036 DF93      		push r29
 163               	/* prologue end (size=2) */
 164 0038 BC01      		movw r22,r24
 165               	.LBB6:
 166               	.LBB7:
  95:file.c        **** 	M_FILE pf = FileManage;
 168               	.LM13:
 169 003a C0E0      		ldi r28,lo8(FileManage)
 170 003c D0E0      		ldi r29,hi8(FileManage)
  96:file.c        **** 	uint8 i;
  97:file.c        **** 
  98:file.c        **** 	for (i = 0; i < MAX_FILE_OPEN; i++, pf++)
  99:file.c        **** 	{
 100:file.c        **** 		if (pf->Flag & FILE_OPEN)
 172               	.LM14:
 173 003e 8091 0000 		lds r24,FileManage+18
 174 0042 9927      		clr r25
 175 0044 8170      		andi r24,lo8(1)
 176 0046 9070      		andi r25,hi8(1)
 177 0048 8823      		tst r24
 178 004a 49F0      		breq .L30
 101:file.c        **** 		{	
 102:file.c        **** 			if (IsEqual(pf->fFDT.Name, Filename, 11))
 180               	.LM15:
 181 004c 4BE0      		ldi r20,lo8(11)
 182 004e 50E0      		ldi r21,hi8(11)
 183 0050 CE01      		movw r24,r28
 184 0052 0E94 0000 		call _Z7IsEqualPvS_j
 185 0056 8823      		tst r24
 186 0058 11F0      		breq .L30
 103:file.c        **** 			{
 104:file.c        **** 				return pf;
 188               	.LM16:
 189 005a CE01      		movw r24,r28
 190 005c 02C0      		rjmp .L21
 191               	.L30:
 105:file.c        **** 			}
 106:file.c        **** 		}
 107:file.c        **** 	}
 108:file.c        **** 	return ((M_FILE)0);
 193               	.LM17:
 194 005e 80E0      		ldi r24,lo8(0)
 195 0060 90E0      		ldi r25,hi8(0)
 196               	.L21:
 197               	.LBE7:
 198               	.LBE6:
 199               	/* epilogue: frame size=0 */
 200 0062 DF91      		pop r29
 201 0064 CF91      		pop r28
 202 0066 0895      		ret
 203               	/* epilogue end (size=3) */
 204               	/* function FileManageInfo* _IsFileOpen(char*) size 26 (21) */
 211               	.global	_Z10IsFileOpenPc
 213               	_Z10IsFileOpenPc:
 109:file.c        **** }
 110:file.c        **** 
 111:file.c        **** /*
 112:file.c        **** ;**************************************************************************************************
 113:file.c        **** ;* 函数名称 : IsFileOpen
 114:file.c        **** ;* 描    述 : 判断文件是否已打开
 115:file.c        **** ;* 输 	 入 : NameStr[11]: 外部文件名
 116:file.c        **** ;*        
 117:file.c        **** ;* 输 	 出 : 文件指针
 118:file.c        **** ;**************************************************************************************************
 119:file.c        **** ;*/	
 120:file.c        **** M_FILE IsFileOpen(char NameStr[11])
 121:file.c        **** {
 215               	.LM18:
 216               	/* prologue: frame size=11 */
 217 0068 CF93      		push r28
 218 006a DF93      		push r29
 219 006c CDB7      		in r28,__SP_L__
 220 006e DEB7      		in r29,__SP_H__
 221 0070 2B97      		sbiw r28,11
 222 0072 0FB6      		in __tmp_reg__,__SREG__
 223 0074 F894      		cli
 224 0076 DEBF      		out __SP_H__,r29
 225 0078 0FBE      		out __SREG__,__tmp_reg__
 226 007a CDBF      		out __SP_L__,r28
 227               	/* prologue end (size=10) */
 228               	.LBB8:
 229               	.LBB9:
 122:file.c        **** 	char Filename[11];
 123:file.c        **** 
 124:file.c        **** 	/* 转化为内部文件名 */
 125:file.c        **** 	if (!FileNameChange(NameStr, Filename))
 231               	.LM19:
 232 007c BE01      		movw r22,r28
 233 007e 6F5F      		subi r22,lo8(-(1))
 234 0080 7F4F      		sbci r23,hi8(-(1))
 235 0082 0E94 0000 		call _Z14FileNameChangePcS_
 236 0086 8823      		tst r24
 237 0088 19F4      		brne .L34
 126:file.c        **** 	{
 127:file.c        **** 		return ((M_FILE)0);
 239               	.LM20:
 240 008a 80E0      		ldi r24,lo8(0)
 241 008c 90E0      		ldi r25,hi8(0)
 242 008e 04C0      		rjmp .L33
 243               	.L34:
 128:file.c        **** 	}
 129:file.c        **** 
 130:file.c        **** 	return _IsFileOpen(Filename);
 245               	.LM21:
 246 0090 CE01      		movw r24,r28
 247 0092 0196      		adiw r24,1
 248 0094 0E94 0000 		call _Z11_IsFileOpenPc
 249               	.L33:
 250               	.LBE9:
 251               	.LBE8:
 252               	/* epilogue: frame size=11 */
 253 0098 2B96      		adiw r28,11
 254 009a 0FB6      		in __tmp_reg__,__SREG__
 255 009c F894      		cli
 256 009e DEBF      		out __SP_H__,r29
 257 00a0 0FBE      		out __SREG__,__tmp_reg__
 258 00a2 CDBF      		out __SP_L__,r28
 259 00a4 DF91      		pop r29
 260 00a6 CF91      		pop r28
 261 00a8 0895      		ret
 262               	/* epilogue end (size=9) */
 263               	/* function FileManageInfo* IsFileOpen(char*) size 33 (14) */
 270               	.global	_Z11FreeFileManP14FileManageInfo
 272               	_Z11FreeFileManP14FileManageInfo:
 131:file.c        **** }
 132:file.c        **** 
 133:file.c        **** /*
 134:file.c        **** ;**************************************************************************************************
 135:file.c        **** ;* 函数名称 : FreeFileMan
 136:file.c        **** ;* 描    述 : 释放文件管理器
 137:file.c        **** ;* 输 	 入 : M_FILE: 文件指针
 138:file.c        **** ;*        
 139:file.c        **** ;* 输 	 出 : 无
 140:file.c        **** ;**************************************************************************************************
 141:file.c        **** ;*/
 142:file.c        **** void FreeFileMan(M_FILE pf)
 143:file.c        **** {
 274               	.LM22:
 275               	/* prologue: frame size=0 */
 276               	/* prologue end (size=0) */
 277               	.LBB10:
 144:file.c        **** 	ClearNbyte((uint8 *)pf, sizeof(struct FileManageInfo));
 279               	.LM23:
 280 00aa 6BE1      		ldi r22,lo8(27)
 281 00ac 70E0      		ldi r23,hi8(27)
 282 00ae 0E94 0000 		call _Z10ClearNbytePvj
 283               	.LBE10:
 284               	/* epilogue: frame size=0 */
 285 00b2 0895      		ret
 286               	/* epilogue end (size=1) */
 287               	/* function void FreeFileMan(FileManageInfo*) size 5 (4) */
 291               	.global	_Z11_CreateFilePc
 293               	_Z11_CreateFilePc:
 145:file.c        **** }
 146:file.c        **** 
 147:file.c        **** /*

⌨️ 快捷键说明

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