📄 irda.txt
字号:
000574 e51f13d8 LDR r1,|L1.420| ;233
000578 e581002c STR r0,[r1,#0x2c] ;233
00057c e1a00804 MOV r0,r4,LSL #16 ;234
000580 e1a00c20 MOV r0,r0,LSR #24 ;234
000584 e5810030 STR r0,[r1,#0x30] ;234
000588 e1a00001 MOV r0,r1 ;235
00058c e5900030 LDR r0,[r0,#0x30] ;235
000590 e20020ff AND r2,r0,#0xff ;235
000594 e1a00001 MOV r0,r1 ;235
000598 e590002c LDR r0,[r0,#0x2c] ;235
00059c e20010ff AND r1,r0,#0xff ;235
0005a0 e28f00ac ADR r0,|L1.1620| ;235
0005a4 ebfffffe BL _printf ;235
0005a8 e1a00000 NOP ;243
|L1.1452|
0005ac e51f0410 LDR r0,|L1.420| ;243
0005b0 e5900018 LDR r0,[r0,#0x18] ;243
0005b4 e3100018 TST r0,#0x18 ;243
0005b8 1a000004 BNE |L1.1488| ;243
0005bc ebfffffe BL Uart_GetKey ;245
0005c0 e3500000 CMP r0,#0 ;245
0005c4 0a000000 BEQ |L1.1484| ;245
0005c8 eaffffc5 B |L1.1252| ;246
|L1.1484|
0005cc eafffff6 B |L1.1452| ;247
|L1.1488|
0005d0 e28f0098 ADR r0,|L1.1648| ;249
0005d4 ebfffffe BL _printf ;249
0005d8 e3a00001 MOV r0,#1 ;250
0005dc eaffffc0 B |L1.1252| ;250
|L1.1504|
0005e0 545b200a DCB "\n [T" ;250
0005e4 3d656d69 DCB "ime=" ;250
0005e8 00005d34 DCB "4]\0\0" ;250
|L1.1516|
0005ec 49465b20 DCB " [FI" ;250
0005f0 6f6d2052 DCB "R mo" ;250
0005f4 0a5d6564 DCB "de]\n" ;250
0005f8 00000000 DCB "\0\0\0\0" ;250
|L1.1532|
0005fc 494d5b20 DCB " [MI" ;250
000600 6f6d2052 DCB "R mo" ;250
000604 0a5d6564 DCB "de]\n" ;250
000608 00000000 DCB "\0\0\0\0" ;250
|L1.1548|
00060c 6f4e5b20 DCB " [No" ;250
000610 6f6d2020 DCB " mo" ;250
000614 0a5d6564 DCB "de]\n" ;250
000618 00000000 DCB "\0\0\0\0" ;250
|L1.1564|
00061c 52444d72 DCB "rMDR" ;250
000620 30203d20 DCB " = 0" ;250
000624 2c782578 DCB "x%x," ;250
000628 4e437220 DCB " rCN" ;250
00062c 203d2054 DCB "T = " ;250
000630 78257830 DCB "0x%x" ;250
|L1.1588|
000634 0000000a DCB "\n\0\0\0" ;250
|L1.1592|
000638 58525b20 DCB " [RX" ;250
00063c 4c2d4c46 DCB "FL-L" ;250
000640 6425205d DCB "] %d" ;250
000644 525b202c DCB ", [R" ;250
000648 2d4c4658 DCB "XFL-" ;250
00064c 25205d48 DCB "H] %" ;250
000650 00000a64 DCB "d\n\0\0" ;250
|L1.1620|
000654 58545b20 DCB " [TX" ;250
000658 4c2d4c46 DCB "FL-L" ;250
00065c 6425205d DCB "] %d" ;250
000660 545b202c DCB ", [T" ;250
000664 2d4c4658 DCB "XFL-" ;250
000668 25205d48 DCB "H] %" ;250
00066c 00000a64 DCB "d\n\0\0" ;250
|L1.1648|
000670 61207854 DCB "Tx a" ;250
000674 5220646e DCB "nd R" ;250
000678 49462078 DCB "x FI" ;250
00067c 63204f46 DCB "FO c" ;250
000680 7261656c DCB "lear" ;250
000684 20736920 DCB " is " ;250
000688 7265766f DCB "over" ;250
00068c 0a2e2e2e DCB "...\n" ;250
000690 00000000 DCB "\0\0\0\0" ;250
ENDP
Test_Irda_Fifo_Int_Rx PROC
;;;414 void Test_Irda_Fifo_Int_Rx(int MODE, int PREAMBLE, int STARTFLAG, int RXFL, int RXTRIG)
;;;415 {
000694 e92d43f8 STMFD sp!,{r3-r9,lr}
000698 e1a06000 MOV r6,r0
00069c e1a07001 MOV r7,r1
0006a0 e1a08002 MOV r8,r2
0006a4 e1a09003 MOV r9,r3
0006a8 e59d5020 LDR r5,[sp,#0x20]
;;;416 int i;
;;;417
;;;418 // Initialize IrDA
;;;419 Init_Irda(MODE, PREAMBLE, STARTFLAG, RXFL, RXTRIG);
0006ac e1a03009 MOV r3,r9
0006b0 e1a02008 MOV r2,r8
0006b4 e1a01007 MOV r1,r7
0006b8 e1a00006 MOV r0,r6
0006bc e58d5000 STR r5,[sp,#0]
0006c0 ebfffffe BL Init_Irda
;;;420
;;;421 // Register IrDA ISR
;;;422 pISR_IrDA_MSTICK=(unsigned)Irda_Int_Rx;
0006c4 e59f0218 LDR r0,|L1.2276|
0006c8 e59f1218 LDR r1,|L1.2280|
0006cc e5810f90 STR r0,[r1,#0xf90]
;;;423
;;;424 ClearPending(BIT_IrDA_MSTICK); // Clear IrDA Int Pending
0006d0 e3a00540 MOV r0,#0x10000000
0006d4 e51f12e0 LDR r1,|L1.1020|
0006d8 e5810000 STR r0,[r1,#0]
0006dc e1c10000 BIC r0,r1,r0
0006e0 e5900010 LDR r0,[r0,#0x10]
0006e4 e5810010 STR r0,[r1,#0x10]
0006e8 e1a00001 MOV r0,r1
0006ec e5900010 LDR r0,[r0,#0x10]
;;;425 rSUBSRCPND = BIT_SUB_IrDA;
0006f0 e3a00040 MOV r0,#0x40
0006f4 e1c11000 BIC r1,r1,r0
0006f8 e5810018 STR r0,[r1,#0x18]
;;;426
;;;427 rINTSUBMSK &= ~(BIT_SUB_IrDA); // Unmask IrDA sub-pending bit
0006fc e1c10000 BIC r0,r1,r0
000700 e590001c LDR r0,[r0,#0x1c]
000704 e3c00040 BIC r0,r0,#0x40
000708 e581001c STR r0,[r1,#0x1c]
;;;428 rINTMSK &= ~(BIT_IrDA_MSTICK); // Unmask IrDA pending bit
00070c e1a00001 MOV r0,r1
000710 e5900008 LDR r0,[r0,#8]
000714 e3c00540 BIC r0,r0,#0x10000000
000718 e5810008 STR r0,[r1,#8]
;;;429
;;;430 IrDA_RXBUFFER=(unsigned char *)MemoryRx;
00071c e59f01c8 LDR r0,|L1.2284|
000720 e51f1328 LDR r1,|L1.1024|
000724 e5810000 STR r0,[r1,#0] ; IrDA_RXBUFFER
;;;431 for(i=0;i<=IrDA_RxBUFLEN;i++)
000728 e3a04000 MOV r4,#0
|L1.1836|
00072c e3540010 CMP r4,#0x10
000730 ca00000a BGT |L1.1888|
000734 ea000001 B |L1.1856|
|L1.1848|
000738 e2844001 ADD r4,r4,#1
00073c eafffffa B |L1.1836|
;;;432 *IrDA_RXBUFFER++=0;
|L1.1856|
000740 e3a01000 MOV r1,#0
000744 e51f034c LDR r0,|L1.1024|
000748 e5900000 LDR r0,[r0,#0] ; IrDA_RXBUFFER
00074c e5c01000 STRB r1,[r0,#0]
000750 e2800001 ADD r0,r0,#1
000754 e51f135c LDR r1,|L1.1024|
000758 e5810000 STR r0,[r1,#0] ; IrDA_RXBUFFER
00075c eafffff5 B |L1.1848|
;;;433 IrDA_RXBUFFER=(unsigned char *)MemoryRx;
|L1.1888|
000760 e59f0184 LDR r0,|L1.2284|
000764 e51f136c LDR r1,|L1.1024|
000768 e5810000 STR r0,[r1,#0] ; IrDA_RXBUFFER
;;;434 // Initialize RX Data -----------------END
;;;435
;;;436 // Initialize Check Data ----------------START
;;;437 IrDA_CKBUFFER=(unsigned char *)MemoryCk;
00076c e2800d80 ADD r0,r0,#0x2000
000770 e59f1178 LDR r1,|L1.2288|
000774 e5810000 STR r0,[r1,#0] ; IrDA_CKBUFFER
;;;438 for(i=0;i<=IrDA_RxBUFLEN;i++)
000778 e3a04000 MOV r4,#0
|L1.1916|
00077c e3540010 CMP r4,#0x10
000780 ca00000a BGT |L1.1968|
000784 ea000001 B |L1.1936|
|L1.1928|
000788 e2844001 ADD r4,r4,#1
00078c eafffffa B |L1.1916|
;;;439 *IrDA_CKBUFFER++=0;
|L1.1936|
000790 e3a01000 MOV r1,#0
000794 e59f0154 LDR r0,|L1.2288|
000798 e5900000 LDR r0,[r0,#0] ; IrDA_CKBUFFER
00079c e5c01000 STRB r1,[r0,#0]
0007a0 e2800001 ADD r0,r0,#1
0007a4 e59f1144 LDR r1,|L1.2288|
0007a8 e5810000 STR r0,[r1,#0] ; IrDA_CKBUFFER
0007ac eafffff5 B |L1.1928|
;;;440 IrDA_CKBUFFER=(unsigned char *)MemoryCk;
|L1.1968|
0007b0 e59f013c LDR r0,|L1.2292|
0007b4 e59f1134 LDR r1,|L1.2288|
0007b8 e5810000 STR r0,[r1,#0] ; IrDA_CKBUFFER
;;;441 // Initialize Check Data -----------------END
;;;442
;;;443 IrDA_RxCount = 0;
0007bc e3a00000 MOV r0,#0
0007c0 e51f13c0 LDR r1,|L1.1032|
0007c4 e5810000 STR r0,[r1,#0] ; IrDA_RxCount
;;;444 IrDA_RxWrPnt = 0;
0007c8 e3a00000 MOV r0,#0
0007cc e51f13d0 LDR r1,|L1.1028|
0007d0 e5810000 STR r0,[r1,#0] ; IrDA_RxWrPnt
;;;445 IrDA_RxRdPnt = 0;
0007d4 e3a00000 MOV r0,#0
0007d8 e59f1118 LDR r1,|L1.2296|
0007dc e5810000 STR r0,[r1,#0] ; IrDA_RxRdPnt
;;;446 IrDA_DONE = 1;
0007e0 e3a00001 MOV r0,#1
0007e4 e51f13e0 LDR r1,|L1.1036|
0007e8 e5810000 STR r0,[r1,#0] ; IrDA_DONE
;;;447
;;;448 rIrDA_CNT |=(1<<6);
0007ec e51f0650 LDR r0,|L1.420|
0007f0 e5900000 LDR r0,[r0,#0]
0007f4 e3800040 ORR r0,r0,#0x40
0007f8 e51f165c LDR r1,|L1.420|
0007fc e5810000 STR r0,[r1,#0]
;;;449 rIrDA_IER = (1<<7)|(1<<6)|(1<<3)|(1<<0);// LastByteToRx, Err Indication, RxOverRun, Rx Threshold
000800 e3a000c9 MOV r0,#0xc9
000804 e1c11000 BIC r1,r1,r0
000808 e581000c STR r0,[r1,#0xc]
;;;450 rIrDA_CNF = (1); // Enable Interrupt
00080c e3a00001 MOV r0,#1
000810 e1c11000 BIC r1,r1,r0
000814 e5810008 STR r0,[r1,#8]
;;;451
;;;452 Uart_Printf("IrDA_FCR = %x\n", (char)rIrDA_FCR);
000818 e1c10000 BIC r0,r1,r0
00081c e5900018 LDR r0,[r0,#0x18]
000820 e20010ff AND r1,r0,#0xff
000824 e28f00d0 ADR r0,|L1.2300|
000828 ebfffffe BL _printf
;;;453
;;;454 while(IrDA_DONE);
00082c e1a00000 NOP
|L1.2096|
000830 e51f042c LDR r0,|L1.1036|
000834 e5900000 LDR r0,[r0,#0] ; IrDA_DONE
000838 e3500000 CMP r0,#0
00083c 1afffffb BNE |L1.2096|
;;;455
;;;456 i = 0;
000840 e3a04000 MOV r4,#0
;;;457 Uart_Printf("\t");
000844 e28f00c0 ADR r0,|L1.2316|
000848 ebfffffe BL _printf
;;;458 while(1)
00084c e1a00000 NOP
|L1.2128|
000850 e1a00000 NOP
;;;459 {
;;;460 if (IrDA_RxWrPnt > IrDA_RxRdPnt) {
000854 e51f0458 LDR r0,|L1.1028|
000858 e5900000 LDR r0,[r0,#0] ; IrDA_RxWrPnt
00085c e59f1094 LDR r1,|L1.2296|
000860 e5911000 LDR r1,[r1,#0] ; IrDA_RxRdPnt
000864 e1500001 CMP r0,r1
000868 da000016 BLE |L1.2248|
;;;461 Uart_Printf("[D:%3d] ",*(IrDA_RXBUFFER+IrDA_RxRdPnt));
00086c e51f0474 LDR r0,|L1.1024|
000870 e5900000 LDR r0,[r0,#0] ; IrDA_RXBUFFER
000874 e59f207c LDR r2,|L1.2296|
000878 e5922000 LDR r2,[r2,#0] ; IrDA_RxRdPnt
00087c e7d00002 LDRB r0,[r0,r2]
000880 e1a01000 MOV r1,r0
000884 e28f0084 ADR r0,|L1.2320|
000888 ebfffffe BL _printf
;;;462 IrDA_RxRdPnt++;
00088c e59f0064 LDR r0,|L1.2296|
000890 e5900000 LDR r0,[r0,#0] ; IrDA_RxRdPnt
000894 e2800001 ADD r0,r0,#1
000898 e59f1058 LDR r1,|L1.2296|
00089c e5810000 STR r0,[r1,#0] ; IrDA_RxRdPnt
;;;463 if(!((i+1)%64)) Uart_Printf("\n");
0008a0 e2840001 ADD r0,r4,#1
0008a4 e310003f TST r0,#0x3f
0008a8 1a000001 BNE |L1.2228|
0008ac e24f0fa0 ADR r0,|L1.1588|
0008b0 ebfffffe BL _printf
;;;464 if(!((i+1)%8)) Uart_Printf("\n\t");
|L1.2228|
0008b4 e2840001 ADD r0,r4,#1
0008b8 e3100007 TST r0,#7
0008bc 1a000001 BNE |L1.2248|
0008c0 e28f0054 ADR r0,|L1.2332|
0008c4 ebfffffe BL _printf
;;;465 }
;;;466 if (Uart_GetKey() == '\r') break;
|L1.2248|
0008c8 ebfffffe BL Uart_GetKey
0008cc e350000d CMP r0,#0xd
0008d0 1a000000 BNE |L1.2264|
0008d4 ea000001 B |L1.2272|
;;;467 i++;
|L1.2264|
0008d8 e2844001 ADD r4,r4,#1
;;;468 }
0008dc eaffffdb B |L1.2128|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -