📄 irda.txt
字号:
0006f4 e2442031 SUB r0,r4,#0x31
0006f8 e3500004 CMP r0,#4
0006fc 908ff100 ADDLS pc,pc,r0,LSL #2
000700 ea000018 B |L1.1896|
000704 ea000003 B |L1.1816|
000708 ea000006 B |L1.1832|
00070c ea000009 B |L1.1848|
000710 ea00000c B |L1.1864|
000714 ea00000f B |L1.1880|
;;;196 {
;;;197 case '1':
;;;198 IrDA_BAUD=9600;
|L1.1816|
000718 e3a00d96 MOV r0,#0x2580
00071c e59f11e0 LDR r1,|L1.2308|
000720 e5810000 STR r0,[r1,#0] ; IrDA_BAUD
;;;199 break;
000724 ea000010 B |L1.1900|
;;;200
;;;201 case '2':
;;;202 IrDA_BAUD=19200;
|L1.1832|
000728 e3a00c4b MOV r0,#0x4b00
00072c e59f11d0 LDR r1,|L1.2308|
000730 e5810000 STR r0,[r1,#0] ; IrDA_BAUD
;;;203 break;
000734 ea00000c B |L1.1900|
;;;204
;;;205 case '3':
;;;206 IrDA_BAUD=38400;
|L1.1848|
000738 e3a00c96 MOV r0,#0x9600
00073c e59f11c0 LDR r1,|L1.2308|
000740 e5810000 STR r0,[r1,#0] ; IrDA_BAUD
;;;207 break;
000744 ea000008 B |L1.1900|
;;;208
;;;209 case '4':
;;;210 IrDA_BAUD=57600;
|L1.1864|
000748 e3a00ce1 MOV r0,#0xe100
00074c e59f11b0 LDR r1,|L1.2308|
000750 e5810000 STR r0,[r1,#0] ; IrDA_BAUD
;;;211 break;
000754 ea000004 B |L1.1900|
;;;212
;;;213 case '5':
;;;214 IrDA_BAUD=115200;
|L1.1880|
000758 e59f01a8 LDR r0,|L1.2312|
00075c e59f11a0 LDR r1,|L1.2308|
000760 e5810000 STR r0,[r1,#0] ; IrDA_BAUD
;;;215 break;
000764 ea000000 B |L1.1900|
;;;216
;;;217 default:
;;;218 break;
|L1.1896|
000768 e1a00000 NOP
;;;219 }
;;;220 rUBRDIV2=( (int)(PCLK/16./IrDA_BAUD) -1 );
|L1.1900|
00076c e59f0190 LDR r0,|L1.2308|
000770 e5900000 LDR r0,[r0,#0] ; IrDA_BAUD
000774 ebfffffe BL _dfltu
000778 e88d0003 STMIA sp,{r0,r1}
00077c e28f0f62 ADR r0,|L1.2316|
000780 e890000c LDMIA r0,{r2,r3}
000784 e59d0000 LDR r0,[sp,#0]
000788 ebfffffe BL _drdiv
00078c e58d0008 STR r0,[sp,#8]
000790 e58d100c STR r1,[sp,#0xc]
000794 ebfffffe BL _dfix
000798 e2400001 SUB r0,r0,#1
00079c e51f1330 LDR r1,|L1.1140|
0007a0 e5810028 STR r0,[r1,#0x28]
;;;221 Uart_Printf("rUBRDIV2=%d\n", rUBRDIV2);
0007a4 e1a00001 MOV r0,r1
0007a8 e5900028 LDR r0,[r0,#0x28]
0007ac e1a01000 MOV r1,r0
0007b0 e28f0f57 ADR r0,|L1.2324|
0007b4 ebfffffe BL Uart_Printf
;;;222 Uart_Printf("[UART IrDA Tx Test]\n");
0007b8 e28f0f59 ADR r0,|L1.2340|
0007bc ebfffffe BL Uart_Printf
;;;223 Uart_Printf("This test should be configured two boards.\n");
0007c0 e28f0f5d ADR r0,|L1.2364|
0007c4 ebfffffe BL Uart_Printf
;;;224 Uart_Printf("Start Rx first and press any key and...\n");
0007c8 e28f0f66 ADR r0,|L1.2408|
0007cc ebfffffe BL Uart_Printf
;;;225 Uart_TxEmpty(1);
0007d0 e3a00001 MOV r0,#1
0007d4 ebfffffe BL Uart_TxEmpty
;;;226 rGPBDAT &= ~(1<<1); // Enable nIrDATXDEN - GPB1
0007d8 e3a00456 MOV r0,#0x56000000
0007dc e5900014 LDR r0,[r0,#0x14]
0007e0 e3c00002 BIC r0,r0,#2
0007e4 e3a01456 MOV r1,#0x56000000
0007e8 e5810014 STR r0,[r1,#0x14]
;;;227 rUFCON2=(1<<6)|(0<<4)|(1<<2)|(1<<1)|(1);
0007ec e3a00047 MOV r0,#0x47
0007f0 e51f1384 LDR r1,|L1.1140|
0007f4 e5810008 STR r0,[r1,#8]
;;;228 //Tx and Rx FIFO Trigger Level:4byte,Tx and Rx FIFO Reset,FIFO on
;;;229 rUCON2=(0<<10)|(1<<9)|(1<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<2)|(0); // From H/W
0007f8 e3a00fc0 MOV r0,#0x300
0007fc e1c11000 BIC r1,r1,r0
000800 e5810004 STR r0,[r1,#4]
;;;230 rULCON2=(1<<6)|(0<<3)|(0<<2)|(3); // IrDA,No parity,One stop bit, 8bit
000804 e3a00043 MOV r0,#0x43
000808 e1c11000 BIC r1,r1,r0
00080c e5810000 STR r0,[r1,#0]
;;;231 Uart_Getch();
000810 ebfffffe BL Uart_Getch
;;;232 rUCON2 |= (1<<2); // Tx enable
000814 e51f03a8 LDR r0,|L1.1140|
000818 e5900004 LDR r0,[r0,#4]
00081c e3800004 ORR r0,r0,#4
000820 e51f13b4 LDR r1,|L1.1140|
000824 e5810004 STR r0,[r1,#4]
;;;233 Uart_Printf("Now... Tx with IrDA\n");
000828 e28f0f59 ADR r0,|L1.2452|
00082c ebfffffe BL Uart_Printf
;;;234 rINTMSK=~(BIT_UART2);
000830 e3e00c80 MVN r0,#0x8000
000834 e3a0144a MOV r1,#0x4a000000
000838 e5810008 STR r0,[r1,#8]
;;;235 rINTSUBMSK=~(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
00083c e3e00f70 MVN r0,#0x1c0
000840 e3a0144a MOV r1,#0x4a000000
000844 e581001c STR r0,[r1,#0x1c]
;;;236
;;;237 while(!IrDA_end);
000848 e1a00000 NOP
|L1.2124|
00084c e51f03bc LDR r0,|L1.1176|
000850 e5900000 LDR r0,[r0,#0] ; IrDA_end
000854 e3500000 CMP r0,#0
000858 0afffffb BEQ |L1.2124|
;;;238
;;;239 rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
00085c e3a0044a MOV r0,#0x4a000000
000860 e590001c LDR r0,[r0,#0x1c]
000864 e3800f70 ORR r0,r0,#0x1c0
000868 e3a0144a MOV r1,#0x4a000000
00086c e581001c STR r0,[r1,#0x1c]
;;;240 rUFCON2=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);
000870 e3a000e6 MOV r0,#0xe6
000874 e51f1408 LDR r1,|L1.1140|
000878 e5810008 STR r0,[r1,#8]
;;;241 rGPBDAT|=(1<<1); // Disable nIrDATXDEN
00087c e3a00456 MOV r0,#0x56000000
000880 e5900014 LDR r0,[r0,#0x14]
000884 e3800002 ORR r0,r0,#2
000888 e3a01456 MOV r1,#0x56000000
00088c e5810014 STR r0,[r1,#0x14]
;;;242 Uart_Printf("\nEnd Tx, transfer data count=%d\n",IrDA_cnt);
000890 e51f040c LDR r0,|L1.1164|
000894 e5901000 LDR r1,[r0,#0] ; IrDA_cnt
000898 e28f0f43 ADR r0,|L1.2476|
00089c ebfffffe BL Uart_Printf
;;;243 IrDA_Port_Return();
0008a0 ebfffffe BL IrDA_Port_Return
;;;244 }
0008a4 e8bd801f LDMFD sp!,{r0-r4,pc}
|L1.2216|
0008a8 00000004 DCD ||.bss$2|| + 4
|L1.2220|
0008ac 00000000 DCD IrDA_TxInt
|L1.2224|
0008b0 31fff000 DCD 0x31fff000
|L1.2228|
0008b4 6c65530a DCB "\nSel"
0008b8 20746365 DCB "ect "
0008bc 20656874 DCB "the "
0008c0 64756162 DCB "baud"
0008c4 74617220 DCB " rat"
0008c8 00000a65 DCB "e\n\0\0"
|L1.2252|
0008cc 36392931 DCB "1)96"
0008d0 20203030 DCB "00 "
0008d4 29322020 DCB " 2)"
0008d8 30323931 DCB "1920"
0008dc 20202030 DCB "0 "
0008e0 33293320 DCB " 3)3"
0008e4 30303438 DCB "8400"
0008e8 20202020 DCB " "
0008ec 37352934 DCB "4)57"
0008f0 20303036 DCB "600 "
0008f4 35202020 DCB " 5"
0008f8 35313129 DCB ")115"
0008fc 0a303032 DCB "200\n"
000900 00000000 DCB "\0\0\0\0"
|L1.2308|
000904 00000014 DCD ||.bss$2|| + 20
|L1.2312|
000908 0001c200 DCD 0x0001c200
|L1.2316|
00090c 00000000 DCFD 0x41478d4c00000000
000910 41478d4c
|L1.2324|
000914 52425572 DCB "rUBR"
000918 32564944 DCB "DIV2"
00091c 0a64253d DCB "=%d\n"
000920 00000000 DCB "\0\0\0\0"
|L1.2340|
000924 5241555b DCB "[UAR"
000928 72492054 DCB "T Ir"
00092c 54204144 DCB "DA T"
000930 65542078 DCB "x Te"
000934 0a5d7473 DCB "st]\n"
000938 00000000 DCB "\0\0\0\0"
|L1.2364|
00093c 73696854 DCB "This"
000940 73657420 DCB " tes"
000944 68732074 DCB "t sh"
000948 646c756f DCB "ould"
00094c 20656220 DCB " be "
000950 666e6f63 DCB "conf"
000954 72756769 DCB "igur"
000958 74206465 DCB "ed t"
00095c 62206f77 DCB "wo b"
000960 6472616f DCB "oard"
000964 000a2e73 DCB "s.\n\0"
|L1.2408|
000968 72617453 DCB "Star"
00096c 78522074 DCB "t Rx"
000970 72696620 DCB " fir"
000974 61207473 DCB "st a"
000978 7020646e DCB "nd p"
00097c 73736572 DCB "ress"
000980 796e6120 DCB " any"
000984 79656b20 DCB " key"
000988 646e6120 DCB " and"
00098c 0a2e2e2e DCB "...\n"
000990 00000000 DCB "\0\0\0\0"
|L1.2452|
000994 2e776f4e DCB "Now."
000998 54202e2e DCB ".. T"
00099c 69772078 DCB "x wi"
0009a0 49206874 DCB "th I"
0009a4 0a414472 DCB "rDA\n"
0009a8 00000000 DCB "\0\0\0\0"
|L1.2476|
0009ac 646e450a DCB "\nEnd"
0009b0 2c785420 DCB " Tx,"
0009b4 61727420 DCB " tra"
0009b8 6566736e DCB "nsfe"
0009bc 61642072 DCB "r da"
0009c0 63206174 DCB "ta c"
0009c4 746e756f DCB "ount"
0009c8 0a64253d DCB "=%d\n"
0009cc 00000000 DCB "\0\0\0\0"
ENDP
Test_IrDA_Rx PROC
;;;246 void Test_IrDA_Rx(void)
;;;247 {
0009d0 e92d401f STMFD sp!,{r0-r4,lr}
;;;248 unsigned int i;
;;;249 IrDA_cnt=0;
0009d4 e3a00000 MOV r0,#0
0009d8 e51f1554 LDR r1,|L1.1164|
0009dc e5810000 STR r0,[r1,#0] ; IrDA_cnt
;;;250 IrDA_end=0;
0009e0 e3a00000 MOV r0,#0
0009e4 e51f1554 LDR r1,|L1.1176|
0009e8 e5810000 STR r0,[r1,#0] ; IrDA_end
;;;251 IrDA_err=0;
0009ec e3a00000 MOV r0,#0
0009f0 e59f12c8 LDR r1,|L1.3264|
0009f4 e5810000 STR r0,[r1,#0] ; IrDA_err
;;;252
;;;253 IrDAdataPt =(volatile U8 *)IrDABUFFER; // 0 initialize
0009f8 e3a005c4 MOV r0,#0x31000000
0009fc e51f1574 LDR r1,|L1.1168|
000a00 e5810000 STR r0,[r1,#0] ; IrDAdataPt
;;;254 for(i=0;i<IrDA_BUFLEN;i++) *IrDAdataPt++=0; // Initialize IrDA Tx data
000a04 e3a04000 MOV r4,#0
|L1.2568|
000a08 e3540f40 CMP r4,#0x100
000a0c 2a00000a BCS |L1.2620|
000a10 ea000001 B |L1.2588|
|L1.2580|
000a14 e2844001 ADD r4,r4,#1
000a18 eafffffa B |L1.2568|
|L1.2588|
000a1c e3a01000 MOV r1,#0
000a20 e51f0598 LDR r0,|L1.1168|
000a24 e5900000 LDR r0,[r0,#0] ; IrDAdataPt
000a28 e5c01000 STRB r1,[r0,#0]
000a2c e2800001 ADD r0,r0,#1
000a30 e51f15a8 LDR r1,|L1.1168|
000a34 e5810000 STR r0,[r1,#0] ; IrDAdataPt
000a38 eafffff5 B |L1.2580|
;;;255 IrDAdataPt =(volatile U8 *)IrDABUFFER;
|L1.2620|
000a3c e3a005c4 MOV r0,#0x31000000
000a40 e51f15b8 LDR r1,|L1.1168|
000a44 e5810000 STR r0,[r1,#0] ; IrDAdataPt
;;;256
;;;257 IrDA_Port_Set();
000a48 ebfffffe BL IrDA_Port_Set
;;;258 Uart_Select(1);
000a4c e3a00001 MOV r0,#1
000a50 ebfffffe BL Uart_Select
;;;259 pISR_UART2=(unsigned)IrDA_RxOrErr;
000a54 e59f0268 LDR r0,|L1.3268|
000a58 e51f11b0 LDR r1,|L1.2224|
000a5c e5810f5c STR r0,[r1,#0xf5c]
;;;260 Uart_Printf("\nSelect the baud rate\n"); // Select IrDA baud rate
000a60 e24f0f6d ADR r0,|L1.2228|
000a64 ebfffffe BL Uart_Printf
;;;261 Uart_Printf("1)9600 2)19200 3)38400 4)57600 5)115200\n");
000a68 e24f0f69 ADR r0,|L1.2252|
000a6c ebfffffe BL Uart_Printf
;;;262 i=Uart_Getch();
000a70 ebfffffe BL Uart_Getch
000a74 e1a04000 MOV r4,r0
;;;263 switch(i)
000a78 e2442031 SUB r0,r4,#0x31
000a7c e3500004 CMP r0,#4
000a80 908ff100 ADDLS pc,pc,r0,LSL #2
000a84 ea000018 B |L1.2796|
000a88 ea000003 B |L1.2716|
000a8c ea000006 B |L1.2732|
000a90 ea000009 B |L1.2748|
000a94 ea00000c B |L1.2764|
000a98 ea00000f B |L1.2780|
;;;264 {
;;;265 case '1':
;;;266 IrDA_BAUD=9600;
|L1.2716|
000a9c e3a00d96 MOV r0,#0x2580
000aa0 e51f11a4 LDR r1,|L1.2308|
000aa4 e5810000 STR r0,[r1,#0] ; IrDA_BAUD
;;;267 break;
000aa8 ea000010 B |L1.2800|
;;;268
;;;269 case '2':
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -