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

📄 ac97.txt

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

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

                          AREA ||.text||, CODE, READONLY

                  AC97_Port_Init PROC
;;;483    void AC97_Port_Init(void)
;;;484    {
                  |L1.0|
000000  e59f00f0          LDR      r0,|L1.248|
;;;485    /*
;;;486    	//Push AC97 GPIO port configuration
;;;487    	save_AC97_rGPEDAT=rGPEDAT;
;;;488    	save_AC97_rGPECON=rGPECON; 
;;;489    	save_AC97_rGPEUP=rGPEUP;
;;;490    
;;;491    	//---------------------------------------------------------------------
;;;492    	//   PORT E GROUP
;;;493    	//Ports  :  GPE4    		        GPE3                 GPE2            GPE1              GPE0 
;;;494    	//Signal :  AC_SDATA_OUT   AC_SDATA_IN   AC_nRESET   AC_BIT_CLK   AC_SYNC 
;;;495    	//Binary :   11,                     11,                   11,                11,                 11    
;;;496    	//---------------------------------------------------------------------
;;;497    	rGPECON = rGPECON & ~(0x3ff) | 0x3ff;   //GPE[4:0]=AC_SDATA_OUT   AC_SDATA_IN   AC_nRESET   AC_BIT_CLK   AC_SYNC
;;;498    	rGPEUP  = rGPEUP  & ~(0x1f)  | 0x1f;    //The pull up function is disabled GPE[4:0] 1 1111
;;;499    */
;;;500    	//External INT 0
;;;501    	//rGPUP  = rGPUP  & ~(0x1<<0) |(0x1<<0);       //The pull up function is disabled GPUP[0]   
;;;502    	rGPCON_L = (rGPCON_L & 0x3ffffc)|(0x2<<0);
000004  e5900008          LDR      r0,[r0,#8]
000008  e3c003f0          BIC      r0,r0,#0xc0000003
00000c  e3c005ff          BIC      r0,r0,#0x3fc00000
000010  e3800002          ORR      r0,r0,#2
000014  e59f10dc          LDR      r1,|L1.248|
000018  e5810008          STR      r0,[r1,#8]
;;;503    	rEXTINTC0 = rEXTINTC0 & ~(7<<0) | (0x4<<0);     //EINT0=rising edge triggered  
00001c  e1a00001          MOV      r0,r1
000020  e5900018          LDR      r0,[r0,#0x18]
000024  e3c00007          BIC      r0,r0,#7
000028  e3800004          ORR      r0,r0,#4
00002c  e5810018          STR      r0,[r1,#0x18]
;;;504        	
;;;505    	//For EINT0 Push Button 	
;;;506        	//rGPFUP   = ((rGPFUP   & ~(1<<0)) | (1<<0));     //GPF0
;;;507        	//rGPFCON  = ((rGPFCON  & ~(3<<0)) | (1<<1));     //GPF0=EINT0    
;;;508        	//rEXTINT0 = ((rEXTINT0 & ~(7<<0)) | (2<<0));     //EINT0=falling edge triggered 
;;;509    	
;;;510    }
000030  e12fff1e          BX       lr
                          ENDP

                  Ch16_AC97 PROC
;;;101    void Ch16_AC97(void)
;;;102    {
000034  e92d4010          STMFD    sp!,{r4,lr}
;;;103    	int i;
;;;104    
;;;105    	AC97_Port_Init();
000038  ebfffffe          BL       AC97_Port_Init
;;;106    	
;;;107    	while(1)
00003c  e1a00000          NOP      
                  |L1.64|
000040  e1a00000          NOP      
;;;108    	{
;;;109    		i=0;
000044  e3a04000          MOV      r4,#0
;;;110    		Uart_Printf("\n\n==================== AC97 Function Test ====================\n\n");
000048  e59f00ac          LDR      r0,|L1.252|
00004c  ebfffffe          BL       _printf
;;;111    		while(1)
000050  e1a00000          NOP      
                  |L1.84|
000054  e1a00000          NOP      
;;;112    		{   //display menu
;;;113    			Uart_Printf("%2d:%s",i,func_ac97_test[i][1]);
000058  e59f00a0          LDR      r0,|L1.256|
00005c  e0800184          ADD      r0,r0,r4,LSL #3
000060  e1a01004          MOV      r1,r4
000064  e5902004          LDR      r2,[r0,#4]
000068  e28f0094          ADR      r0,|L1.260|
00006c  ebfffffe          BL       _printf
;;;114    			i++;
000070  e2844001          ADD      r4,r4,#1
;;;115    			if((int)(func_ac97_test[i][0])==0)
000074  e59f0084          LDR      r0,|L1.256|
000078  e7900184          LDR      r0,[r0,r4,LSL #3]
00007c  e3500000          CMP      r0,#0
000080  1a000002          BNE      |L1.144|
;;;116    			{
;;;117    				Uart_Printf("\n");
000084  e28f0080          ADR      r0,|L1.268|
000088  ebfffffe          BL       _printf
;;;118    				break;
00008c  ea000004          B        |L1.164|
;;;119    			}
;;;120    			if((i%2)==0)
                  |L1.144|
000090  e3140001          TST      r4,#1
000094  1a000001          BNE      |L1.160|
;;;121    			Uart_Printf("\n");
000098  e28f006c          ADR      r0,|L1.268|
00009c  ebfffffe          BL       _printf
;;;122    		}
                  |L1.160|
0000a0  eaffffeb          B        |L1.84|
;;;123    		Uart_Printf("\n============================================================");
                  |L1.164|
0000a4  e28f0064          ADR      r0,|L1.272|
0000a8  ebfffffe          BL       _printf
;;;124    		Uart_Printf("\nSelect #Item or Press enter key to exit:");
0000ac  e28f009c          ADR      r0,|L1.336|
0000b0  ebfffffe          BL       _printf
;;;125    		i = Uart_GetIntNum();
0000b4  ebfffffe          BL       Uart_GetIntNum
0000b8  e1a04000          MOV      r4,r0
;;;126    		if(i==-1) break;		// return.	
0000bc  e3740001          CMN      r4,#1
0000c0  1a000000          BNE      |L1.200|
0000c4  ea000007          B        |L1.232|
;;;127    		if(i>=0 && (i<((sizeof(func_ac97_test)-1)/8)) )	// select and execute...
                  |L1.200|
0000c8  e3540000          CMP      r4,#0
0000cc  ba000004          BLT      |L1.228|
0000d0  e3540005          CMP      r4,#5
0000d4  2a000002          BCS      |L1.228|
;;;128    			( (void (*)(void)) (func_ac97_test[i][0]) )();
0000d8  e59f1020          LDR      r1,|L1.256|
0000dc  e7910184          LDR      r0,[r1,r4,LSL #3]
0000e0  e12fff30          BLX      r0
;;;129    	}
                  |L1.228|
0000e4  eaffffd5          B        |L1.64|
;;;130    
;;;131    	 rAC_GLBCTRL = 0;
                  |L1.232|
0000e8  e3a00000          MOV      r0,#0
0000ec  e3a01445          MOV      r1,#0x45000000
0000f0  e5810000          STR      r0,[r1,#0]
;;;132    }
0000f4  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.248|
0000f8  44800000          DCD      0x44800000
                  |L1.252|
0000fc  0000008c          DCD      ||.constdata$1|| + 140
                  |L1.256|
000100  00000000          DCD      func_ac97_test
                  |L1.260|
000104  3a643225          DCB      "%2d:"
000108  00007325          DCB      "%s\0\0"
                  |L1.268|
00010c  0000000a          DCB      "\n\0\0\0"
                  |L1.272|
000110  3d3d3d0a          DCB      "\n==="
000114  3d3d3d3d          DCB      "===="
000118  3d3d3d3d          DCB      "===="
00011c  3d3d3d3d          DCB      "===="
000120  3d3d3d3d          DCB      "===="
000124  3d3d3d3d          DCB      "===="
000128  3d3d3d3d          DCB      "===="
00012c  3d3d3d3d          DCB      "===="
000130  3d3d3d3d          DCB      "===="
000134  3d3d3d3d          DCB      "===="
000138  3d3d3d3d          DCB      "===="
00013c  3d3d3d3d          DCB      "===="
000140  3d3d3d3d          DCB      "===="
000144  3d3d3d3d          DCB      "===="
000148  3d3d3d3d          DCB      "===="
00014c  0000003d          DCB      "=\0\0\0"
                  |L1.336|
000150  6c65530a          DCB      "\nSel"
000154  20746365          DCB      "ect "
000158  65744923          DCB      "#Ite"
00015c  726f206d          DCB      "m or"
000160  65725020          DCB      " Pre"
000164  65207373          DCB      "ss e"
000168  7265746e          DCB      "nter"
00016c  79656b20          DCB      " key"
000170  206f7420          DCB      " to "
000174  74697865          DCB      "exit"
000178  0000003a          DCB      ":\0\0\0"
                          ENDP

                  AC97_Port_Return PROC
;;;512    void AC97_Port_Return(void)
;;;513    {
00017c  e12fff1e          BX       lr
;;;514    	//Pop AC97 GPIO port configuration
;;;515    	//rGPECON=save_AC97_rGPECON; 
;;;516    	//rGPEDAT=save_AC97_rGPEDAT;
;;;517    	//rGPEUP=save_AC97_rGPEUP;
;;;518    }
                          ENDP

                  AC97_Codec_Cmd PROC
;;;695    U16 AC97_Codec_Cmd(U8 CMD_Read, U8 CMD_Offset, U16 CMD_Data)
;;;696    { 
000180  e92d40f8          STMFD    sp!,{r3-r7,lr}
000184  e1a04000          MOV      r4,r0
000188  e1a05001          MOV      r5,r1
00018c  e1a06002          MOV      r6,r2
;;;697    	 U16 Codec_Stat;
;;;698    
;;;699    	 if(CMD_Read == 0)
000190  e3540000          CMP      r4,#0
000194  1a00000a          BNE      |L1.452|
;;;700    	 {
;;;701    	 	rAC_CODEC_CMD = (0<<23)|(CMD_Offset<<16)|(CMD_Data<<0);
000198  e1860805          ORR      r0,r6,r5,LSL #16
00019c  e3a01445          MOV      r1,#0x45000000
0001a0  e5810008          STR      r0,[r1,#8]
;;;702    		Delay(1);
0001a4  e3a00001          MOV      r0,#1
0001a8  ebfffffe          BL       Delay
;;;703        	 	rAC_CODEC_CMD |= (1<<23);	//To receive SLOTREQ bits when VRA is '1'.
0001ac  e3a00445          MOV      r0,#0x45000000
0001b0  e5900008          LDR      r0,[r0,#8]
0001b4  e3800880          ORR      r0,r0,#0x800000
0001b8  e3a01445          MOV      r1,#0x45000000
0001bc  e5810008          STR      r0,[r1,#8]
0001c0  ea000011          B        |L1.524|
;;;704    	 }
;;;705            else if (CMD_Read ==1) 
                  |L1.452|
0001c4  e3540001          CMP      r4,#1
0001c8  1a00000d          BNE      |L1.516|
;;;706        	 {
;;;707    		rAC_CODEC_CMD = (1<<23)|(CMD_Offset<<16)|(CMD_Data<<0);
0001cc  e1860805          ORR      r0,r6,r5,LSL #16
0001d0  e3800880          ORR      r0,r0,#0x800000
0001d4  e3a01445          MOV      r1,#0x45000000
0001d8  e5810008          STR      r0,[r1,#8]
;;;708    		Delay(1000);
0001dc  e3a00ffa          MOV      r0,#0x3e8
0001e0  ebfffffe          BL       Delay
;;;709    		
;;;710        		Codec_Stat = (U16)(rAC_CODEC_STAT & 0xFFFF);
0001e4  e3a00445          MOV      r0,#0x45000000
0001e8  e590000c          LDR      r0,[r0,#0xc]
0001ec  e1a07800          MOV      r7,r0,LSL #16
0001f0  e1a07827          MOV      r7,r7,LSR #16
;;;711        		Delay(1000);
0001f4  e3a00ffa          MOV      r0,#0x3e8
0001f8  ebfffffe          BL       Delay
;;;712        		return Codec_Stat;
0001fc  e1a00007          MOV      r0,r7
;;;713        	 }
;;;714            else 
;;;715        	 return 0;
;;;716            
;;;717    }
                  |L1.512|
000200  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                  |L1.516|
000204  e3a00000          MOV      r0,#0                 ;715
000208  eafffffc          B        |L1.512|              ;715
                  |L1.524|
00020c  eafffffb          B        |L1.512|
                          ENDP

                  AC97_Controller_State PROC
;;;1205   void AC97_Controller_State(void)
;;;1206   {
000210  e92d4010          STMFD    sp!,{r4,lr}
;;;1207   	U8 state;
;;;1208       
;;;1209       	state=(U8)(rAC_GLBSTAT);
000214  e3a00445          MOV      r0,#0x45000000
000218  e5900004          LDR      r0,[r0,#4]
00021c  e20040ff          AND      r4,r0,#0xff
;;;1210   
;;;1211        	switch(state)
000220  e3540005          CMP      r4,#5
000224  908ff104          ADDLS    pc,pc,r4,LSL #2
000228  ea000017          B        |L1.652|
00022c  ea000004          B        |L1.580|
000230  ea000006          B        |L1.592|
000234  ea000008          B        |L1.604|
000238  ea00000a          B        |L1.616|
00023c  ea00000c          B        |L1.628|
000240  ea00000e          B        |L1.640|
;;;1212       	{
;;;1213   		case 0:
;;;1214   		Uart_Printf("AC97 Controller State: Idle\n"); 
                  |L1.580|
000244  e28f0048          ADR      r0,|L1.660|
000248  ebfffffe          BL       _printf
;;;1215   		break;
00024c  ea00000f          B        |L1.656|
;;;1216   	
;;;1217   		case 1:
;;;1218   			Uart_Printf("AC97 Controller State: Init\n"); 
                  |L1.592|
000250  e28f005c          ADR      r0,|L1.692|
000254  ebfffffe          BL       _printf
;;;1219   		break;
000258  ea00000c          B        |L1.656|
;;;1220   
;;;1221   		case 2:
;;;1222   		       Uart_Printf("AC97 Controller State: Ready\n"); 
                  |L1.604|
00025c  e28f0070          ADR      r0,|L1.724|
000260  ebfffffe          BL       _printf
;;;1223   		break;
000264  ea000009          B        |L1.656|
;;;1224   		
;;;1225   		case 3:
;;;1226   			Uart_Printf("AC97 Controller State: Active\n"); 
                  |L1.616|

⌨️ 快捷键说明

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