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

📄 ac97.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0005b4  56207469          DCB      "it V"
0005b8  6d756c6f          DCB      "olum"
0005bc  61522065          DCB      "e Ra"
0005c0  2165676e          DCB      "nge!"
0005c4  00000000          DCB      "\0\0\0\0"
                  |L1.1480|
0005c8  6165480a          DCB      "\nHea"
0005cc  6f687064          DCB      "dpho"
0005d0  5620656e          DCB      "ne V"
0005d4  6d756c6f          DCB      "olum"
0005d8  654c2065          DCB      "e Le"
0005dc  206c6576          DCB      "vel "
0005e0  206e4928          DCB      "(In "
0005e4  37394341          DCB      "AC97"
0005e8  646f4320          DCB      " Cod"
0005ec  30206365          DCB      "ec 0"
0005f0  52206834          DCB      "4h R"
0005f4  292e6765          DCB      "eg.)"
0005f8  7830203a          DCB      ": 0x"
0005fc  00007825          DCB      "%x\0\0"
                          ENDP

                  DMA0_Play_Done PROC
;;;1261   void __irq DMA0_Play_Done(void)
;;;1262   {
                  |L1.1536|
000600  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;1263   	rSUBSRCPND = BIT_SUB_DMA0;
000604  e3a00780          MOV      r0,#0x2000000
000608  e59f1038          LDR      r1,|L1.1608|
00060c  e5810018          STR      r0,[r1,#0x18]
;;;1264   	rSUBSRCPND;
000610  e1c10000          BIC      r0,r1,r0
000614  e5900018          LDR      r0,[r0,#0x18]
;;;1265         	ClearPending(BIT_DMA);               
000618  e3a00940          MOV      r0,#0x100000
00061c  e1c11000          BIC      r1,r1,r0
000620  e5810000          STR      r0,[r1,#0]
000624  e1c10000          BIC      r0,r1,r0
000628  e5900010          LDR      r0,[r0,#0x10]
00062c  e5810010          STR      r0,[r1,#0x10]
000630  e1a00001          MOV      r0,r1
000634  e5900010          LDR      r0,[r0,#0x10]
;;;1266   	Uart_Printf("@");
000638  e28f000c          ADR      r0,|L1.1612|
00063c  ebfffffe          BL       _printf
;;;1267   }
000640  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000644  e25ef004          SUBS     pc,lr,#4
                  |L1.1608|
000648  40200000          DCD      0x40200000
                  |L1.1612|
00064c  00000040          DCB      "@\0\0\0"
                          ENDP

                  Muting PROC
;;;1396   void __irq Muting(void)
;;;1397   {
                  |L1.1616|
000650  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;1398   	if(rEINTPEND==(1<<0))
000654  e51f0564          LDR      r0,|L1.248|
000658  e5900038          LDR      r0,[r0,#0x38]
00065c  e3500001          CMP      r0,#1
000660  1a000003          BNE      |L1.1652|
;;;1399   		{
;;;1400   		//Delay(1000); For Key bouncing protect!!
;;;1401   		//Uart_Printf("EINT0 interrupt is occured\n");
;;;1402   		rEINTPEND=(1<<0);
000664  e3a00001          MOV      r0,#1
000668  e51f1578          LDR      r1,|L1.248|
00066c  e5810038          STR      r0,[r1,#0x38]
000670  ea000011          B        |L1.1724|
;;;1403   		}
;;;1404   	else if(rEINTPEND==(1<<1))
                  |L1.1652|
000674  e51f0584          LDR      r0,|L1.248|
000678  e5900038          LDR      r0,[r0,#0x38]
00067c  e3500002          CMP      r0,#2
000680  1a000005          BNE      |L1.1692|
;;;1405   		{
;;;1406   		Uart_Printf("EINT1 interrupt is occured\n");
000684  e28f0f46          ADR      r0,|L1.1956|
000688  ebfffffe          BL       _printf
;;;1407   		rEINTPEND=(1<<1);
00068c  e3a00002          MOV      r0,#2
000690  e51f15a0          LDR      r1,|L1.248|
000694  e5810038          STR      r0,[r1,#0x38]
000698  ea000007          B        |L1.1724|
;;;1408   		}
;;;1409   	else
;;;1410   		{
;;;1411   		Uart_Printf("rEINTPEND=%x\n",rEINTPEND);
                  |L1.1692|
00069c  e51f05ac          LDR      r0,|L1.248|
0006a0  e5900038          LDR      r0,[r0,#0x38]
0006a4  e1a01000          MOV      r1,r0
0006a8  e28f0f44          ADR      r0,|L1.1984|
0006ac  ebfffffe          BL       _printf
;;;1412   		rEINTPEND=((1<<0)|(1<<1));
0006b0  e3a00003          MOV      r0,#3
0006b4  e51f15c4          LDR      r1,|L1.248|
0006b8  e5810038          STR      r0,[r1,#0x38]
;;;1413   		}
;;;1414   	ClearPending(BIT_EINT0_2);    
                  |L1.1724|
0006bc  e3a00001          MOV      r0,#1
0006c0  e51f1080          LDR      r1,|L1.1608|
0006c4  e5810000          STR      r0,[r1,#0]
0006c8  e1c10000          BIC      r0,r1,r0
0006cc  e5900010          LDR      r0,[r0,#0x10]
0006d0  e5810010          STR      r0,[r1,#0x10]
0006d4  e1a00001          MOV      r0,r1
0006d8  e5900010          LDR      r0,[r0,#0x10]
;;;1415   	
;;;1416   	rEINTMASK = 0x7ffff;
0006dc  e59f00ec          LDR      r0,|L1.2000|
0006e0  e2811646          ADD      r1,r1,#0x4600000
0006e4  e5810034          STR      r0,[r1,#0x34]
;;;1417   	rINTMSK |= (BIT_EINT0_2);
0006e8  e2410646          SUB      r0,r1,#0x4600000
0006ec  e5900008          LDR      r0,[r0,#8]
0006f0  e3800001          ORR      r0,r0,#1
0006f4  e2411646          SUB      r1,r1,#0x4600000
0006f8  e5810008          STR      r0,[r1,#8]
;;;1418   
;;;1419       	if(AC97_mute)    //AC97_mute
0006fc  e59f00d0          LDR      r0,|L1.2004|
000700  e5d00000          LDRB     r0,[r0,#0]  ; AC97_mute
000704  e3500000          CMP      r0,#0
000708  0a00000d          BEQ      |L1.1860|
;;;1420       	{
;;;1421        		AC97_mute = 0;
00070c  e3a00000          MOV      r0,#0
000710  e59f10bc          LDR      r1,|L1.2004|
000714  e5c10000          STRB     r0,[r1,#0]  ; AC97_mute
;;;1422        		AC97_Codec_Cmd(0,0x04, Output_Volume|0x8000);		
000718  e51f0174          LDR      r0,|L1.1452|
00071c  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
000720  e1a00800          MOV      r0,r0,LSL #16
000724  e1a00820          MOV      r0,r0,LSR #16
000728  e3802c80          ORR      r2,r0,#0x8000
00072c  e3a01004          MOV      r1,#4
000730  e3a00000          MOV      r0,#0
000734  ebfffffe          BL       AC97_Codec_Cmd
;;;1423           	Uart_Printf("\nAC97 Mute On...\n");
000738  e28f0098          ADR      r0,|L1.2008|
00073c  ebfffffe          BL       _printf
000740  ea00000b          B        |L1.1908|
;;;1424       	}
;;;1425       	else        //No AC97_mute
;;;1426       	{
;;;1427   
;;;1428           	AC97_mute = 1;
                  |L1.1860|
000744  e3a00001          MOV      r0,#1
000748  e59f1084          LDR      r1,|L1.2004|
00074c  e5c10000          STRB     r0,[r1,#0]  ; AC97_mute
;;;1429           	AC97_Codec_Cmd(0,0x04, Output_Volume& ~(0x8000));
000750  e51f01ac          LDR      r0,|L1.1452|
000754  e5900000          LDR      r0,[r0,#0]  ; Output_Volume
000758  e1a02880          MOV      r2,r0,LSL #17
00075c  e1a028a2          MOV      r2,r2,LSR #17
000760  e3a01004          MOV      r1,#4
000764  e3a00000          MOV      r0,#0
000768  ebfffffe          BL       AC97_Codec_Cmd
;;;1430           	Uart_Printf("\nAC97 Mute Off...\n");
00076c  e28f0078          ADR      r0,|L1.2028|
000770  ebfffffe          BL       _printf
;;;1431       	}
;;;1432   	rEINTMASK&=~(1<<0);	
                  |L1.1908|
000774  e51f0684          LDR      r0,|L1.248|
000778  e5900034          LDR      r0,[r0,#0x34]
00077c  e3c00001          BIC      r0,r0,#1
000780  e51f1690          LDR      r1,|L1.248|
000784  e5810034          STR      r0,[r1,#0x34]
;;;1433   	rINTMSK    &= ~(BIT_EINT0_2);		
000788  e2410646          SUB      r0,r1,#0x4600000
00078c  e5900008          LDR      r0,[r0,#8]
000790  e3c00001          BIC      r0,r0,#1
000794  e2411646          SUB      r1,r1,#0x4600000
000798  e5810008          STR      r0,[r1,#8]
;;;1434   }
00079c  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
0007a0  e25ef004          SUBS     pc,lr,#4
                  |L1.1956|
0007a4  544e4945          DCB      "EINT"
0007a8  6e692031          DCB      "1 in"
0007ac  72726574          DCB      "terr"
0007b0  20747075          DCB      "upt "
0007b4  6f207369          DCB      "is o"
0007b8  72756363          DCB      "ccur"
0007bc  000a6465          DCB      "ed\n\0"
                  |L1.1984|
0007c0  4e494572          DCB      "rEIN"
0007c4  4e455054          DCB      "TPEN"
0007c8  78253d44          DCB      "D=%x"
0007cc  0000000a          DCB      "\n\0\0\0"
                  |L1.2000|
0007d0  0007ffff          DCD      0x0007ffff
                  |L1.2004|
0007d4  00000000          DCD      AC97_mute
                  |L1.2008|
0007d8  3943410a          DCB      "\nAC9"
0007dc  754d2037          DCB      "7 Mu"
0007e0  4f206574          DCB      "te O"
0007e4  2e2e2e6e          DCB      "n..."
0007e8  0000000a          DCB      "\n\0\0\0"
                  |L1.2028|
0007ec  3943410a          DCB      "\nAC9"
0007f0  754d2037          DCB      "7 Mu"
0007f4  4f206574          DCB      "te O"
0007f8  2e2e6666          DCB      "ff.."
0007fc  00000a2e          DCB      ".\n\0\0"
                          ENDP

                  AC97_PCMout_DMA0 PROC
;;;827    void AC97_PCMout_DMA0(U32 PCM_Size)
;;;828    {
000800  e92d4010          STMFD    sp!,{r4,lr}
000804  e1a04000          MOV      r4,r0
;;;829    	pISR_EINT0_2= (unsigned)Muting;
000808  e59f0130          LDR      r0,|L1.2368|
00080c  e59f1130          LDR      r1,|L1.2372|
000810  e5810f20          STR      r0,[r1,#0xf20]
;;;830    	pISR_DMA= (unsigned)DMA0_Play_Done;
000814  e59f012c          LDR      r0,|L1.2376|
000818  e5810f70          STR      r0,[r1,#0xf70]
;;;831    
;;;832    	rEINTPEND = 0xffffff;
00081c  e3e004ff          MVN      r0,#0xff000000
000820  e51f1730          LDR      r1,|L1.248|
000824  e5810038          STR      r0,[r1,#0x38]
;;;833    	rSRCPND = BIT_EINT0_2; //to clear the previous pending states
000828  e3a00001          MOV      r0,#1
00082c  e2411646          SUB      r1,r1,#0x4600000
000830  e5810000          STR      r0,[r1,#0]
;;;834    	rINTPND = BIT_EINT0_2;
000834  e3a00001          MOV      r0,#1
000838  e1c11000          BIC      r1,r1,r0
00083c  e5810010          STR      r0,[r1,#0x10]
;;;835    	
;;;836    	rINTMSK = ~(BIT_DMA|BIT_EINT0_2);
000840  e59f0104          LDR      r0,|L1.2380|
000844  e0011000          AND      r1,r1,r0
000848  e5810008          STR      r0,[r1,#8]
;;;837    	rINTSUBMSK = ~(BIT_SUB_DMA0);	
00084c  e3e00780          MVN      r0,#0x2000000
000850  e0011000          AND      r1,r1,r0
000854  e581001c          STR      r0,[r1,#0x1c]
;;;838    	rEINTMASK=~(1<<0);	
000858  e3e00001          MVN      r0,#1
00085c  e2811646          ADD      r1,r1,#0x4600000
000860  e5810034          STR      r0,[r1,#0x34]
;;;839    	
;;;840    	Play_AC97_BUF=(U32 *)(DOWN_BUF +0x30);
000864  e59f00e4          LDR      r0,|L1.2384|
000868  e59f10e4          LDR      r1,|L1.2388|
00086c  e5810000          STR      r0,[r1,#0]  ; Play_AC97_BUF
;;;841    	
;;;842    	//DMA Ch0 for PCMInitialize
;;;843    	rDISRC0  = (int)Play_AC97_BUF;                 
000870  e59f00dc          LDR      r0,|L1.2388|
000874  e5900000          LDR      r0,[r0,#0]  ; Play_AC97_BUF
000878  e59f10d8          LDR      r1,|L1.2392|
00087c  e5810000          STR      r0,[r1,#0]
;;;844    	rDISRCC0 = (0<<1) + (0<<0);		//The source is in the system bus(AHB), Increment      
000880  e3a00000          MOV      r0,#0
000884  e1c11000          BIC      r1,r1,r0
000888  e5810004          STR      r0,[r1,#4]
;;;845    	rDIDST0  = ((U32)0x45000018);  	//PCM Out Data Fifo    
00088c  e59f00c8          LDR      r0,|L1.2396|
000890  e1c110c0          BIC      r1,r1,r0,ASR #1
000894  e5810008          STR      r0,[r1,#8]
;;;846    	rDIDSTC0 = (1<<1) + (1<<0);           //The destination is in the peripheral bus(APB), Fixed  
000898  e3a00003          MOV      r0,#3
00089c  e1c11000          BIC      r1,r1,r0
0008a0  e581000c          STR      r0,[r1,#0xc]
;;;847    	rDCON0   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(5<<24)+(1<<23)+(0<<22)+(2<<20)+(PCM_Size/4);
0008a4  e59f00b4          LDR      r0,|L1.2400|
0008a8  e0800124          ADD      r0,r0,r4,LSR #2
0008ac  e5810010          STR      r0,[r1,#0x10]
;;;848    	rDMASKTRIG0 = (0<<2) + (1<<1) + (0<<0);          //No-stop[2], DMA1 channel On[1], No-sw trigger[0] 
0008b0  e3a00002          MOV      r0,#2
0008b4  e1c11000          BIC      r1,r1,r0
0008b8  e5810020          STR      r0,[r1,#0x20]
;;;849    
;;;850    	//AC97  Initialize
;;;851    	Uart_Printf("\nConnect Head Phone into CON20 (Head Phone Out) on SMDK24A0 and Press Key.\n");
0008bc  e59f00a0          LDR      r0,|L1.2404|
0008c0  ebfffffe          BL       _printf
;;;852    	Uart_Getch();
0008c4  ebfffffe          BL       Uart_Getch
;;;853    	Uart_Printf("\nNow Play...\n");
0008c8  e28f0098          ADR      r0,|L1.2408|
0008cc  ebfffffe          BL       _printf
;;;854    	Uart_Printf("To Volume Up, Press the 'u' key.\n");
0008d0  e28f00a0          ADR      r0,|L1.2424|
0008d4  ebfffffe          BL       _printf
;;;855    	Uart_Printf("To Volume Down, Press the 'd' key.\n");
0008d8  e28f00bc          ADR      r0,|L1.2460|
0008dc  ebfffffe          BL       _printf
;;;856    	Uart_Printf("To Mute On/Off, Press EINT0 Button.\n");
0008e0  e28f00d8          ADR      r0,|L1.2496|
0008e4  ebfffffe          BL       _printf
;;;857    	Uart_Printf("\nIf you want to exit, Press the 'x' key.\n");
0008e8  e28f00f8          ADR      r0,|L1.2536|
0008ec  ebfffffe          BL       _printf
;;;858    	Uart_Printf("Headphone Volume Register = 0x%x\n", Output_Volume);

⌨️ 快捷键说明

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