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

📄 mstick.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]

; commandline [-errors .\err\mstick.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  PrintSubMessage PROC
;;;104    void PrintSubMessage(void)
;;;105    {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;106    	int i;
;;;107    	
;;;108    	
;;;109    	i=0;	
000004  e3a04000          MOV      r4,#0
;;;110    	Uart_Printf("\n\n");
000008  e28f0058          ADR      r0,|L1.104|
00000c  ebfffffe          BL       _printf
;;;111    	while(1)
000010  e1a00000          NOP      
                  |L1.20|
000014  e1a00000          NOP      
;;;112    	{   //display menu
;;;113    	    Uart_Printf("%2d:%s",i,mstick_func[i][1]);
000018  e59f004c          LDR      r0,|L1.108|
00001c  e0800184          ADD      r0,r0,r4,LSL #3
000020  e1a01004          MOV      r1,r4
000024  e5902004          LDR      r2,[r0,#4]
000028  e28f0040          ADR      r0,|L1.112|
00002c  ebfffffe          BL       _printf
;;;114    	    i++;
000030  e2844001          ADD      r4,r4,#1
;;;115    	    if((int)(mstick_func[i][0])==0)
000034  e59f0030          LDR      r0,|L1.108|
000038  e7900184          LDR      r0,[r0,r4,LSL #3]
00003c  e3500000          CMP      r0,#0
000040  1a000002          BNE      |L1.80|
;;;116    	    {
;;;117    			Uart_Printf("\n");
000044  e28f002c          ADR      r0,|L1.120|
000048  ebfffffe          BL       _printf
;;;118    			break;
00004c  ea000004          B        |L1.100|
;;;119    	    }
;;;120    	    if((i%4)==0) Uart_Printf("\n");
                  |L1.80|
000050  e3140003          TST      r4,#3
000054  1a000001          BNE      |L1.96|
000058  e28f0018          ADR      r0,|L1.120|
00005c  ebfffffe          BL       _printf
;;;121    	}
                  |L1.96|
000060  eaffffeb          B        |L1.20|
;;;122    }
                  |L1.100|
000064  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.104|
000068  00000a0a          DCB      "\n\n\0\0"
                  |L1.108|
00006c  00000000          DCD      mstick_func
                  |L1.112|
000070  3a643225          DCB      "%2d:"
000074  00007325          DCB      "%s\0\0"
                  |L1.120|
000078  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  IrDA_Sub_Irq PROC
;;;887    void IrDA_Sub_Irq(void)
;;;888    {
00007c  e92d4008          STMFD    sp!,{r3,lr}
;;;889    
;;;890    	Uart_Printf("IrDA interrupt(int_status).\n");
000080  e28f0004          ADR      r0,|L1.140|
000084  ebfffffe          BL       _printf
;;;891    
;;;892    }
000088  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.140|
00008c  41447249          DCB      "IrDA"
000090  746e6920          DCB      " int"
000094  75727265          DCB      "erru"
000098  69287470          DCB      "pt(i"
00009c  735f746e          DCB      "nt_s"
0000a0  75746174          DCB      "tatu"
0000a4  0a2e2973          DCB      "s).\n"
0000a8  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Mstpc_Set_Command PROC
;;;939    int Mstpc_Set_Command(U8 Command)
;;;940    {
0000ac  e59f1050          LDR      r1,|L1.260|
;;;941    
;;;942    	rTP_CMD = SET_CMD | 1;
0000b0  e59f2050          LDR      r2,|L1.264|
0000b4  e5821000          STR      r1,[r2,#0]
;;;943    	rDAT_FIFO = (0x00<<8) | (Command<<0);
0000b8  e1c210c1          BIC      r1,r2,r1,ASR #1
0000bc  e5810008          STR      r0,[r1,#8]
;;;944    	while(!TBE);
0000c0  e1a00000          NOP      
                  |L1.196|
0000c4  e59f103c          LDR      r1,|L1.264|
0000c8  e5911004          LDR      r1,[r1,#4]
0000cc  e3110002          TST      r1,#2
0000d0  0afffffb          BEQ      |L1.196|
;;;945    
;;;946    	while(!INT_P_END);
0000d4  e1a00000          NOP      
                  |L1.216|
0000d8  e59f1028          LDR      r1,|L1.264|
0000dc  e591100c          LDR      r1,[r1,#0xc]
0000e0  e3110080          TST      r1,#0x80
0000e4  0afffffb          BEQ      |L1.216|
;;;947    }
0000e8  e12fff1e          BX       lr
                          ENDP

                  Ms_Reset PROC
;;;521    void Ms_Reset(void)
;;;522    {
0000ec  e92d4008          STMFD    sp!,{r3,lr}
;;;523    	Uart_Printf("Memory stick reset.\n");
0000f0  e28f0014          ADR      r0,|L1.268|
0000f4  ebfffffe          BL       _printf
;;;524    	Mstpc_Set_Command(MS_RESET);
0000f8  e3a0003c          MOV      r0,#0x3c
0000fc  ebfffffe          BL       Mstpc_Set_Command
;;;525    
;;;526    }
000100  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.260|
000104  0000e001          DCD      0x0000e001
                  |L1.264|
000108  46108000          DCD      0x46108000
                  |L1.268|
00010c  6f6d654d          DCB      "Memo"
000110  73207972          DCB      "ry s"
000114  6b636974          DCB      "tick"
000118  73657220          DCB      " res"
00011c  0a2e7465          DCB      "et.\n"
000120  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Stick_Ins_Irq PROC
;;;865    void Stick_Ins_Irq(void)
;;;866    {
000124  e92d4008          STMFD    sp!,{r3,lr}
;;;867    	if(rINS_CON & (1<<4) ) {
000128  e51f0028          LDR      r0,|L1.264|
00012c  e5900010          LDR      r0,[r0,#0x10]
000130  e3100010          TST      r0,#0x10
000134  0a000008          BEQ      |L1.348|
;;;868    		Uart_Printf("Stick is inserted.\n");
000138  e28f0034          ADR      r0,|L1.372|
00013c  ebfffffe          BL       _printf
;;;869    		//if(Check_Wp()) Uart_Printf("Write-protect enabled.\n");
;;;870    		// Must takes 1msec for internal initialization after power supply.
;;;871    		Delay(10);
000140  e3a0000a          MOV      r0,#0xa
000144  ebfffffe          BL       Delay
;;;872    		Ms_Reset();
000148  ebfffffe          BL       Ms_Reset
;;;873    		Stick_Ins = 1;
00014c  e3a00001          MOV      r0,#1
000150  e59f1030          LDR      r1,|L1.392|
000154  e5810000          STR      r0,[r1,#0]  ; Stick_Ins
000158  ea000004          B        |L1.368|
;;;874    	} else {
;;;875    		Uart_Printf("Stick is extracted.\n");
                  |L1.348|
00015c  e28f0028          ADR      r0,|L1.396|
000160  ebfffffe          BL       _printf
;;;876    		Stick_Ins = 0;
000164  e3a00000          MOV      r0,#0
000168  e59f1018          LDR      r1,|L1.392|
00016c  e5810000          STR      r0,[r1,#0]  ; Stick_Ins
;;;877    	}
;;;878    
;;;879    	
;;;880    }
                  |L1.368|
000170  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.372|
000174  63697453          DCB      "Stic"
000178  7369206b          DCB      "k is"
00017c  736e6920          DCB      " ins"
000180  65747265          DCB      "erte"
000184  000a2e64          DCB      "d.\n\0"
                  |L1.392|
000188  00000000          DCD      ||.bss$2||
                  |L1.396|
00018c  63697453          DCB      "Stic"
000190  7369206b          DCB      "k is"
000194  74786520          DCB      " ext"
000198  74636172          DCB      "ract"
00019c  0a2e6465          DCB      "ed.\n"
0001a0  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Mstick_Sub_Irq PROC
;;;834    void Mstick_Sub_Irq(void)
;;;835    {
0001a4  e92d4010          STMFD    sp!,{r4,lr}
;;;836    	int int_status;
;;;837    	
;;;838    	int_status = rINTCTRL_STA;
0001a8  e51f00a8          LDR      r0,|L1.264|
0001ac  e590000c          LDR      r0,[r0,#0xc]
0001b0  e1a04000          MOV      r4,r0
;;;839    		
;;;840    	
;;;841    	//Uart_Printf("Mstick intr(%x).\n", int_status);
;;;842    	if(int_status & (1<<7)) {
0001b4  e1a00000          NOP      
;;;843    		//Uart_Printf("[INT_INT_P_END]");
;;;844    	} 
;;;845    	if(int_status & (1<<6)) {
0001b8  e1a00000          NOP      
;;;846    		//Uart_Printf("\nINT_INT_SIF(receive).\n");
;;;847    	} 
;;;848    	if (int_status & (1<<5)) {
0001bc  e1a00000          NOP      
;;;849    		//Tr_Irq();
;;;850    	} 
;;;851    	if(int_status & (1<<4)) {
0001c0  e3140010          TST      r4,#0x10
0001c4  0a000000          BEQ      |L1.460|
;;;852    		Stick_Ins_Irq();
0001c8  ebfffffe          BL       Stick_Ins_Irq
;;;853    	} 
;;;854    	if(int_status & (1<<1)) {
                  |L1.460|
0001cc  e3140002          TST      r4,#2
0001d0  0a000001          BEQ      |L1.476|
;;;855    		Uart_Printf("\nINT_CRCerror.\n");
0001d4  e28f0014          ADR      r0,|L1.496|
0001d8  ebfffffe          BL       _printf
;;;856    	} 
;;;857    	if(int_status & (1<<0)) {
                  |L1.476|
0001dc  e3140001          TST      r4,#1
0001e0  0a000001          BEQ      |L1.492|
;;;858    		Uart_Printf("\nINT_Timeout.\n");
0001e4  e28f0014          ADR      r0,|L1.512|
0001e8  ebfffffe          BL       _printf
;;;859    	}
;;;860    
;;;861    
;;;862    }
                  |L1.492|
0001ec  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.496|
0001f0  544e490a          DCB      "\nINT"
0001f4  4352435f          DCB      "_CRC"
0001f8  6f727265          DCB      "erro"
0001fc  000a2e72          DCB      "r.\n\0"
                  |L1.512|
000200  544e490a          DCB      "\nINT"
000204  6d69545f          DCB      "_Tim"
000208  74756f65          DCB      "eout"
00020c  00000a2e          DCB      ".\n\0\0"
                          ENDP

                  IrDA_Mstick_Irq PROC
;;;807    void __irq IrDA_Mstick_Irq(void)
;;;808    {
000210  e92d501f          STMFD    sp!,{r0-r4,r12,lr}
000214  e24dd004          SUB      sp,sp,#4
;;;809    	int int_state;
;;;810    
;;;811    	int_state = rSUBSRCPND;
000218  e59f00e8          LDR      r0,|L1.776|
00021c  e5900018          LDR      r0,[r0,#0x18]
000220  e1a04000          MOV      r4,r0
;;;812    	//Uart_Printf("IrDA_Mstick_Irq occurred...\n");
;;;813    	if(int_state & BIT_SUB_MSTICK) {
000224  e3140080          TST      r4,#0x80
000228  0a000016          BEQ      |L1.648|
;;;814    		rINTSUBMSK |= BIT_SUB_MSTICK;
00022c  e59f00d4          LDR      r0,|L1.776|
000230  e590001c          LDR      r0,[r0,#0x1c]
000234  e3800080          ORR      r0,r0,#0x80
000238  e59f10c8          LDR      r1,|L1.776|
00023c  e581001c          STR      r0,[r1,#0x1c]
;;;815    		rSUBSRCPND = BIT_SUB_MSTICK;
000240  e3a00080          MOV      r0,#0x80
000244  e1c11000          BIC      r1,r1,r0
000248  e5810018          STR      r0,[r1,#0x18]
;;;816    		ClearPending(BIT_IrDA_MSTICK);
00024c  e3a00540          MOV      r0,#0x10000000
000250  e1c11000          BIC      r1,r1,r0
000254  e5810000          STR      r0,[r1,#0]
000258  e1c10000          BIC      r0,r1,r0
00025c  e5900010          LDR      r0,[r0,#0x10]
000260  e5810010          STR      r0,[r1,#0x10]
000264  e1a00001          MOV      r0,r1
000268  e5900010          LDR      r0,[r0,#0x10]
;;;817    		Mstick_Sub_Irq();
00026c  ebfffffe          BL       Mstick_Sub_Irq
;;;818    		rINTSUBMSK &= ~BIT_SUB_MSTICK;
000270  e59f0090          LDR      r0,|L1.776|
000274  e590001c          LDR      r0,[r0,#0x1c]
000278  e3c00080          BIC      r0,r0,#0x80
00027c  e59f1084          LDR      r1,|L1.776|
000280  e581001c          STR      r0,[r1,#0x1c]
000284  ea00001c          B        |L1.764|
;;;819    	} else if (int_state & BIT_SUB_IrDA) {
                  |L1.648|
000288  e3140040          TST      r4,#0x40
00028c  0a000018          BEQ      |L1.756|
;;;820    		Uart_Printf("\n\n\nNot allowed interrupt\n\n");
000290  e28f0074          ADR      r0,|L1.780|
000294  ebfffffe          BL       _printf
;;;821    		rINTSUBMSK |= BIT_SUB_IrDA;

⌨️ 快捷键说明

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