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

📄 f34x_msd_cmd.src

📁 USB读写SD卡例程
💻 SRC
📖 第 1 页 / 共 3 页
字号:
?C0041:
;       Cmd_Help();
			; SOURCE LINE # 254
;     }
			; SOURCE LINE # 255
	LJMP 	?C0078
;     return;
;   }
			; SOURCE LINE # 257
?C0040:
; 
;   if(Cmd_Match("dir")) {
			; SOURCE LINE # 259
	MOV  	R2,#HIGH (?SC_221)
	MOV  	R1,#LOW (?SC_221)
	LCALL	L?0096
	JZ   	?C0044
;     Cmd_Dir();
			; SOURCE LINE # 260
	LJMP 	Cmd_Dir
;     return;
;   }
			; SOURCE LINE # 262
?C0044:
; 
;   if(Cmd_Match("s")) {
			; SOURCE LINE # 264
	MOV  	R2,#HIGH (?SC_225)
	MOV  	R1,#LOW (?SC_225)
	LCALL	L?0096
	JNZ  	$ + 5H
	LJMP 	?C0045
;     Token=Str_Token(0);
			; SOURCE LINE # 265
	LCALL	L?0083
; 
;     if((*Token > 0x29) && (*Token < 0x40))
			; SOURCE LINE # 267
	LCALL	?C?CLDPTR
	MOV  	R7,A
	SETB 	C
	XRL  	A,#080H
	SUBB 	A,#0A9H
	JNC  	$ + 5H
	LJMP 	?C0046
	MOV  	A,R7
	XRL  	A,#080H
	SUBB 	A,#0C0H
	JC   	$ + 5H
	LJMP 	?C0046
;     {
			; SOURCE LINE # 268
; 		dw=atol(Token);
			; SOURCE LINE # 269
	MOV  	DPTR,#Token
	LCALL	L?0082
	LCALL	_atol
	MOV  	DPTR,#dw?551
	LCALL	?C?LSTXDATA
; 		printf("Sector 0x%08lX:"ENDLINE,dw);
			; SOURCE LINE # 270
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_227)
	MOV  	R1,#LOW (?SC_227)
	LCALL	L?0089
	LCALL	L?0103
	LCALL	_printf
; 	    Sect_Read(dw);
			; SOURCE LINE # 271
	LCALL	L?0089
	LCALL	_Sect_Read
; 	    for(i=0;i<Sect_Block_Size()/16;i++) {
			; SOURCE LINE # 272
	CLR  	A
	MOV  	DPTR,#i?548
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0047:
	MOV  	DPTR,#i?548
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	SUBB 	A,#020H
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	$ + 5H
	LJMP 	?C0048
; 	      printf("%04X: ",i*16);
			; SOURCE LINE # 273
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_245)
	MOV  	R1,#LOW (?SC_245)
	MOV  	A,R7
	SWAP 	A
	MOV  	R0,A
	ANL  	A,#0FH
	XCH  	A,R0
	XRL  	A,R0
	MOV  	R7,A
	MOV  	A,R6
	SWAP 	A
	ANL  	A,#0F0H
	ORL  	A,R0
	MOV  	DPTR,#?_printf?BYTE+03H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
	LCALL	_printf
; 	      for(j=0;j<16;j++) {
			; SOURCE LINE # 274
	CLR  	A
	MOV  	DPTR,#j?549
	MOVX 	@DPTR,A
?C0050:
	MOV  	DPTR,#j?549
	MOVX 	A,@DPTR
	MOV  	R5,A
	CLR  	C
	SUBB 	A,#010H
	JNC  	?C0051
; 	        ch=Scratch[i*16+j];
			; SOURCE LINE # 275
	LCALL	L?0088
	MOV  	R7,A
	MOV  	DPTR,#ch?550
	MOVX 	@DPTR,A
; 	        printf("%02X ",0x00FF&(int)ch); 
			; SOURCE LINE # 276
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_252)
	MOV  	R1,#LOW (?SC_252)
	RLC  	A
	SUBB 	A,ACC
	MOV  	DPTR,#?_printf?BYTE+03H
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
	LCALL	_printf
; 	      }
			; SOURCE LINE # 277
	MOV  	DPTR,#j?549
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0050
?C0051:
; 	      for(j=0;j<16;j++) { 
			; SOURCE LINE # 278
	CLR  	A
	MOV  	DPTR,#j?549
	MOVX 	@DPTR,A
?C0053:
	MOV  	DPTR,#j?549
	MOVX 	A,@DPTR
	MOV  	R5,A
	CLR  	C
	SUBB 	A,#010H
	JNC  	?C0054
; 	        ch=Scratch[i*16+j];
			; SOURCE LINE # 279
	LCALL	L?0088
	MOV  	DPTR,#ch?550
	MOVX 	@DPTR,A
; 	        putchar((ch>' ' && ch<0x7F)?ch:'.'); 
			; SOURCE LINE # 280
	SETB 	C
	XRL  	A,#080H
	SUBB 	A,#0A0H
	JC   	?C0056
	MOVX 	A,@DPTR
	MOV  	R7,A
	XRL  	A,#080H
	SUBB 	A,#0FFH
	JNC  	?C0056
	SJMP 	?C0057
?C0056:
	MOV  	R7,#02EH
?C0057:
	LCALL	_putchar
; 	      }
			; SOURCE LINE # 281
	MOV  	DPTR,#j?549
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0053
?C0054:
; 		  printf(ENDLINE);
			; SOURCE LINE # 282
	LCALL	L?0095
	LCALL	_printf
; 	    }
			; SOURCE LINE # 283
	MOV  	DPTR,#i?548+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0072
	MOV  	DPTR,#i?548
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0072:
	LJMP 	?C0047
?C0048:
; 		printf(ENDLINE);
			; SOURCE LINE # 284
	LCALL	L?0095
?C0075:
; 	}
			; SOURCE LINE # 285
	SJMP 	?C0077
?C0046:
; 	else
; 		printf("Sectors' range 0x00000 - 0x%lX\r\n",n_of_sect); 	
			; SOURCE LINE # 287
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_258)
	MOV  	R1,#LOW (?SC_258)
	MOV  	DPTR,#n_of_sect
	LCALL	L?0090
	LCALL	L?0104
?C0077:
	LJMP 	_printf
; 
; 	return;
;   }
			; SOURCE LINE # 290
?C0045:
; 
;   if(Cmd_Match("log")) {
			; SOURCE LINE # 292
	MOV  	R2,#HIGH (?SC_291)
	MOV  	R1,#LOW (?SC_291)
	LCALL	L?0105
	JZ   	?C0059
;     Token=Str_Token(0);
			; SOURCE LINE # 293
	LCALL	L?0106
	LCALL	L?0084
;     Log(Token);
			; SOURCE LINE # 294
	LJMP 	_Log
;     return;
;   }
			; SOURCE LINE # 296
?C0059:
; 
;   if(Cmd_Match("type")) {
			; SOURCE LINE # 298
	MOV  	R2,#HIGH (?SC_295)
	MOV  	R1,#LOW (?SC_295)
	LCALL	L?0105
	JZ   	?C0060
;     Token = Str_Token(0);
			; SOURCE LINE # 299
	LCALL	L?0106
	LCALL	L?0085
;     if(Token) {
			; SOURCE LINE # 300
	ORL  	A,R2
	ORL  	A,R3
	JZ   	?C0061
;       Cmd_Type(Token);
			; SOURCE LINE # 301
	MOV  	DPTR,#Token
	LCALL	L?0082
	LJMP 	_Cmd_Type
;     } else {
			; SOURCE LINE # 302
?C0061:
;       Cmd_Help();
			; SOURCE LINE # 303
?C0076:
;     }
			; SOURCE LINE # 304
	SJMP 	?C0078
;     return;
;   }
			; SOURCE LINE # 306
?C0060:
; 
;   if(Cmd_Match("chkdsk")) {
			; SOURCE LINE # 308
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_300)
	MOV  	R1,#LOW (?SC_300)
	LCALL	_Cmd_Match
	MOV  	A,R7
	JZ   	?C0063
;     Sect_Print();
			; SOURCE LINE # 309
	LJMP 	Sect_Print
;     return;
;   }
			; SOURCE LINE # 311
?C0063:
; 
; #ifdef __F340_VER__
;   if(Cmd_Match("calibrate")) {
;     Token=Str_Token(0);
;     if((*Token > 0x29) && (*Token < 0x40))
; 	{
; 		dw=atol(Token);
; 		Calibrate((int)dw);
; 		printf("Calibrated to %d deg C\r\n", (int) dw);
; 	}
; 	else
; 		printf("Missing parameter\r\n");
; 
;     return;
;   }
;   if(Cmd_Match("cd")) {
;       Token=Str_Token(0);
; 	  Change_Directory(Token);
; 	  return;
;   }
;   if(Cmd_Match("md")) {
;     Token=Str_Token(0);
;   	Make_Directory(Token);
; 	return;
;   }
;   if(Cmd_Match("templog")) {
;     Token=Str_Token(0);
;     Temp_Log(Token);
;     return;
;   }
;   if(Cmd_Match("format")) {
;   	printf("Are you sure (y/n)?"ENDLINE);
; 	format_flag = 1;
; 	//Format_Disk();
; 	return;
;   }
;   if(Cmd_Match("rd"))
;   {
; 	Token=Str_Token(0);
;   	Remove_Direcory(Token);
; 	return;
;   }
;   if(Cmd_Match("mmc"))
;   {
;     Token=Str_Token(0);
;     Get_Status_MMC();
;     return;
;   }
;   if(Cmd_Match("time_out"))
;   {
;     Is_Initialized = 1;
;     return;
;   }
;   if(Cmd_Match("loop"))
;   {
;     for(i=0;i<1000;i++)
;       Sect_Read(i);
;     return;
;   }
;   if(Cmd_Match("write_test"))
;   {
;     for(i=0;i<512;i++)
;       Scratch[i] = (BYTE)0xBB;
;     for(i=0;i<100;i++) {
;       Sect_Write(1000+i);
;     }
;     for(i=0;i<100;i++) {
;       Sect_Read(1000+i);
;       for(dw=0;dw<512;dw++) {
;         if(Scratch[dw] != (BYTE)0xBB) {
;           printf("error sector %d\r\n",1000 + i);
;           return;
;         }
;       }
;     }
;     return;
;   }
;  /* if(Cmd_Match("y"))
;   {
;   	if(format_flag == 1)
; 	{
; 		Format_Disk();		
; 		format_flag = 0;
; 		return;
; 	}
;   }
;   if(Cmd_Match("n"))
;   {
;   	if(format_flag == 1)
; 	{
; 		format_flag = 0;
; 		return;
; 	}
;   }*/
; 
; #endif
; /*
; /* If MMC is so fubar that Windows cannot even recognize it for formatting,
; /* then activate & execute this 'fdisk' command.
; /*
; 	if(Cmd_Match("fdisk")) {
; 		Sect_Read(0);
; 		Scratch[ 0]=0xEB;Scratch[ 1]=0x3C;Scratch[ 2]=0x90;Scratch[ 3]='M';
; 		Scratch[ 4]= 'S';Scratch[ 5]= 'D';Scratch[ 6]= 'O';Scratch[ 7]='S';
; 		Scratch[ 8]= '5';Scratch[ 9]= '.';Scratch[10]= '0';Scratch[11]=0x00;
; 		Scratch[12]=0x02;Scratch[13]=0x01;Scratch[14]=0x01;Scratch[15]=0x00;
; 
; 		Scratch[16]=0x02;Scratch[17]=0x00;Scratch[18]=0x02;Scratch[19]=0x60;
; 		Scratch[20]=0xF4;Scratch[21]=0xF8;Scratch[22]=0xF3;Scratch[23]=0x00;
; 		Scratch[24]=0x3F;Scratch[25]=0x00;Scratch[26]=0xFF;Scratch[27]=0x00;
; 		Scratch[28]=0x20;Scratch[29]=0x00;Scratch[30]=0x00;Scratch[31]=0x00;
; 
; 		Scratch[32]=0x00;Scratch[33]=0x00;Scratch[34]=0x00;Scratch[35]=0x00;
; 		Scratch[36]=0x00;Scratch[37]=0x00;Scratch[38]=0x29;Scratch[39]=0x42;
; 		Scratch[40]=0xE9;Scratch[41]=0x1D;Scratch[42]=0xC8;
; 
;                                           Scratch[54]=0x46;Scratch[55]=0x41;
; 		Scratch[56]=0x54;Scratch[57]=0x31;Scratch[58]=0x36;Scratch[59]=0x20;
; 		Scratch[60]=0x20;Scratch[61]=0x20;
; 
; 		Scratch[510]=0x55;Scratch[511]=0xAA;
; 
; 		Sect_Write(0);
; 		return;
; 	}
; */
; 
;   if(Cmd_Ptr)	{ 
			; SOURCE LINE # 439
	MOV  	DPTR,#Cmd_Ptr
	MOVX 	A,@DPTR
	JZ   	?C0033
;     printf("Bad command or file name."ENDLINE);
			; SOURCE LINE # 440
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_307)
	MOV  	R1,#LOW (?SC_307)
	LCALL	_printf
;     Cmd_Help();
			; SOURCE LINE # 441
?C0078:
	LCALL	Cmd_Help
;   }
			; SOURCE LINE # 442
; }
			; SOURCE LINE # 443
?C0033:
	RET  	
L?0083:
	MOV  	R3,#00H
	MOV  	R2,#00H
	MOV  	R1,#00H
	LCALL	_Str_Token
	MOV  	DPTR,#Token
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	RET  	
L?0091:
	MOV  	R3,#0FFH
	LCALL	_Cmd_Match
	MOV  	A,R7
	RET  	
L?0093:
	MOV  	R3,#0FFH
	LCALL	_Cmd_Match
	MOV  	A,R7
	RET  	
L?0096:
	MOV  	R3,#0FFH
	LCALL	_Cmd_Match
	MOV  	A,R7
	RET  	
L?0105:
	MOV  	R3,#0FFH
	LCALL	_Cmd_Match
	MOV  	A,R7
	RET  	
L?0106:
	MOV  	R3,#00H
	MOV  	R2,#00H
	MOV  	R1,#00H
	LCALL	_Str_Token
	RET  	
; END OF Cmd_Exec

; 
; //----------------------------------------------------------------------------
; // Cmd_Step
; //----------------------------------------------------------------------------
; //
; // This is a crank function. In every cycle it checks the interrupt receive
; // flag and starts first action on event. 
; //
; // Parameters   :
; // Return Value :
; //----------------------------------------------------------------------------
; 
; void Cmd_Step() 

	RSEG  ?PR?Cmd_Step?F34X_MSD_CMD
Cmd_Step:
	USING	0
			; SOURCE LINE # 456
; {
			; SOURCE LINE # 457
;   xdata char ch;
; 
;   if(!key_available()) 
			; SOURCE LINE # 460
	LCALL	key_available
	MOV  	A,R7
	JZ   	?C0066
?C0065:
;     return;
; 
;   ch=getchar();
			; SOURCE LINE # 463
	LCALL	getchar
	MOV  	DPTR,#ch?652
	MOV  	A,R7
	MOVX 	@DPTR,A
; 
;   if(ch==BACKSPACE) {
			; SOURCE LINE # 465
	CJNE 	R7,#08H,?C0067
;     if(Cmd_Ptr) { 
			; SOURCE LINE # 466
	MOV  	DPTR,#Cmd_Ptr
	MOVX 	A,@DPTR
	JZ   	?C0066
;       Cmd_Ptr--;
			; SOURCE LINE # 467
	DEC  	A
	MOVX 	@DPTR,A
;       putchar(SPACE);putchar(BACKSPACE);
			; SOURCE LINE # 468
	MOV  	R7,#020H
	LCALL	_putchar
	MOV  	R7,#08H
	LJMP 	_putchar
;     }
			; SOURCE LINE # 469
;     return;
;   }
			; SOURCE LINE # 471
?C0067:
; 
;   if(ch==CRLF) { // Execute command
			; SOURCE LINE # 473
	MOV  	DPTR,#ch?652
	MOVX 	A,@DPTR
	XRL  	A,#0AH
	JNZ  	?C0069
;     Cmd[Cmd_Ptr]='\0';
			; SOURCE LINE # 474
	MOV  	DPTR,#Cmd_Ptr
	MOVX 	A,@DPTR
	ADD  	A,#LOW (Cmd)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (Cmd)
	MOV  	DPH,A
	CLR  	A
	MOVX 	@DPTR,A
;     Cmd_Exec();
			; SOURCE LINE # 475
	LCALL	Cmd_Exec
;     memset(Cmd,'\0',MAX_LEN);
			; SOURCE LINE # 476
	MOV  	R6,#00H
	MOV  	R7,#020H
	MOV  	R5,#00H
	MOV  	R3,#01H
	MOV  	R2,#HIGH (Cmd)
	MOV  	R1,#LOW (Cmd)
	LCALL	?C?MEMSET
; 	write_current_dir();
			; SOURCE LINE # 477
	LCALL	write_current_dir
;     putchar(PROMPT);
			; SOURCE LINE # 478
	MOV  	R7,#03EH
	LCALL	_putchar
;     Cmd_Ptr=0;
			; SOURCE LINE # 479
	CLR  	A
	MOV  	DPTR,#Cmd_Ptr
	MOVX 	@DPTR,A
	RET  	
;     return;
;   }
			; SOURCE LINE # 481
?C0069:
; 	
;   if(Cmd_Ptr<MAX_LEN-1) {
			; SOURCE LINE # 483
	MOV  	DPTR,#Cmd_Ptr
	MOVX 	A,@DPTR
	CLR  	C
	SUBB 	A,#01FH
	JNC  	?C0066
;     Cmd[Cmd_Ptr++]=ch;
			; SOURCE LINE # 484
	MOV  	DPTR,#ch?652
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#Cmd_Ptr
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	A
	MOVX 	@DPTR,A
	MOV  	A,#LOW (Cmd)
	ADD  	A,R6
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (Cmd)
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
;   }
			; SOURCE LINE # 485
; }
			; SOURCE LINE # 486
?C0066:
	RET  	
; END OF Cmd_Step

	END

⌨️ 快捷键说明

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