📄 iis_dual.txt
字号:
IsrAudioMute PROC
;;;439 void __irq IsrAudioMute(void)
;;;440 {
0005a4 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;441 static int mute=0;
;;;442
;;;443 ClearPending(BIT_EINT0);
0005a8 e3a00001 MOV r0,#1
0005ac e3a0144a MOV r1,#0x4a000000
0005b0 e5810000 STR r0,[r1,#0]
0005b4 e3a00001 MOV r0,#1
0005b8 e3a0144a MOV r1,#0x4a000000
0005bc e5810010 STR r0,[r1,#0x10]
0005c0 e3a0044a MOV r0,#0x4a000000
0005c4 e5900010 LDR r0,[r0,#0x10]
;;;444
;;;445 if(mute) //Mute
0005c8 e59f0068 LDR r0,|L1.1592|
0005cc e5900000 LDR r0,[r0,#0] ; mute@IsrAudioMute_0
0005d0 e3500000 CMP r0,#0
0005d4 0a00000a BEQ |L1.1540|
;;;446 {
;;;447 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
0005d8 e3a00014 MOV r0,#0x14
0005dc ebfffffe BL _WrL3Addr
;;;448 _WrL3Data(0xa4,0); //10,1,00,1,00 : after, no de-emp, mute, flat
0005e0 e3a01000 MOV r1,#0
0005e4 e3a000a4 MOV r0,#0xa4
0005e8 ebfffffe BL _WrL3Data
;;;449 mute = 0;
0005ec e3a00000 MOV r0,#0
0005f0 e59f1040 LDR r1,|L1.1592|
0005f4 e5810000 STR r0,[r1,#0] ; mute@IsrAudioMute_0
;;;450 Uart_Printf("\n[Mute]\n");
0005f8 e28f003c ADR r0,|L1.1596|
0005fc ebfffffe BL Uart_Printf
000600 ea000009 B |L1.1580|
;;;451 }
;;;452 else //No mute
;;;453 {
;;;454 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
|L1.1540|
000604 e3a00014 MOV r0,#0x14
000608 ebfffffe BL _WrL3Addr
;;;455 _WrL3Data(0xa0,0); //10,1,00,0,00 : after, no de-emp, no mute, flat
00060c e3a01000 MOV r1,#0
000610 e3a000a0 MOV r0,#0xa0
000614 ebfffffe BL _WrL3Data
;;;456 mute = 1;
000618 e3a00001 MOV r0,#1
00061c e59f1014 LDR r1,|L1.1592|
000620 e5810000 STR r0,[r1,#0] ; mute@IsrAudioMute_0
;;;457 Uart_Printf("\n[No Mute]\n");
000624 e28f001c ADR r0,|L1.1608|
000628 ebfffffe BL Uart_Printf
;;;458 }
;;;459 }
|L1.1580|
00062c e8bd500f LDMFD sp!,{r0-r3,r12,lr}
000630 e25ef004 SUBS pc,lr,#4
|L1.1588|
000634 00000000 DCD ||.bss$2||
|L1.1592|
000638 00000008 DCD ||.bss$2|| + 8
|L1.1596|
00063c 754d5b0a DCB "\n[Mu"
000640 0a5d6574 DCB "te]\n"
000644 00000000 DCB "\0\0\0\0"
|L1.1608|
000648 6f4e5b0a DCB "\n[No"
00064c 74754d20 DCB " Mut"
000650 000a5d65 DCB "e]\n\0"
ENDP
IsrAudioOut PROC
;;;306 void __irq IsrAudioOut(void) //DMA2 done interrupt
;;;307 {
000654 e92d501f STMFD sp!,{r0-r4,r12,lr}
000658 e24dd004 SUB sp,sp,#4
;;;308 int timeOut=0;
00065c e3a04000 MOV r4,#0
;;;309
;;;310 //NMI doesn't using auto-reload.
;;;311
;;;312 ClearPending(BIT_DMA2);
000660 e3a00a80 MOV r0,#0x80000
000664 e3a0144a MOV r1,#0x4a000000
000668 e5810000 STR r0,[r1,#0]
00066c e3a00a80 MOV r0,#0x80000
000670 e3a0144a MOV r1,#0x4a000000
000674 e5810010 STR r0,[r1,#0x10]
000678 e3a0044a MOV r0,#0x4a000000
00067c e5900010 LDR r0,[r0,#0x10]
;;;313
;;;314 if(stopPlay==TRUE)
000680 e51f03dc LDR r0,|L1.684|
000684 e5900000 LDR r0,[r0,#0] ; stopPlay
000688 e3500001 CMP r0,#1
00068c 1a00001c BNE |L1.1796|
;;;315 {
;;;316 #if 1
;;;317 rDMASKTRIG2|= (1<<2); //NMI
000690 e3a0044b MOV r0,#0x4b000000
000694 e59000a0 LDR r0,[r0,#0xa0]
000698 e3800004 ORR r0,r0,#4
00069c e3a0144b MOV r1,#0x4b000000
0006a0 e58100a0 STR r0,[r1,#0xa0]
;;;318 #else
;;;319 rDMASKTRIG2= (1<<2); //StopDMA2 //recommended
;;;320 #endif
;;;321
;;;322 while (rDMASKTRIG2&(1<<1) && (timeOut++ < DMA_OFF_TIMEOUT));
0006a4 e1a00000 NOP
|L1.1704|
0006a8 e3a0044b MOV r0,#0x4b000000
0006ac e59000a0 LDR r0,[r0,#0xa0]
0006b0 e3100002 TST r0,#2
0006b4 0a000003 BEQ |L1.1736|
0006b8 e1a00004 MOV r0,r4
0006bc e2844001 ADD r4,r4,#1
0006c0 e3500ffa CMP r0,#0x3e8
0006c4 bafffff7 BLT |L1.1704|
;;;323 if(timeOut >= DMA_OFF_TIMEOUT)
|L1.1736|
0006c8 e3540ffa CMP r4,#0x3e8
0006cc ba000001 BLT |L1.1752|
;;;324 Uart_Printf("ERROR: DMA2 Stop timed out\n");
0006d0 e28f00e0 ADR r0,|L1.1976|
0006d4 ebfffffe BL Uart_Printf
;;;325 rDMASKTRIG2 &= ~(1<<2); //not needed.... remove!!!
|L1.1752|
0006d8 e3a0044b MOV r0,#0x4b000000
0006dc e59000a0 LDR r0,[r0,#0xa0]
0006e0 e3c00004 BIC r0,r0,#4
0006e4 e3a0144b MOV r1,#0x4b000000
0006e8 e58100a0 STR r0,[r1,#0xa0]
;;;326 audioOutActive=FALSE;
0006ec e3a00000 MOV r0,#0
0006f0 e51f1388 LDR r1,|L1.880|
0006f4 e5810000 STR r0,[r1,#0] ; audioOutActive
;;;327 Uart_Printf("<PE>");
0006f8 e28f00d4 ADR r0,|L1.2004|
0006fc ebfffffe BL Uart_Printf
000700 ea000029 B |L1.1964|
;;;328 }
;;;329 else
;;;330 {
;;;331 rDISRC2 = (U32)(playBuf[indexPlayBuf++]);
|L1.1796|
000704 e51f037c LDR r0,|L1.912|
000708 e5900000 LDR r0,[r0,#0] ; indexPlayBuf
00070c e2801001 ADD r1,r0,#1
000710 e51f0388 LDR r0,|L1.912|
000714 e5902000 LDR r2,[r0,#0] ; indexPlayBuf
000718 e5801000 STR r1,[r0,#0] ; indexPlayBuf
00071c e3a0007d MOV r0,#0x7d
000720 e0010290 MUL r1,r0,r2
000724 e51f04b4 LDR r0,|L1.632|
000728 e5900000 LDR r0,[r0,#0] ; playBuf
00072c e0800201 ADD r0,r0,r1,LSL #4
000730 e3a0144b MOV r1,#0x4b000000
000734 e5810080 STR r0,[r1,#0x80]
;;;332 if(indexPlayBuf==MAX_INDEX_AUDIO_BUF)
000738 e51f03b0 LDR r0,|L1.912|
00073c e5900000 LDR r0,[r0,#0] ; indexPlayBuf
000740 e35000c8 CMP r0,#0xc8
000744 1a000002 BNE |L1.1876|
;;;333 {
;;;334 indexPlayBuf=0;
000748 e3a00000 MOV r0,#0
00074c e51f13c4 LDR r1,|L1.912|
000750 e5810000 STR r0,[r1,#0] ; indexPlayBuf
;;;335 }
;;;336 rDMASKTRIG2 |= (1<<1); //enable DMA2
|L1.1876|
000754 e3a0044b MOV r0,#0x4b000000
000758 e59000a0 LDR r0,[r0,#0xa0]
00075c e3800002 ORR r0,r0,#2
000760 e3a0144b MOV r1,#0x4b000000
000764 e58100a0 STR r0,[r1,#0xa0]
;;;337
;;;338 if((indexPlayBuf%10)==0)
000768 e51f03e0 LDR r0,|L1.912|
00076c e5901000 LDR r1,[r0,#0] ; indexPlayBuf
000770 e3a0000a MOV r0,#0xa
000774 ebfffffe BL __rt_sdiv
000778 e3510000 CMP r1,#0
00077c 1a00000a BNE |L1.1964|
;;;339 {
;;;340 if(indexPlayBuf==0)WrUTXH0(';');
000780 e51f03f8 LDR r0,|L1.912|
000784 e5900000 LDR r0,[r0,#0] ; indexPlayBuf
000788 e3500000 CMP r0,#0
00078c 1a000003 BNE |L1.1952|
000790 e3a0003b MOV r0,#0x3b
000794 e3a01450 MOV r1,#0x50000000
000798 e5c10020 STRB r0,[r1,#0x20]
00079c ea000002 B |L1.1964|
;;;341 else WrUTXH0(',');
|L1.1952|
0007a0 e3a0002c MOV r0,#0x2c
0007a4 e3a01450 MOV r1,#0x50000000
0007a8 e5c10020 STRB r0,[r1,#0x20]
;;;342 }
;;;343 }
;;;344 }
|L1.1964|
0007ac e28dd004 ADD sp,sp,#4
0007b0 e8bd501f LDMFD sp!,{r0-r4,r12,lr}
0007b4 e25ef004 SUBS pc,lr,#4
|L1.1976|
0007b8 4f525245 DCB "ERRO"
0007bc 44203a52 DCB "R: D"
0007c0 2032414d DCB "MA2 "
0007c4 706f7453 DCB "Stop"
0007c8 6d697420 DCB " tim"
0007cc 6f206465 DCB "ed o"
0007d0 000a7475 DCB "ut\n\0"
|L1.2004|
0007d4 3e45503c DCB "<PE>"
0007d8 00000000 DCB "\0\0\0\0"
ENDP
IsrAudioIn PROC
;;;395 void __irq IsrAudioIn(void) //DMA1 done interrupt
;;;396 {
0007dc e92d501f STMFD sp!,{r0-r4,r12,lr}
0007e0 e24dd004 SUB sp,sp,#4
;;;397 int timeOut=0;
0007e4 e3a04000 MOV r4,#0
;;;398
;;;399 ClearPending(BIT_DMA1); //Clear pending bit
0007e8 e3a00a40 MOV r0,#0x40000
0007ec e3a0144a MOV r1,#0x4a000000
0007f0 e5810000 STR r0,[r1,#0]
0007f4 e3a00a40 MOV r0,#0x40000
0007f8 e3a0144a MOV r1,#0x4a000000
0007fc e5810010 STR r0,[r1,#0x10]
000800 e3a0044a MOV r0,#0x4a000000
000804 e5900010 LDR r0,[r0,#0x10]
;;;400
;;;401 while((rDSTAT1 & 0xFFFFF) == 0); //wait until the current autoreload is completed
000808 e1a00000 NOP
|L1.2060|
00080c e3a0044b MOV r0,#0x4b000000
000810 e5900054 LDR r0,[r0,#0x54]
000814 e1a00600 MOV r0,r0,LSL #12
000818 e1b00620 MOVS r0,r0,LSR #12
00081c 0afffffa BEQ |L1.2060|
;;;402
;;;403 if(stopRec==TRUE)
000820 e51f045c LDR r0,|L1.972|
000824 e5900000 LDR r0,[r0,#0] ; stopRec
000828 e3500001 CMP r0,#1
00082c 1a000026 BNE |L1.2252|
;;;404 {
;;;405 rIISCON&=~(1<<4); //RxDmaServiceRequestDis
000830 e3a00455 MOV r0,#0x55000000
000834 e5900000 LDR r0,[r0,#0]
000838 e3c00010 BIC r0,r0,#0x10
00083c e3a01455 MOV r1,#0x55000000
000840 e5810000 STR r0,[r1,#0]
;;;406 rIISFCON&=~(1<<12); //RxFifoDis
000844 e3a00455 MOV r0,#0x55000000
000848 e590000c LDR r0,[r0,#0xc]
00084c e3c00d40 BIC r0,r0,#0x1000
000850 e3a01455 MOV r1,#0x55000000
000854 e581000c STR r0,[r1,#0xc]
;;;407 #if 1
;;;408 rDMASKTRIG1|= (1<<2); //NMI
000858 e3a0044b MOV r0,#0x4b000000
00085c e5900060 LDR r0,[r0,#0x60]
000860 e3800004 ORR r0,r0,#4
000864 e3a0144b MOV r1,#0x4b000000
000868 e5810060 STR r0,[r1,#0x60]
;;;409 #else
;;;410 rDMASKTRIG1= (1<<2); //recommended
;;;411 #endif
;;;412 while (rDMASKTRIG1&(1<<1) && (timeOut++ < DMA_OFF_TIMEOUT));
00086c e1a00000 NOP
|L1.2160|
000870 e3a0044b MOV r0,#0x4b000000
000874 e5900060 LDR r0,[r0,#0x60]
000878 e3100002 TST r0,#2
00087c 0a000003 BEQ |L1.2192|
000880 e1a00004 MOV r0,r4
000884 e2844001 ADD r4,r4,#1
000888 e3500ffa CMP r0,#0x3e8
00088c bafffff7 BLT |L1.2160|
;;;413
;;;414 if(timeOut >= DMA_OFF_TIMEOUT)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -