📄 iis.txt
字号:
0002f4 e3a02000 MOV r2,#0
|L1.760|
0002f8 e3520004 CMP r2,#4
0002fc aa000001 BGE |L1.776|
000300 e2822001 ADD r2,r2,#1
000304 eafffffb B |L1.760|
;;;537 }
;;;538 data >>= 1; //For check next bit
|L1.776|
000308 e1a000a0 MOV r0,r0,LSR #1
;;;539 }
00030c eaffffc2 B |L1.540|
;;;540
;;;541 rGPBDAT = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M); //L3M=H,L3C=H
|L1.784|
000310 e3a0c456 MOV r12,#0x56000000
000314 e59cc014 LDR r12,[r12,#0x14]
000318 e3ccc01c BIC r12,r12,#0x1c
00031c e38cc014 ORR r12,r12,#0x14
000320 e3a0e456 MOV lr,#0x56000000
000324 e58ec014 STR r12,[lr,#0x14]
;;;542 }
000328 e49df004 LDR pc,[sp],#4
ENDP
_WrL3Addr PROC
;;;468 void _WrL3Addr(U8 data)
;;;469 {
00032c e3a03456 MOV r3,#0x56000000
;;;470 S32 i,j;
;;;471
;;;472 rGPBDAT = rGPBDAT & ~(L3D | L3M | L3C) | L3C; //L3D=L, L3M=L(in address mode), L3C=H
000330 e5933014 LDR r3,[r3,#0x14]
000334 e3c3301c BIC r3,r3,#0x1c
000338 e3833010 ORR r3,r3,#0x10
00033c e3a0c456 MOV r12,#0x56000000
000340 e58c3014 STR r3,[r12,#0x14]
;;;473
;;;474 for(j=0;j<4;j++); //tsu(L3) > 190ns
000344 e3a01000 MOV r1,#0
|L1.840|
000348 e3510004 CMP r1,#4
00034c aa000001 BGE |L1.856|
000350 e2811001 ADD r1,r1,#1
000354 eafffffb B |L1.840|
;;;475
;;;476 //GPB[4:2]=L3C:L3D:L3M
;;;477 for(i=0;i<8;i++) //LSB first
|L1.856|
000358 e3a02000 MOV r2,#0
|L1.860|
00035c e3520008 CMP r2,#8
000360 aa000042 BGE |L1.1136|
000364 ea000001 B |L1.880|
|L1.872|
000368 e2822001 ADD r2,r2,#1
00036c eafffffa B |L1.860|
;;;478 {
;;;479 if(data & 0x1) //If data's LSB is 'H'
|L1.880|
000370 e3100001 TST r0,#1
000374 0a00001d BEQ |L1.1008|
;;;480 {
;;;481 rGPBDAT &= ~L3C; //L3C=L
000378 e3a03456 MOV r3,#0x56000000
00037c e5933014 LDR r3,[r3,#0x14]
000380 e3c33010 BIC r3,r3,#0x10
000384 e3a0c456 MOV r12,#0x56000000
000388 e58c3014 STR r3,[r12,#0x14]
;;;482 rGPBDAT |= L3D; //L3D=H
00038c e3a03456 MOV r3,#0x56000000
000390 e5933014 LDR r3,[r3,#0x14]
000394 e3833008 ORR r3,r3,#8
000398 e3a0c456 MOV r12,#0x56000000
00039c e58c3014 STR r3,[r12,#0x14]
;;;483 for(j=0;j<4;j++); //tcy(L3) > 500ns
0003a0 e3a01000 MOV r1,#0
|L1.932|
0003a4 e3510004 CMP r1,#4
0003a8 aa000001 BGE |L1.948|
0003ac e2811001 ADD r1,r1,#1
0003b0 eafffffb B |L1.932|
;;;484 rGPBDAT |= L3C; //L3C=H
|L1.948|
0003b4 e3a03456 MOV r3,#0x56000000
0003b8 e5933014 LDR r3,[r3,#0x14]
0003bc e3833010 ORR r3,r3,#0x10
0003c0 e3a0c456 MOV r12,#0x56000000
0003c4 e58c3014 STR r3,[r12,#0x14]
;;;485 rGPBDAT |= L3D; //L3D=H
0003c8 e3a03456 MOV r3,#0x56000000
0003cc e5933014 LDR r3,[r3,#0x14]
0003d0 e3833008 ORR r3,r3,#8
0003d4 e3a0c456 MOV r12,#0x56000000
0003d8 e58c3014 STR r3,[r12,#0x14]
;;;486 for(j=0;j<4;j++); //tcy(L3) > 500ns
0003dc e3a01000 MOV r1,#0
|L1.992|
0003e0 e3510004 CMP r1,#4
0003e4 aa00001f BGE |L1.1128|
0003e8 e2811001 ADD r1,r1,#1
0003ec eafffffb B |L1.992|
;;;487 }
;;;488 else //If data's LSB is 'L'
;;;489 {
;;;490 rGPBDAT &= ~L3C; //L3C=L
|L1.1008|
0003f0 e3a03456 MOV r3,#0x56000000
0003f4 e5933014 LDR r3,[r3,#0x14]
0003f8 e3c33010 BIC r3,r3,#0x10
0003fc e3a0c456 MOV r12,#0x56000000
000400 e58c3014 STR r3,[r12,#0x14]
;;;491 rGPBDAT &= ~L3D; //L3D=L
000404 e3a03456 MOV r3,#0x56000000
000408 e5933014 LDR r3,[r3,#0x14]
00040c e3c33008 BIC r3,r3,#8
000410 e3a0c456 MOV r12,#0x56000000
000414 e58c3014 STR r3,[r12,#0x14]
;;;492 for(j=0;j<4;j++); //tcy(L3) > 500ns
000418 e3a01000 MOV r1,#0
|L1.1052|
00041c e3510004 CMP r1,#4
000420 aa000001 BGE |L1.1068|
000424 e2811001 ADD r1,r1,#1
000428 eafffffb B |L1.1052|
;;;493 rGPBDAT |= L3C; //L3C=H
|L1.1068|
00042c e3a03456 MOV r3,#0x56000000
000430 e5933014 LDR r3,[r3,#0x14]
000434 e3833010 ORR r3,r3,#0x10
000438 e3a0c456 MOV r12,#0x56000000
00043c e58c3014 STR r3,[r12,#0x14]
;;;494 rGPBDAT &= ~L3D; //L3D=L
000440 e3a03456 MOV r3,#0x56000000
000444 e5933014 LDR r3,[r3,#0x14]
000448 e3c33008 BIC r3,r3,#8
00044c e3a0c456 MOV r12,#0x56000000
000450 e58c3014 STR r3,[r12,#0x14]
;;;495 for(j=0;j<4;j++); //tcy(L3) > 500ns
000454 e3a01000 MOV r1,#0
|L1.1112|
000458 e3510004 CMP r1,#4
00045c aa000001 BGE |L1.1128|
000460 e2811001 ADD r1,r1,#1
000464 eafffffb B |L1.1112|
;;;496 }
;;;497 data >>= 1;
|L1.1128|
000468 e1a000a0 MOV r0,r0,LSR #1
;;;498 }
00046c eaffffbd B |L1.872|
;;;499
;;;500 rGPBDAT = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M); //L3M=H,L3C=H
|L1.1136|
000470 e3a03456 MOV r3,#0x56000000
000474 e5933014 LDR r3,[r3,#0x14]
000478 e3c3301c BIC r3,r3,#0x1c
00047c e3833014 ORR r3,r3,#0x14
000480 e3a0c456 MOV r12,#0x56000000
000484 e58c3014 STR r3,[r12,#0x14]
;;;501 }
000488 e1a0f00e MOV pc,lr
ENDP
Muting PROC
;;;571 void __irq Muting(void)
;;;572 {
00048c e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;573 ClearPending(BIT_EINT0); //Clear pending bit
000490 e3a00001 MOV r0,#1
000494 e3a0144a MOV r1,#0x4a000000
000498 e5810000 STR r0,[r1,#0]
00049c e3a00001 MOV r0,#1
0004a0 e3a0144a MOV r1,#0x4a000000
0004a4 e5810010 STR r0,[r1,#0x10]
0004a8 e3a0044a MOV r0,#0x4a000000
0004ac e5900010 LDR r0,[r0,#0x10]
;;;574
;;;575 if(mute) //Mute
0004b0 e59f0074 LDR r0,|L1.1324|
0004b4 e5d00000 LDRB r0,[r0,#0] ; mute
0004b8 e3500000 CMP r0,#0
0004bc 0a00000a BEQ |L1.1260|
;;;576 {
;;;577 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
0004c0 e3a00014 MOV r0,#0x14
0004c4 ebfffffe BL _WrL3Addr
;;;578 _WrL3Data(0xa4,0); //10,1,00,1,00 : after, no de-emp, mute, flat
0004c8 e3a01000 MOV r1,#0
0004cc e3a000a4 MOV r0,#0xa4
0004d0 ebfffffe BL _WrL3Data
;;;579 mute = 0;
0004d4 e3a00000 MOV r0,#0
0004d8 e59f104c LDR r1,|L1.1324|
0004dc e5c10000 STRB r0,[r1,#0] ; mute
;;;580 Uart_Printf("\nMute on...\n");
0004e0 e28f0048 ADR r0,|L1.1328|
0004e4 ebfffffe BL Uart_Printf
0004e8 ea000009 B |L1.1300|
;;;581 }
;;;582 else //No mute
;;;583 {
;;;584 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
|L1.1260|
0004ec e3a00014 MOV r0,#0x14
0004f0 ebfffffe BL _WrL3Addr
;;;585 _WrL3Data(0xa0,0); //10,1,00,0,00 : after, no de-emp, no mute, flat
0004f4 e3a01000 MOV r1,#0
0004f8 e3a000a0 MOV r0,#0xa0
0004fc ebfffffe BL _WrL3Data
;;;586 mute = 1;
000500 e3a00001 MOV r0,#1
000504 e59f1020 LDR r1,|L1.1324|
000508 e5c10000 STRB r0,[r1,#0] ; mute
;;;587 Uart_Printf("\nMute off...\n");
00050c e28f002c ADR r0,|L1.1344|
000510 ebfffffe BL Uart_Printf
;;;588 }
;;;589 }
|L1.1300|
000514 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
000518 e25ef004 SUBS pc,lr,#4
|L1.1308|
00051c 00000014 DCD ||.bss$2|| + 20
|L1.1312|
000520 00000018 DCD ||.bss$2|| + 24
|L1.1316|
000524 0000001c DCD ||.bss$2|| + 28
|L1.1320|
000528 00000020 DCD ||.bss$2|| + 32
|L1.1324|
00052c 00000000 DCD mute
|L1.1328|
000530 74754d0a DCB "\nMut"
000534 6e6f2065 DCB "e on"
000538 0a2e2e2e DCB "...\n"
00053c 00000000 DCB "\0\0\0\0"
|L1.1344|
000540 74754d0a DCB "\nMut"
000544 666f2065 DCB "e of"
000548 2e2e2e66 DCB "f..."
00054c 0000000a DCB "\n\0\0\0"
ENDP
DMA2_Done PROC
;;;552 void __irq DMA2_Done(void)
;;;553 {
000550 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;554 rIISCON &= ~(1<<0);
000554 e3a00455 MOV r0,#0x55000000
000558 e5900000 LDR r0,[r0,#0]
00055c e3c00001 BIC r0,r0,#1
000560 e3a01455 MOV r1,#0x55000000
000564 e5810000 STR r0,[r1,#0]
;;;555 rIISCON |= 0x1;
000568 e3a00455 MOV r0,#0x55000000
00056c e5900000 LDR r0,[r0,#0]
000570 e3800001 ORR r0,r0,#1
000574 e3a01455 MOV r1,#0x55000000
000578 e5810000 STR r0,[r1,#0]
;;;556
;;;557 ClearPending(BIT_DMA2); //Clear pending bit
00057c e3a00a80 MOV r0,#0x80000
000580 e3a0144a MOV r1,#0x4a000000
000584 e5810000 STR r0,[r1,#0]
000588 e3a00a80 MOV r0,#0x80000
00058c e3a0144a MOV r1,#0x4a000000
000590 e5810010 STR r0,[r1,#0x10]
000594 e3a0044a MOV r0,#0x4a000000
000598 e5900010 LDR r0,[r0,#0x10]
;;;558 Uart_Printf("\n~~~");
00059c e28f0008 ADR r0,|L1.1452|
0005a0 ebfffffe BL Uart_Printf
;;;559 //Uart_Printf("\nrIISMOD=0x%x\n",rIISMOD);
;;;560 }
0005a4 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
0005a8 e25ef004 SUBS pc,lr,#4
|L1.1452|
0005ac 7e7e7e0a DCB "\n~~~"
0005b0 00000000 DCB "\0\0\0\0"
ENDP
IIS_PlayWave_DMA2 PROC
;;;310 void IIS_PlayWave_DMA2(unsigned char *start_addr, U32 play_size)
;;;311 {
0005b4 e92d40f8 STMFD sp!,{r3-r7,lr}
0005b8 e1a04000 MOV r4,r0
0005bc e1a05001 MOV r5,r1
;;;312 pISR_DMA2 = (unsigned)DMA2_Done;
0005c0 e59f01a8 LDR r0,|L1.1904|
0005c4 e59f11a8 LDR r1,|L1.1908|
0005c8 e5810f6c STR r0,[r1,#0xf6c]
;;;313 pISR_EINT0 = (unsigned)Muting;
0005cc e59f01a4 LDR r0,|L1.1912|
0005d0 e5810f20 STR r0,[r1,#0xf20]
;;;314
;;;315 if (IIS_MasterClk_Sel == 0) //IIS Master Clock Source = PCLK
0005d4 e59f01a0 LDR r0,|L1.1916|
0005d8 e5d00000 LDRB r0,[r0,#0] ; IIS_MasterClk_Sel
0005dc e3500000 CMP r0,#0
0005e0 1a000014 BNE |L1.1592|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -