📄 iis_dual.txt
字号:
;;;451 static int mute=0;
;;;452
;;;453 ClearPending(BIT_EINT7_10);
0005b0 e3a00004 MOV r0,#4
0005b4 e51f1598 LDR r1,|L1.36|
0005b8 e5810000 STR r0,[r1,#0]
0005bc e1c10000 BIC r0,r1,r0
0005c0 e5900010 LDR r0,[r0,#0x10]
0005c4 e5810010 STR r0,[r1,#0x10]
0005c8 e1a00001 MOV r0,r1
0005cc e5900010 LDR r0,[r0,#0x10]
;;;454
;;;455 if(mute) //Mute
0005d0 e59f0068 LDR r0,|L1.1600|
0005d4 e5900000 LDR r0,[r0,#0] ; mute@IsrAudioMute_0
0005d8 e3500000 CMP r0,#0
0005dc 0a00000a BEQ |L1.1548|
;;;456 {
;;;457 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
0005e0 e3a00014 MOV r0,#0x14
0005e4 ebfffffe BL _WrL3Addr
;;;458 _WrL3Data(0xa4,0); //10,1,00,1,00 : after, no de-emp, mute, flat
0005e8 e3a01000 MOV r1,#0
0005ec e3a000a4 MOV r0,#0xa4
0005f0 ebfffffe BL _WrL3Data
;;;459 mute = 0;
0005f4 e3a00000 MOV r0,#0
0005f8 e59f1040 LDR r1,|L1.1600|
0005fc e5810000 STR r0,[r1,#0] ; mute@IsrAudioMute_0
;;;460 Uart_Printf("\n[Mute]\n");
000600 e28f003c ADR r0,|L1.1604|
000604 ebfffffe BL _printf
000608 ea000009 B |L1.1588|
;;;461 }
;;;462 else //No mute
;;;463 {
;;;464 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
|L1.1548|
00060c e3a00014 MOV r0,#0x14
000610 ebfffffe BL _WrL3Addr
;;;465 _WrL3Data(0xa0,0); //10,1,00,0,00 : after, no de-emp, no mute, flat
000614 e3a01000 MOV r1,#0
000618 e3a000a0 MOV r0,#0xa0
00061c ebfffffe BL _WrL3Data
;;;466 mute = 1;
000620 e3a00001 MOV r0,#1
000624 e59f1014 LDR r1,|L1.1600|
000628 e5810000 STR r0,[r1,#0] ; mute@IsrAudioMute_0
;;;467 Uart_Printf("\n[No Mute]\n");
00062c e28f001c ADR r0,|L1.1616|
000630 ebfffffe BL _printf
;;;468 }
;;;469 }
|L1.1588|
000634 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
000638 e25ef004 SUBS pc,lr,#4
|L1.1596|
00063c 00000000 DCD ||.bss$2||
|L1.1600|
000640 00000004 DCD ||.bss$2|| + 4
|L1.1604|
000644 754d5b0a DCB "\n[Mu"
000648 0a5d6574 DCB "te]\n"
00064c 00000000 DCB "\0\0\0\0"
|L1.1616|
000650 6f4e5b0a DCB "\n[No"
000654 74754d20 DCB " Mut"
000658 000a5d65 DCB "e]\n\0"
ENDP
__sub_IsrAudioOut PROC
;;;302 void __sub_IsrAudioOut(void) //DMA2 done interrupt subroutine
;;;303 {
00065c e92d4010 STMFD sp!,{r4,lr}
;;;304 int timeOut=0;
000660 e3a04000 MOV r4,#0
;;;305
;;;306 //NMI doesn't using auto-reload.
;;;307
;;;308 // ClearPending(BIT_DMA2);
;;;309
;;;310 if(stopPlay==TRUE)
000664 e51f03bc LDR r0,|L1.688|
000668 e5900000 LDR r0,[r0,#0] ; stopPlay
00066c e3500001 CMP r0,#1
000670 1a00001a BNE |L1.1760|
;;;311 {
;;;312 #if 1
;;;313 rDMASKTRIG2|= (1<<2); //NMI
000674 e51f02e4 LDR r0,|L1.920|
000678 e5900020 LDR r0,[r0,#0x20]
00067c e3800004 ORR r0,r0,#4
000680 e51f12f0 LDR r1,|L1.920|
000684 e5810020 STR r0,[r1,#0x20]
;;;314 #else
;;;315 rDMASKTRIG2= (1<<2); //StopDMA2 //recommended
;;;316 #endif
;;;317
;;;318 while (rDMASKTRIG2&(1<<1) && (timeOut++ < DMA_OFF_TIMEOUT));
000688 e1a00000 NOP
|L1.1676|
00068c e51f02fc LDR r0,|L1.920|
000690 e5900020 LDR r0,[r0,#0x20]
000694 e3100002 TST r0,#2
000698 0a000003 BEQ |L1.1708|
00069c e1a00004 MOV r0,r4
0006a0 e2844001 ADD r4,r4,#1
0006a4 e3500ffa CMP r0,#0x3e8
0006a8 bafffff7 BLT |L1.1676|
;;;319 if(timeOut >= DMA_OFF_TIMEOUT)
|L1.1708|
0006ac e3540ffa CMP r4,#0x3e8
0006b0 ba000001 BLT |L1.1724|
;;;320 Uart_Printf("ERROR: DMA2 Stop timed out\n");
0006b4 e28f00d0 ADR r0,|L1.1932|
0006b8 ebfffffe BL _printf
;;;321 rDMASKTRIG2 &= ~(1<<2); //not needed.... remove!!!
|L1.1724|
0006bc e51f032c LDR r0,|L1.920|
0006c0 e5900020 LDR r0,[r0,#0x20]
0006c4 e3c00004 BIC r0,r0,#4
0006c8 e51f1338 LDR r1,|L1.920|
0006cc e5810020 STR r0,[r1,#0x20]
;;;322 audioOutActive=FALSE;
0006d0 e3a00000 MOV r0,#0
0006d4 e51f1368 LDR r1,|L1.884|
0006d8 e5810000 STR r0,[r1,#0] ; audioOutActive
0006dc ea000029 B |L1.1928|
;;;323 //Uart_Printf("<PE>");
;;;324 }
;;;325 else
;;;326 {
;;;327 rDISRC2 = (U32)(playBuf[indexPlayBuf++]);
|L1.1760|
0006e0 e51f0354 LDR r0,|L1.916|
0006e4 e5900000 LDR r0,[r0,#0] ; indexPlayBuf
0006e8 e2801001 ADD r1,r0,#1
0006ec e51f0360 LDR r0,|L1.916|
0006f0 e5902000 LDR r2,[r0,#0] ; indexPlayBuf
0006f4 e5801000 STR r1,[r0,#0] ; indexPlayBuf
0006f8 e3a0007d MOV r0,#0x7d
0006fc e0010290 MUL r1,r0,r2
000700 e51f048c LDR r0,|L1.636|
000704 e5900000 LDR r0,[r0,#0] ; playBuf
000708 e0800201 ADD r0,r0,r1,LSL #4
00070c e51f137c LDR r1,|L1.920|
000710 e5810000 STR r0,[r1,#0]
;;;328 if(indexPlayBuf==MAX_INDEX_AUDIO_BUF)
000714 e51f0388 LDR r0,|L1.916|
000718 e5900000 LDR r0,[r0,#0] ; indexPlayBuf
00071c e35000c8 CMP r0,#0xc8
000720 1a000002 BNE |L1.1840|
;;;329 {
;;;330 indexPlayBuf=0;
000724 e3a00000 MOV r0,#0
000728 e51f139c LDR r1,|L1.916|
00072c e5810000 STR r0,[r1,#0] ; indexPlayBuf
;;;331 }
;;;332 rDMASKTRIG2 |= (1<<1); //enable DMA2
|L1.1840|
000730 e51f03a0 LDR r0,|L1.920|
000734 e5900020 LDR r0,[r0,#0x20]
000738 e3800002 ORR r0,r0,#2
00073c e51f13ac LDR r1,|L1.920|
000740 e5810020 STR r0,[r1,#0x20]
;;;333
;;;334 if((indexPlayBuf%10)==0)
000744 e51f03b8 LDR r0,|L1.916|
000748 e5901000 LDR r1,[r0,#0] ; indexPlayBuf
00074c e3a0000a MOV r0,#0xa
000750 ebfffffe BL __rt_sdiv
000754 e3510000 CMP r1,#0
000758 1a00000a BNE |L1.1928|
;;;335 {
;;;336 if(indexPlayBuf==0)WrUTXH0(';');
00075c e51f03d0 LDR r0,|L1.916|
000760 e5900000 LDR r0,[r0,#0] ; indexPlayBuf
000764 e3500000 CMP r0,#0
000768 1a000003 BNE |L1.1916|
00076c e3a0003b MOV r0,#0x3b
000770 e59f1030 LDR r1,|L1.1960|
000774 e5c10020 STRB r0,[r1,#0x20]
000778 ea000002 B |L1.1928|
;;;337 else WrUTXH0(',');
|L1.1916|
00077c e3a0002c MOV r0,#0x2c
000780 e59f1020 LDR r1,|L1.1960|
000784 e5c10020 STRB r0,[r1,#0x20]
;;;338 }
;;;339 }
;;;340 }
|L1.1928|
000788 e8bd8010 LDMFD sp!,{r4,pc}
|L1.1932|
00078c 4f525245 DCB "ERRO"
000790 44203a52 DCB "R: D"
000794 2032414d DCB "MA2 "
000798 706f7453 DCB "Stop"
00079c 6d697420 DCB " tim"
0007a0 6f206465 DCB "ed o"
0007a4 000a7475 DCB "ut\n\0"
|L1.1960|
0007a8 44400000 DCD 0x44400000
ENDP
__sub_IsrAudioIn PROC
;;;391 void __sub_IsrAudioIn(void) //DMA0 done interrupt
;;;392 {
0007ac e92d4010 STMFD sp!,{r4,lr}
;;;393 int timeOut=0;
0007b0 e3a04000 MOV r4,#0
;;;394
;;;395 // ClearPending(BIT_DMA0); //Clear pending bit
;;;396
;;;397 while((rDSTAT0 & 0xFFFFF) == 0); //wait until the current autoreload is completed
0007b4 e1a00000 NOP
|L1.1976|
0007b8 e51f02a0 LDR r0,|L1.1312|
0007bc e5900014 LDR r0,[r0,#0x14]
0007c0 e1a00600 MOV r0,r0,LSL #12
0007c4 e1b00620 MOVS r0,r0,LSR #12
0007c8 0afffffa BEQ |L1.1976|
;;;398
;;;399 if(stopRec==TRUE)
0007cc e51f0400 LDR r0,|L1.980|
0007d0 e5900000 LDR r0,[r0,#0] ; stopRec
0007d4 e3500001 CMP r0,#1
0007d8 1a000023 BNE |L1.2156|
;;;400 {
;;;401 rIISCON&=~(1<<4); //RxDmaServiceRequestDis
0007dc e59f0120 LDR r0,|L1.2308|
0007e0 e5900000 LDR r0,[r0,#0]
0007e4 e3c00010 BIC r0,r0,#0x10
0007e8 e59f1114 LDR r1,|L1.2308|
0007ec e5810000 STR r0,[r1,#0]
;;;402 rIISFCON&=~(1<<12); //RxFifoDis
0007f0 e1a00001 MOV r0,r1
0007f4 e590000c LDR r0,[r0,#0xc]
0007f8 e3c00d40 BIC r0,r0,#0x1000
0007fc e581000c STR r0,[r1,#0xc]
;;;403 #if 1
;;;404 rDMASKTRIG0|= (1<<2); //NMI
000800 e2410643 SUB r0,r1,#0x4300000
000804 e5900020 LDR r0,[r0,#0x20]
000808 e3800004 ORR r0,r0,#4
00080c e2411643 SUB r1,r1,#0x4300000
000810 e5810020 STR r0,[r1,#0x20]
;;;405 #else
;;;406 rDMASKTRIG0= (1<<2); //recommended
;;;407 #endif
;;;408 while (rDMASKTRIG0&(1<<1) && (timeOut++ < DMA_OFF_TIMEOUT));
000814 e1a00000 NOP
|L1.2072|
000818 e51f0300 LDR r0,|L1.1312|
00081c e5900020 LDR r0,[r0,#0x20]
000820 e3100002 TST r0,#2
000824 0a000003 BEQ |L1.2104|
000828 e1a00004 MOV r0,r4
00082c e2844001 ADD r4,r4,#1
000830 e3500ffa CMP r0,#0x3e8
000834 bafffff7 BLT |L1.2072|
;;;409
;;;410 if(timeOut >= DMA_OFF_TIMEOUT)
|L1.2104|
000838 e3540ffa CMP r4,#0x3e8
00083c ba000001 BLT |L1.2120|
;;;411 Uart_Printf("ERROR: DMA0 Stop timed out\n");
000840 e28f00c0 ADR r0,|L1.2312|
000844 ebfffffe BL _printf
;;;412
;;;413 rDMASKTRIG0 &= ~(1<<2); //not needed.... remove!!!
|L1.2120|
000848 e51f0330 LDR r0,|L1.1312|
00084c e5900020 LDR r0,[r0,#0x20]
000850 e3c00004 BIC r0,r0,#4
000854 e51f133c LDR r1,|L1.1312|
000858 e5810020 STR r0,[r1,#0x20]
;;;414
;;;415 audioInActive=FALSE;
00085c e3a00000 MOV r0,#0
000860 e51f161c LDR r1,|L1.588|
000864 e5810000 STR r0,[r1,#0] ; audioInActive
000868 ea000024 B |L1.2304|
;;;416 //Uart_Printf("[RE]");
;;;417 }
;;;418 else
;;;419 {
;;;420 rDIDST0 = (U32)(recBuf[indexRecBuf++]);
|L1.2156|
00086c e51f0358 LDR r0,|L1.1308|
000870 e5900000 LDR r0,[r0,#0] ; indexRecBuf
000874 e2801001 ADD r1,r0,#1
000878 e51f0364 LDR r0,|L1.1308|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -