📄 irda.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\irda.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
IrDA_Test PROC
;;;35 void IrDA_Test(void)
;;;36 {
|L1.0|
000000 e92d4010 STMFD sp!,{r4,lr}
;;;37 int i;
;;;38
;;;39 Uart_Printf("\n====== IrDA Test program start ======\n");
000004 e28f00b4 ADR r0,|L1.192|
000008 ebfffffe BL Uart_Printf
;;;40
;;;41 while(1)
00000c e1a00000 NOP
|L1.16|
000010 e1a00000 NOP
;;;42 {
;;;43 i=0;
000014 e3a04000 MOV r4,#0
;;;44 Uart_Printf("\n\n");
000018 e28f00cc ADR r0,|L1.236|
00001c ebfffffe BL Uart_Printf
;;;45 while(1)
000020 e1a00000 NOP
|L1.36|
000024 e1a00000 NOP
;;;46 { //display menu
;;;47 Uart_Printf("%2d:%s",i,func_irda_test[i][1]);
000028 e59f00c0 LDR r0,|L1.240|
00002c e0800184 ADD r0,r0,r4,LSL #3
000030 e1a01004 MOV r1,r4
000034 e5902004 LDR r2,[r0,#4]
000038 e28f00b4 ADR r0,|L1.244|
00003c ebfffffe BL Uart_Printf
;;;48 i++;
000040 e2844001 ADD r4,r4,#1
;;;49 if((int)(func_irda_test[i][0])==0)
000044 e59f00a4 LDR r0,|L1.240|
000048 e7900184 LDR r0,[r0,r4,LSL #3]
00004c e3500000 CMP r0,#0
000050 1a000002 BNE |L1.96|
;;;50 {
;;;51 Uart_Printf("\n");
000054 e28f00a0 ADR r0,|L1.252|
000058 ebfffffe BL Uart_Printf
;;;52 break;
00005c ea000004 B |L1.116|
;;;53 }
;;;54 if((i%4)==0)
|L1.96|
000060 e3140003 TST r4,#3
000064 1a000001 BNE |L1.112|
;;;55 Uart_Printf("\n");
000068 e28f008c ADR r0,|L1.252|
00006c ebfffffe BL Uart_Printf
;;;56 }
|L1.112|
000070 eaffffeb B |L1.36|
;;;57
;;;58 Uart_Printf("\nPress Enter key to exit : ");
|L1.116|
000074 e28f0084 ADR r0,|L1.256|
000078 ebfffffe BL Uart_Printf
;;;59 i = Uart_GetIntNum();
00007c ebfffffe BL Uart_GetIntNum
000080 e1a04000 MOV r4,r0
;;;60 if(i==-1) break; // return.
000084 e3740001 CMN r4,#1
000088 1a000000 BNE |L1.144|
00008c ea000008 B |L1.180|
;;;61 if(i>=0 && (i<((sizeof(func_irda_test)-1)/8)) ) // select and execute...
|L1.144|
000090 e3540000 CMP r4,#0
000094 ba000005 BLT |L1.176|
000098 e3540002 CMP r4,#2
00009c 2a000003 BCS |L1.176|
;;;62 ( (void (*)(void)) (func_irda_test[i][0]) )();
0000a0 e59f1048 LDR r1,|L1.240|
0000a4 e7910184 LDR r0,[r1,r4,LSL #3]
0000a8 e1a0e00f MOV lr,pc
0000ac e1a0f000 MOV pc,r0
;;;63 }
|L1.176|
0000b0 eaffffd6 B |L1.16|
;;;64
;;;65 Uart_Printf("\n====== IrDA Test program end ======\n");
|L1.180|
0000b4 e28f0060 ADR r0,|L1.284|
0000b8 ebfffffe BL Uart_Printf
;;;66 }
0000bc e8bd8010 LDMFD sp!,{r4,pc}
|L1.192|
0000c0 3d3d3d0a DCB "\n==="
0000c4 203d3d3d DCB "=== "
0000c8 44724920 DCB " IrD"
0000cc 65542041 DCB "A Te"
0000d0 70207473 DCB "st p"
0000d4 72676f72 DCB "rogr"
0000d8 73206d61 DCB "am s"
0000dc 74726174 DCB "tart"
0000e0 3d3d3d20 DCB " ==="
0000e4 0a3d3d3d DCB "===\n"
0000e8 00000000 DCB "\0\0\0\0"
|L1.236|
0000ec 00000a0a DCB "\n\n\0\0"
|L1.240|
0000f0 00000000 DCD func_irda_test
|L1.244|
0000f4 3a643225 DCB "%2d:"
0000f8 00007325 DCB "%s\0\0"
|L1.252|
0000fc 0000000a DCB "\n\0\0\0"
|L1.256|
000100 6572500a DCB "\nPre"
000104 45207373 DCB "ss E"
000108 7265746e DCB "nter"
00010c 79656b20 DCB " key"
000110 206f7420 DCB " to "
000114 74697865 DCB "exit"
000118 00203a20 DCB " : \0"
|L1.284|
00011c 3d3d3d0a DCB "\n==="
000120 203d3d3d DCB "=== "
000124 41447249 DCB "IrDA"
000128 73655420 DCB " Tes"
00012c 72702074 DCB "t pr"
000130 6172676f DCB "ogra"
000134 6e65206d DCB "m en"
000138 3d3d2064 DCB "d =="
00013c 3d3d3d3d DCB "===="
000140 0000000a DCB "\n\0\0\0"
ENDP
IrDA_Port_Set PROC
;;;71 void IrDA_Port_Set(void)
;;;72 {
000144 e3a00456 MOV r0,#0x56000000
;;;73 //Push UART GPIO port configuration
;;;74 sirda_rGPBCON=rGPBCON;
000148 e5900010 LDR r0,[r0,#0x10]
00014c e59f1304 LDR r1,|L1.1112|
000150 e5810000 STR r0,[r1,#0] ; sirda_rGPBCON
;;;75 sirda_rGPBDAT=rGPBDAT;
000154 e3a00456 MOV r0,#0x56000000
000158 e5900014 LDR r0,[r0,#0x14]
00015c e59f12f8 LDR r1,|L1.1116|
000160 e5810000 STR r0,[r1,#0] ; sirda_rGPBDAT
;;;76 sirda_rGPBUP=rGPBUP;
000164 e3a00456 MOV r0,#0x56000000
000168 e5900018 LDR r0,[r0,#0x18]
00016c e59f12ec LDR r1,|L1.1120|
000170 e5810000 STR r0,[r1,#0] ; sirda_rGPBUP
;;;77 sirda_rGPHCON=rGPHCON;
000174 e3a00456 MOV r0,#0x56000000
000178 e5900070 LDR r0,[r0,#0x70]
00017c e59f12e0 LDR r1,|L1.1124|
000180 e5810000 STR r0,[r1,#0] ; sirda_rGPHCON
;;;78 sirda_rGPHDAT=rGPHDAT;
000184 e3a00456 MOV r0,#0x56000000
000188 e5900074 LDR r0,[r0,#0x74]
00018c e59f12d4 LDR r1,|L1.1128|
000190 e5810000 STR r0,[r1,#0] ; sirda_rGPHDAT
;;;79 sirda_rGPHUP=rGPHUP;
000194 e3a00456 MOV r0,#0x56000000
000198 e5900078 LDR r0,[r0,#0x78]
00019c e59f12c8 LDR r1,|L1.1132|
0001a0 e5810000 STR r0,[r1,#0] ; sirda_rGPHUP
;;;80 //Configure IrDA port
;;;81 rGPBDAT|=(1<<1);
0001a4 e3a00456 MOV r0,#0x56000000
0001a8 e5900014 LDR r0,[r0,#0x14]
0001ac e3800002 ORR r0,r0,#2
0001b0 e3a01456 MOV r1,#0x56000000
0001b4 e5810014 STR r0,[r1,#0x14]
;;;82 rGPBCON&=0x3ffff3;
0001b8 e3a00456 MOV r0,#0x56000000
0001bc e5900010 LDR r0,[r0,#0x10]
0001c0 e3c002cc BIC r0,r0,#0xc000000c
0001c4 e3c005ff BIC r0,r0,#0x3fc00000
0001c8 e3a01456 MOV r1,#0x56000000
0001cc e5810010 STR r0,[r1,#0x10]
;;;83 rGPBCON|=(1<<2); // Output(nIrDATXDEN)
0001d0 e3a00456 MOV r0,#0x56000000
0001d4 e5900010 LDR r0,[r0,#0x10]
0001d8 e3800004 ORR r0,r0,#4
0001dc e3a01456 MOV r1,#0x56000000
0001e0 e5810010 STR r0,[r1,#0x10]
;;;84 rGPBUP|=(1<<1); //Uart port pull-up disable
0001e4 e3a00456 MOV r0,#0x56000000
0001e8 e5900018 LDR r0,[r0,#0x18]
0001ec e3800002 ORR r0,r0,#2
0001f0 e3a01456 MOV r1,#0x56000000
0001f4 e5810018 STR r0,[r1,#0x18]
;;;85 rGPHCON&=0x3c0fff;
0001f8 e3a00456 MOV r0,#0x56000000
0001fc e5900070 LDR r0,[r0,#0x70]
000200 e59f1268 LDR r1,|L1.1136|
000204 e0000001 AND r0,r0,r1
000208 e3a01456 MOV r1,#0x56000000
00020c e5810070 STR r0,[r1,#0x70]
;;;86 rGPHCON|=0x2a000; // TXD2,RXD2
000210 e3a00456 MOV r0,#0x56000000
000214 e5900070 LDR r0,[r0,#0x70]
000218 e3800ba8 ORR r0,r0,#0x2a000
00021c e3a01456 MOV r1,#0x56000000
000220 e5810070 STR r0,[r1,#0x70]
;;;87 rGPHUP|=0x1c0; //Uart port pull-up disable
000224 e3a00456 MOV r0,#0x56000000
000228 e5900078 LDR r0,[r0,#0x78]
00022c e3800f70 ORR r0,r0,#0x1c0
000230 e3a01456 MOV r1,#0x56000000
000234 e5810078 STR r0,[r1,#0x78]
;;;88 //Push Uart control registers
;;;89 sirda_ULCON2=rULCON2;
000238 e59f0234 LDR r0,|L1.1140|
00023c e5900000 LDR r0,[r0,#0]
000240 e59f1230 LDR r1,|L1.1144|
000244 e5810000 STR r0,[r1,#0] ; sirda_ULCON2
;;;90 sirda_UCON2 =rUCON2;
000248 e59f0224 LDR r0,|L1.1140|
00024c e5900004 LDR r0,[r0,#4]
000250 e59f1224 LDR r1,|L1.1148|
000254 e5810000 STR r0,[r1,#0] ; sirda_UCON2
;;;91 sirda_UFCON2=rUFCON2;
000258 e59f0214 LDR r0,|L1.1140|
00025c e5900008 LDR r0,[r0,#8]
000260 e59f1218 LDR r1,|L1.1152|
000264 e5810000 STR r0,[r1,#0] ; sirda_UFCON2
;;;92 sirda_UMCON2=rUMCON2;
000268 e59f0204 LDR r0,|L1.1140|
00026c e590000c LDR r0,[r0,#0xc]
000270 e59f120c LDR r1,|L1.1156|
000274 e5810000 STR r0,[r1,#0] ; sirda_UMCON2
;;;93 sirda_UBRDIV2=rUBRDIV2;
000278 e59f01f4 LDR r0,|L1.1140|
00027c e5900028 LDR r0,[r0,#0x28]
000280 e59f1200 LDR r1,|L1.1160|
000284 e5810000 STR r0,[r1,#0] ; sirda_UBRDIV2
;;;94 }
000288 e1a0f00e MOV pc,lr
ENDP
IrDA_Port_Return PROC
;;;96 void IrDA_Port_Return(void)
;;;97 {
00028c e59f01c4 LDR r0,|L1.1112|
;;;98 //Pop UART GPIO port configuration
;;;99 rGPBCON=sirda_rGPBCON;
000290 e5900000 LDR r0,[r0,#0] ; sirda_rGPBCON
000294 e3a01456 MOV r1,#0x56000000
000298 e5810010 STR r0,[r1,#0x10]
;;;100 rGPBDAT=sirda_rGPBDAT;
00029c e59f01b8 LDR r0,|L1.1116|
0002a0 e5900000 LDR r0,[r0,#0] ; sirda_rGPBDAT
0002a4 e3a01456 MOV r1,#0x56000000
0002a8 e5810014 STR r0,[r1,#0x14]
;;;101 rGPBUP =sirda_rGPBUP;
0002ac e59f01ac LDR r0,|L1.1120|
0002b0 e5900000 LDR r0,[r0,#0] ; sirda_rGPBUP
0002b4 e3a01456 MOV r1,#0x56000000
0002b8 e5810018 STR r0,[r1,#0x18]
;;;102 rGPHCON=sirda_rGPHCON;
0002bc e59f01a0 LDR r0,|L1.1124|
0002c0 e5900000 LDR r0,[r0,#0] ; sirda_rGPHCON
0002c4 e3a01456 MOV r1,#0x56000000
0002c8 e5810070 STR r0,[r1,#0x70]
;;;103 rGPHDAT=sirda_rGPHDAT;
0002cc e59f0194 LDR r0,|L1.1128|
0002d0 e5900000 LDR r0,[r0,#0] ; sirda_rGPHDAT
0002d4 e3a01456 MOV r1,#0x56000000
0002d8 e5810074 STR r0,[r1,#0x74]
;;;104 rGPHUP =sirda_rGPHUP;
0002dc e59f0188 LDR r0,|L1.1132|
0002e0 e5900000 LDR r0,[r0,#0] ; sirda_rGPHUP
0002e4 e3a01456 MOV r1,#0x56000000
0002e8 e5810078 STR r0,[r1,#0x78]
;;;105 //Pop Uart control registers
;;;106 rULCON2=sirda_ULCON2;
0002ec e59f0184 LDR r0,|L1.1144|
0002f0 e5900000 LDR r0,[r0,#0] ; sirda_ULCON2
0002f4 e59f1178 LDR r1,|L1.1140|
0002f8 e5810000 STR r0,[r1,#0]
;;;107 rUCON2 =sirda_UCON2;
0002fc e59f0178 LDR r0,|L1.1148|
000300 e5900000 LDR r0,[r0,#0] ; sirda_UCON2
000304 e5810004 STR r0,[r1,#4]
;;;108 rUFCON2=sirda_UFCON2;
000308 e59f0170 LDR r0,|L1.1152|
00030c e5900000 LDR r0,[r0,#0] ; sirda_UFCON2
000310 e5810008 STR r0,[r1,#8]
;;;109 rUMCON2=sirda_UMCON2;
000314 e59f0168 LDR r0,|L1.1156|
000318 e5900000 LDR r0,[r0,#0] ; sirda_UMCON2
00031c e581000c STR r0,[r1,#0xc]
;;;110 rUBRDIV2=sirda_UBRDIV2;
000320 e59f0160 LDR r0,|L1.1160|
000324 e5900000 LDR r0,[r0,#0] ; sirda_UBRDIV2
000328 e5810028 STR r0,[r1,#0x28]
;;;111 }
00032c e1a0f00e MOV pc,lr
ENDP
IrDA_TxInt PROC
;;;113 void __irq IrDA_TxInt(void)
;;;114 {
000330 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;115 rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
000334 e3a0044a MOV r0,#0x4a000000
000338 e590001c LDR r0,[r0,#0x1c]
00033c e3800f70 ORR r0,r0,#0x1c0
000340 e3a0144a MOV r1,#0x4a000000
000344 e581001c STR r0,[r1,#0x1c]
;;;116 if(IrDA_cnt < (IrDA_BUFLEN))
000348 e59f013c LDR r0,|L1.1164|
00034c e5900000 LDR r0,[r0,#0] ; IrDA_cnt
000350 e3500f40 CMP r0,#0x100
000354 2a000023 BCS |L1.1000|
;;;117 {
;;;118 Uart_Printf("%d,",*IrDAdataPt);
000358 e59f0130 LDR r0,|L1.1168|
00035c e5900000 LDR r0,[r0,#0] ; IrDAdataPt
000360 e5d00000 LDRB r0,[r0,#0]
000364 e1a01000 MOV r1,r0
000368 e28f0f49 ADR r0,|L1.1172|
00036c ebfffffe BL Uart_Printf
;;;119 WrUTXH2(*IrDAdataPt++);
000370 e59f0118 LDR r0,|L1.1168|
000374 e5901000 LDR r1,[r0,#0] ; IrDAdataPt
000378 e5d10000 LDRB r0,[r1,#0]
00037c e2811001 ADD r1,r1,#1
000380 e59f2108 LDR r2,|L1.1168|
000384 e5821000 STR r1,[r2,#0] ; IrDAdataPt
000388 e59f10e4 LDR r1,|L1.1140|
00038c e5c10020 STRB r0,[r1,#0x20]
;;;120 IrDA_cnt++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -