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

📄 file.lst

📁 protues仿真
💻 LST
📖 第 1 页 / 共 5 页
字号:
 148:file.c        **** ;**************************************************************************************************
 149:file.c        **** ;* 函数名称 : _CreateFile
 150:file.c        **** ;* 描    述 : 创建文件
 151:file.c        **** ;* 输 	 入 : Filename[11]: 内部文件名
 152:file.c        **** ;*        
 153:file.c        **** ;* 输 	 出 : 文件目录项索引, MAX_FDT_NUM时为失败
 154:file.c        **** ;**************************************************************************************************
 155:file.c        **** ;*/
 156:file.c        **** uint16 _CreateFile(char Filename[11])
 157:file.c        **** {
 295               	.LM24:
 296               	/* prologue: frame size=18 */
 297 00b4 CF92      		push r12
 298 00b6 DF92      		push r13
 299 00b8 EF92      		push r14
 300 00ba FF92      		push r15
 301 00bc 0F93      		push r16
 302 00be 1F93      		push r17
 303 00c0 CF93      		push r28
 304 00c2 DF93      		push r29
 305 00c4 CDB7      		in r28,__SP_L__
 306 00c6 DEB7      		in r29,__SP_H__
 307 00c8 6297      		sbiw r28,18
 308 00ca 0FB6      		in __tmp_reg__,__SREG__
 309 00cc F894      		cli
 310 00ce DEBF      		out __SP_H__,r29
 311 00d0 0FBE      		out __SREG__,__tmp_reg__
 312 00d2 CDBF      		out __SP_L__,r28
 313               	/* prologue end (size=16) */
 314 00d4 6C01      		movw r12,r24
 315               	.LBB11:
 316               	.LBB12:
 158:file.c        **** 	FDT fFDT;
 159:file.c        **** 	uint16 ClusIndex, FDTIndex;
 160:file.c        **** 
 161:file.c        **** 	/* 查看是否已存在该文件 */
 162:file.c        **** 	if (FindSYSNameRootFDT(Filename, &fFDT) != FDT_NO_FOUND)
 318               	.LM25:
 319 00d6 BE01      		movw r22,r28
 320 00d8 6F5F      		subi r22,lo8(-(1))
 321 00da 7F4F      		sbci r23,hi8(-(1))
 322 00dc 0E94 0000 		call _Z18FindSYSNameRootFDTPcP4_FDT
 323 00e0 2091 0000 		lds r18,FS_RootEntCnt
 324 00e4 3091 0000 		lds r19,(FS_RootEntCnt)+1
 325 00e8 8217      		cp r24,r18
 326 00ea 9307      		cpc r25,r19
 327 00ec 11F0      		breq .L37
 163:file.c        **** 	{
 164:file.c        **** 		return MAX_FDT_NUM;
 329               	.LM26:
 330 00ee C901      		movw r24,r18
 331 00f0 34C0      		rjmp .L36
 332               	.L37:
 165:file.c        **** 	}
 166:file.c        **** 
 167:file.c        **** 	/* 建立簇链 */
 168:file.c        **** 	ClusIndex = AddNewClus(EMPTY_CLUS);
 334               	.LM27:
 335 00f2 80E0      		ldi r24,lo8(0)
 336 00f4 90E0      		ldi r25,hi8(0)
 337 00f6 0E94 0000 		call _Z10AddNewClusj
 338 00fa 7C01      		movw r14,r24
 169:file.c        **** 	if (ClusIndex == BAD_CLUS)
 340               	.LM28:
 341 00fc 87EF      		ldi r24,lo8(-9)
 342 00fe E816      		cp r14,r24
 343 0100 8FEF      		ldi r24,hi8(-9)
 344 0102 F806      		cpc r15,r24
 345 0104 31F1      		breq .L42
 170:file.c        **** 	{
 171:file.c        **** 		return MAX_FDT_NUM;
 172:file.c        **** 	}		
 173:file.c        **** 	
 174:file.c        **** 	/* 获得一个空闲文件目录项 */
 175:file.c        **** 	FDTIndex = GetFreeRootFDT();
 347               	.LM29:
 348 0106 0E94 0000 		call _Z14GetFreeRootFDTv
 349 010a 8C01      		movw r16,r24
 176:file.c        **** 	if (FDTIndex == MAX_FDT_NUM)
 351               	.LM30:
 352 010c 8091 0000 		lds r24,FS_RootEntCnt
 353 0110 9091 0000 		lds r25,(FS_RootEntCnt)+1
 354 0114 0817      		cp r16,r24
 355 0116 1907      		cpc r17,r25
 356 0118 C1F0      		breq .L40
 177:file.c        **** 	{
 178:file.c        **** 		goto ERR;
 179:file.c        **** 	}
 180:file.c        **** 
 181:file.c        **** 	/* 文件目录项名字 */
 182:file.c        **** 	CopyNbyte(fFDT.Name, Filename, 11);
 358               	.LM31:
 359 011a 4BE0      		ldi r20,lo8(11)
 360 011c 50E0      		ldi r21,hi8(11)
 361 011e B601      		movw r22,r12
 362 0120 CE01      		movw r24,r28
 363 0122 0196      		adiw r24,1
 364 0124 0E94 0000 		call _Z9CopyNbytePvS_j
 183:file.c        **** 
 184:file.c        **** 	/* 文件目录项属性 */
 185:file.c        **** 	fFDT.FstClusLO  = ClusIndex;
 366               	.LM32:
 367 0128 ED86      		std Y+13,r14
 368 012a FE86      		std Y+14,r15
 186:file.c        **** 	fFDT.Attr		= 0;
 370               	.LM33:
 371 012c 1C86      		std Y+12,__zero_reg__
 187:file.c        **** 	fFDT.FileSize	= 0;
 373               	.LM34:
 374 012e 1F86      		std Y+15,__zero_reg__
 375 0130 188A      		std Y+16,__zero_reg__
 376 0132 198A      		std Y+17,__zero_reg__
 377 0134 1A8A      		std Y+18,__zero_reg__
 188:file.c        **** 
 189:file.c        **** 	/* 写文件目录项 */
 190:file.c        **** 	if (!WriteRootFDTInfo(FDTIndex, &fFDT))
 379               	.LM35:
 380 0136 BE01      		movw r22,r28
 381 0138 6F5F      		subi r22,lo8(-(1))
 382 013a 7F4F      		sbci r23,hi8(-(1))
 383 013c C801      		movw r24,r16
 384 013e 0E94 0000 		call _Z16WriteRootFDTInfojP4_FDT
 385 0142 8823      		tst r24
 386 0144 11F0      		breq .L40
 191:file.c        **** 	{
 192:file.c        **** 		goto ERR;
 193:file.c        **** 	}
 194:file.c        **** 	/* 返回文件目录项索引 */
 195:file.c        **** 	return FDTIndex;		
 388               	.LM36:
 389 0146 C801      		movw r24,r16
 390 0148 08C0      		rjmp .L36
 391               	.L40:
 196:file.c        **** 
 197:file.c        **** ERR:
 198:file.c        **** 	/* 出错, 删除簇链 */
 199:file.c        **** 	DelClusChain(fFDT.FstClusLO);
 393               	.LM37:
 394 014a 8D85      		ldd r24,Y+13
 395 014c 9E85      		ldd r25,Y+14
 396 014e 0E94 0000 		call _Z12DelClusChainj
 397               	.L42:
 200:file.c        **** 	return MAX_FDT_NUM;
 399               	.LM38:
 400 0152 8091 0000 		lds r24,FS_RootEntCnt
 401 0156 9091 0000 		lds r25,(FS_RootEntCnt)+1
 402               	.L36:
 403               	.LBE12:
 404               	.LBE11:
 405               	/* epilogue: frame size=18 */
 406 015a 6296      		adiw r28,18
 407 015c 0FB6      		in __tmp_reg__,__SREG__
 408 015e F894      		cli
 409 0160 DEBF      		out __SP_H__,r29
 410 0162 0FBE      		out __SREG__,__tmp_reg__
 411 0164 CDBF      		out __SP_L__,r28
 412 0166 DF91      		pop r29
 413 0168 CF91      		pop r28
 414 016a 1F91      		pop r17
 415 016c 0F91      		pop r16
 416 016e FF90      		pop r15
 417 0170 EF90      		pop r14
 418 0172 DF90      		pop r13
 419 0174 CF90      		pop r12
 420 0176 0895      		ret
 421               	/* epilogue end (size=15) */
 422               	/* function uint16 _CreateFile(char*) size 98 (67) */
 431               	.global	_Z10CreateFilePc
 433               	_Z10CreateFilePc:
 201:file.c        **** }
 202:file.c        **** 
 203:file.c        **** /*
 204:file.c        **** ;**************************************************************************************************
 205:file.c        **** ;* 函数名称 : CreateFile
 206:file.c        **** ;* 描    述 : 创建文件
 207:file.c        **** ;* 输 	 入 : NameStr[11]: 文件名
 208:file.c        **** ;*        
 209:file.c        **** ;* 输 	 出 : TRUE OR FALSE
 210:file.c        **** ;**************************************************************************************************
 211:file.c        **** ;*/	
 212:file.c        **** uint8 CreateFile(char NameStr[11])
 213:file.c        **** {
 435               	.LM39:
 436               	/* prologue: frame size=11 */
 437 0178 CF93      		push r28
 438 017a DF93      		push r29
 439 017c CDB7      		in r28,__SP_L__
 440 017e DEB7      		in r29,__SP_H__
 441 0180 2B97      		sbiw r28,11
 442 0182 0FB6      		in __tmp_reg__,__SREG__
 443 0184 F894      		cli
 444 0186 DEBF      		out __SP_H__,r29
 445 0188 0FBE      		out __SREG__,__tmp_reg__
 446 018a CDBF      		out __SP_L__,r28
 447               	/* prologue end (size=10) */
 448               	.LBB13:
 449               	.LBB14:
 214:file.c        **** 	char Filename[11];
 215:file.c        **** 
 216:file.c        **** 	/* 转化为内部文件名 */
 217:file.c        **** 	if (!FileNameChange(NameStr, Filename))
 451               	.LM40:
 452 018c BE01      		movw r22,r28
 453 018e 6F5F      		subi r22,lo8(-(1))
 454 0190 7F4F      		sbci r23,hi8(-(1))
 455 0192 0E94 0000 		call _Z14FileNameChangePcS_
 456 0196 8823      		tst r24
 457 0198 59F0      		breq .L46
 218:file.c        **** 	{
 219:file.c        **** 		return FALSE;
 220:file.c        **** 	}
 221:file.c        **** 	/* 创建文件 */
 222:file.c        **** 	if (_CreateFile(Filename) == MAX_FDT_NUM)
 459               	.LM41:
 460 019a CE01      		movw r24,r28
 461 019c 0196      		adiw r24,1
 462 019e 0E94 0000 		call _Z11_CreateFilePc
 463 01a2 2091 0000 		lds r18,FS_RootEntCnt
 464 01a6 3091 0000 		lds r19,(FS_RootEntCnt)+1
 465 01aa 8217      		cp r24,r18
 466 01ac 9307      		cpc r25,r19
 467 01ae 19F4      		brne .L45
 468               	.L46:
 223:file.c        **** 	{
 224:file.c        **** 		return FALSE;
 470               	.LM42:
 471 01b0 80E0      		ldi r24,lo8(0)
 472 01b2 90E0      		ldi r25,hi8(0)
 473 01b4 02C0      		rjmp .L43
 474               	.L45:
 225:file.c        **** 	}
 226:file.c        **** 	return TRUE;
 476               	.LM43:
 477 01b6 81E0      		ldi r24,lo8(1)
 478 01b8 90E0      		ldi r25,hi8(1)
 479               	.L43:
 480               	.LBE14:
 481               	.LBE13:
 482               	/* epilogue: frame size=11 */
 483 01ba 2B96      		adiw r28,11
 484 01bc 0FB6      		in __tmp_reg__,__SREG__
 485 01be F894      		cli
 486 01c0 DEBF      		out __SP_H__,r29
 487 01c2 0FBE      		out __SREG__,__tmp_reg__
 488 01c4 CDBF      		out __SP_L__,r28
 489 01c6 DF91      		pop r29
 490 01c8 CF91      		pop r28
 491 01ca 0895      		ret
 492               	/* epilogue end (size=9) */
 493               	/* function uint8 CreateFile(char*) size 42 (23) */
 500               	.global	_Z8OpenFilePc
 502               	_Z8OpenFilePc:
 227:file.c        **** }
 228:file.c        **** 
 229:file.c        **** /*
 230:file.c        **** ;**************************************************************************************************
 231:file.c        **** ;* 函数名称 : OpenFile
 232:file.c        **** ;* 描    述 : 打开文件
 233:file.c        **** ;* 输 	 入 : NameStr[11]: 外部文件名
 234:file.c        **** ;*        
 235:file.c        **** ;* 输 	 出 : 文件指针
 236:file.c        **** ;**************************************************************************************************
 237:file.c        **** ;*/
 238:file.c        **** M_FILE OpenFile(char NameStr[11])
 239:file.c        **** {
 504               	.LM44:
 505               	/* prologue: frame size=11 */
 506 01cc EF92      		push r14
 507 01ce FF92      		push r15
 508 01d0 0F93      		push r16
 509 01d2 1F93      		push r17
 510 01d4 CF93      		push r28
 511 01d6 DF93      		push r29
 512 01d8 CDB7      		in r28,__SP_L__
 513 01da DEB7      		in r29,__SP_H__
 514 01dc 2B97      		sbiw r28,11
 515 01de 0FB6      		in __tmp_reg__,__SREG__
 516 01e0 F894      		cli
 517 01e2 DEBF      		out __SP_H__,r29
 518 01e4 0FBE      		out __SREG__,__tmp_reg__
 519 01e6 CDBF      		out __SP_L__,r28
 520               	/* prologue end (size=14) */
 521               	.LBB15:
 522               	.LBB16:
 240:file.c        **** 	char Filename[11];
 241:file.c        **** 	uint16 FDTIndex;
 242:file.c        **** 	M_FILE fp;
 243:file.c        **** 
 244:file.c        **** 	/* 转化为内部文件名 */
 245:file.c        **** 	if (!FileNameChange(NameStr, Filename))
 524               	.LM45:
 525 01e8 BE01      		movw r22,r28
 526 01ea 6F5F      		subi r22,lo8(-(1))
 527 01ec 7F4F      		sbci r23,hi8(-(1))
 528 01ee 0E94 0000 		call _Z14FileNameChangePcS_
 529 01f2 8823      		tst r24
 530 01f4 41F1      		breq .L54
 246:file.c        **** 	{
 247:file.c        **** 		return ((M_FILE)0);
 248:file.c        **** 	}
 249:file.c        **** 
 250:file.c        **** 	/* 文件是否已打开 */
 251:file.c        **** 	fp = _IsFileOpen(Filename);
 532               	.LM46:
 533 01f6 CE01      		movw r24,r28
 534 01f8 0196      		adiw r24,1
 535 01fa 0E94 0000 		call _Z11_IsFileOpenPc
 536 01fe 8C01      		movw r16,r24
 252:file.c        **** 	if (fp)
 538               	.LM47:
 539 0200 892B      		or r24,r25
 540 0202 99F5      		brne .L53
 253:file.c        **** 	{
 254:file.c        **** 		return fp;
 255:file.c        **** 	}
 256:file.c        **** 
 257:file.c        **** 	/* 分配文件管理器 */
 258:file.c        **** 	fp = GetFreeFileMan();
 542               	.LM48:
 543 0204 0E94 0000 		call _Z14GetFreeFileManv
 544 0208 8C01      		movw r16,r24
 259:file.c        **** 	if (!fp)

⌨️ 快捷键说明

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