📄 2410lib.txt
字号:
000858 e3a00000 MOV r0,#0
00085c e5c40000 STRB r0,[r4,#0]
;;;322 uart_sendbyte('\n');
000860 e3a0000a MOV r0,#0xa
000864 ebfffffe BL uart_sendbyte
;;;323 }
000868 e8bd4070 POP {r4-r6,lr}
00086c e12fff1e BX lr
ENDP
uart_getintnum PROC
;;;335 int uart_getintnum(void)
;;;336 {
000870 e92d43f0 PUSH {r4-r9,lr}
000874 e24dd024 SUB sp,sp,#0x24
;;;337 char str[30];
;;;338 char *pString = str;
000878 e28d4004 ADD r4,sp,#4
;;;339 int base = 10;
00087c e3a0500a MOV r5,#0xa
;;;340 int minus = 0;
000880 e3a06000 MOV r6,#0
;;;341 int nResult = 0;
000884 e3a07000 MOV r7,#0
;;;342 int lastIndex;
;;;343 int i;
;;;344
;;;345 uart_getstring(pString);
000888 e1a00004 MOV r0,r4
00088c ebfffffe BL uart_getstring
;;;346
;;;347 if(pString[0]=='-')
000890 e5d40000 LDRB r0,[r4,#0]
000894 e350002d CMP r0,#0x2d
000898 1a000001 BNE |L1.2212|
;;;348 {
;;;349 minus = 1;
00089c e3a06001 MOV r6,#1
;;;350 pString++;
0008a0 e2844001 ADD r4,r4,#1
|L1.2212|
;;;351 }
;;;352
;;;353 if(pString[0]=='0' && (pString[1]=='x' || pString[1]=='X'))
0008a4 e5d40000 LDRB r0,[r4,#0]
0008a8 e3500030 CMP r0,#0x30
0008ac 1a000007 BNE |L1.2256|
0008b0 e5d40001 LDRB r0,[r4,#1]
0008b4 e3500078 CMP r0,#0x78
0008b8 0a000002 BEQ |L1.2248|
0008bc e5d40001 LDRB r0,[r4,#1]
0008c0 e3500058 CMP r0,#0x58
0008c4 1a000001 BNE |L1.2256|
|L1.2248|
;;;354 {
;;;355 base = 16;
0008c8 e3a05010 MOV r5,#0x10
;;;356 pString += 2;
0008cc e2844002 ADD r4,r4,#2
|L1.2256|
;;;357 }
;;;358
;;;359 lastIndex = strlen(pString) - 1;
0008d0 e1a00004 MOV r0,r4
0008d4 ebfffffe BL strlen
0008d8 e2408001 SUB r8,r0,#1
;;;360
;;;361 if(lastIndex<0)
0008dc e3580000 CMP r8,#0
0008e0 aa000003 BGE |L1.2292|
;;;362 return -1;
0008e4 e3e00000 MVN r0,#0
|L1.2280|
0008e8 e28dd024 ADD sp,sp,#0x24
0008ec e8bd43f0 POP {r4-r9,lr}
;;;363
;;;364 if(pString[lastIndex]=='h' || pString[lastIndex]=='H' )
;;;365 {
;;;366 base = 16;
;;;367 pString[lastIndex] = 0;
;;;368 lastIndex--;
;;;369 }
;;;370
;;;371 if(base==10)
;;;372 {
;;;373 nResult = atoi(pString);
;;;374 nResult = minus ? (-1*nResult):nResult;
;;;375 }
;;;376 else
;;;377 {
;;;378 for(i=0;i<=lastIndex;i++)
;;;379 {
;;;380 if(isalpha(pString[i]))
;;;381 {
;;;382 if(isupper(pString[i]))
;;;383 nResult = (nResult<<4) + pString[i] - 'A' + 10;
;;;384 else
;;;385 nResult = (nResult<<4) + pString[i] - 'a' + 10;
;;;386 }
;;;387 else
;;;388 nResult = (nResult<<4) + pString[i] - '0';
;;;389 }
;;;390 nResult = minus ? (-1*nResult):nResult;
;;;391 }
;;;392 return nResult;
;;;393 }
0008f0 e12fff1e BX lr
|L1.2292|
0008f4 e7d40008 LDRB r0,[r4,r8]
0008f8 e3500068 CMP r0,#0x68
0008fc 0a000002 BEQ |L1.2316|
000900 e7d40008 LDRB r0,[r4,r8]
000904 e3500048 CMP r0,#0x48
000908 1a000003 BNE |L1.2332|
|L1.2316|
00090c e3a05010 MOV r5,#0x10
000910 e3a00000 MOV r0,#0
000914 e7c40008 STRB r0,[r4,r8]
000918 e2488001 SUB r8,r8,#1
|L1.2332|
00091c e355000a CMP r5,#0xa
000920 1a000009 BNE |L1.2380|
000924 e1a00004 MOV r0,r4
000928 ebfffffe BL atoi
00092c e1a07000 MOV r7,r0
000930 e3560000 CMP r6,#0
000934 0a000001 BEQ |L1.2368|
000938 e2670000 RSB r0,r7,#0
00093c ea000000 B |L1.2372|
|L1.2368|
000940 e1a00007 MOV r0,r7
|L1.2372|
000944 e1a07000 MOV r7,r0
000948 ea000021 B |L1.2516|
|L1.2380|
00094c e3a09000 MOV r9,#0
000950 ea000017 B |L1.2484|
|L1.2388|
000954 ebfffffe BL __rt_ctype_table
000958 e5900000 LDR r0,[r0,#0]
00095c e7d41009 LDRB r1,[r4,r9]
000960 e7d00001 LDRB r0,[r0,r1]
000964 e3100098 TST r0,#0x98
000968 0a00000d BEQ |L1.2468|
00096c ebfffffe BL __rt_ctype_table
000970 e5900000 LDR r0,[r0,#0]
000974 e7d41009 LDRB r1,[r4,r9]
000978 e7d00001 LDRB r0,[r0,r1]
00097c e3100010 TST r0,#0x10
000980 0a000003 BEQ |L1.2452|
000984 e7d40009 LDRB r0,[r4,r9]
000988 e0800207 ADD r0,r0,r7,LSL #4
00098c e2407037 SUB r7,r0,#0x37
000990 ea000006 B |L1.2480|
|L1.2452|
000994 e7d40009 LDRB r0,[r4,r9]
000998 e0800207 ADD r0,r0,r7,LSL #4
00099c e2407057 SUB r7,r0,#0x57
0009a0 ea000002 B |L1.2480|
|L1.2468|
0009a4 e7d40009 LDRB r0,[r4,r9]
0009a8 e0800207 ADD r0,r0,r7,LSL #4
0009ac e2407030 SUB r7,r0,#0x30
|L1.2480|
0009b0 e2899001 ADD r9,r9,#1
|L1.2484|
0009b4 e1590008 CMP r9,r8
0009b8 daffffe5 BLE |L1.2388|
0009bc e3560000 CMP r6,#0
0009c0 0a000001 BEQ |L1.2508|
0009c4 e2670000 RSB r0,r7,#0
0009c8 ea000000 B |L1.2512|
|L1.2508|
0009cc e1a00007 MOV r0,r7
|L1.2512|
0009d0 e1a07000 MOV r7,r0
|L1.2516|
0009d4 e1a00007 MOV r0,r7
0009d8 eaffffc2 B |L1.2280|
ENDP
beep PROC
;;;478 {
;;;479 if (nBeepStatus==0)
0009dc e3500000 CMP r0,#0
0009e0 1a000005 BNE |L1.2556|
;;;480 rGPBDAT |= 0x1;
0009e4 e3a01456 MOV r1,#0x56000000
0009e8 e5911014 LDR r1,[r1,#0x14]
0009ec e3811001 ORR r1,r1,#1
0009f0 e3a02456 MOV r2,#0x56000000
0009f4 e5821014 STR r1,[r2,#0x14]
0009f8 ea000005 B |L1.2580|
|L1.2556|
;;;481 else
;;;482 rGPBDAT &= 0x7fe;
0009fc e3a01456 MOV r1,#0x56000000
000a00 e5911014 LDR r1,[r1,#0x14]
000a04 e59f2014 LDR r2,|L1.2592|
000a08 e0011002 AND r1,r1,r2
000a0c e3a02456 MOV r2,#0x56000000
000a10 e5821014 STR r1,[r2,#0x14]
|L1.2580|
;;;483
;;;484 }
000a14 e12fff1e BX lr
|L1.2584|
000a18 00000000 DCD f_nWhichUart
|L1.2588|
000a1c 08200800 DCB "\b\40\b\0"
|L1.2592|
000a20 000007fe DCD 0x000007fe
ENDP
timer_start PROC
;;;494 {
;;;495 rWTCON = ((PCLK/1000000-1)<<8)|(divider<<3); //Watch-dog timer control register
000a24 e3a01c31 MOV r1,#0x3100
000a28 e1811180 ORR r1,r1,r0,LSL #3
000a2c e3a02453 MOV r2,#0x53000000
000a30 e5821000 STR r1,[r2,#0]
;;;496 rWTDAT = 0xffff; //Watch-dog timer data register
000a34 e51f1680 LDR r1,|L1.956|
000a38 e5821004 STR r1,[r2,#4]
;;;497 rWTCNT = 0xffff; //Watch-dog count register
000a3c e5821008 STR r1,[r2,#8]
;;;498
;;;499 //Watch-dog timer enable & interrupt disable
;;;500 // rWTCON = rWTCON |(1<<5) & !(1<<2); //?
;;;501 rWTCON = rWTCON | (1<<5) | ~(1<<2); //May 06, 2002 SOP
000a40 e3a01453 MOV r1,#0x53000000
000a44 e5911000 LDR r1,[r1,#0]
000a48 e3811020 ORR r1,r1,#0x20
000a4c e3e02004 MVN r2,#4
000a50 e1811002 ORR r1,r1,r2
000a54 e3a02453 MOV r2,#0x53000000
000a58 e5821000 STR r1,[r2,#0]
;;;502 }
000a5c e12fff1e BX lr
ENDP
timer_stop PROC
;;;513 {
;;;514 rWTCON = ((PCLK/1000000-1)<<8);
000a60 e3a00c31 MOV r0,#0x3100
000a64 e3a01453 MOV r1,#0x53000000
000a68 e5810000 STR r0,[r1,#0]
;;;515 return (0xffff - rWTCNT);
000a6c e3a00453 MOV r0,#0x53000000
000a70 e5900008 LDR r0,[r0,#8]
000a74 e51f16c0 LDR r1,|L1.956|
000a78 e0410000 SUB r0,r1,r0
;;;516 }
000a7c e12fff1e BX lr
ENDP
change_value_MPLL PROC
;;;521 {
;;;522 rMPLLCON = (nMdiv<<12) | (nPdiv<<4) | nSdiv;
000a80 e1a03600 LSL r3,r0,#12
000a84 e1833201 ORR r3,r3,r1,LSL #4
000a88 e1833002 ORR r3,r3,r2
000a8c e3a0c313 MOV r12,#0x4c000000
000a90 e58c3004 STR r3,[r12,#4]
;;;523 }
000a94 e12fff1e BX lr
ENDP
change_clock_divider PROC
;;;533 // 1,1 1:2:4
;;;534 rCLKDIVN = (nHdiv<<1) | nPdiv;
000a98 e1812080 ORR r2,r1,r0,LSL #1
000a9c e3a03313 MOV r3,#0x4c000000
000aa0 e5832014 STR r2,[r3,#0x14]
;;;535
;;;536 // if(nHdiv)
;;;537 // MMU_SetAsyncBusMode();
;;;538 // else
;;;539 // MMU_SetFastBusMode();
;;;540 }
000aa4 e12fff1e BX lr
ENDP
ChangeUPllValue PROC
;;;545 {
;;;546 rUPLLCON = (nMdiv<<12) | (nPdiv<<4) | nSdiv;
000aa8 e1a03600 LSL r3,r0,#12
000aac e1833201 ORR r3,r3,r1,LSL #4
000ab0 e1833002 ORR r3,r3,r2
000ab4 e3a0c313 MOV r12,#0x4c000000
000ab8 e58c3008 STR r3,[r12,#8]
;;;547 }
000abc e12fff1e BX lr
ENDP
__gccmain PROC
;;;618 {
;;;619 }
000ac0 e12fff1e BX lr
ENDP
AREA ||.data||, DATA, ALIGN=2
delayLoopCount
000000 000007ec DCD 0x000007ec
f_nWhichUart
000004 00000000 DCD 0x00000000
||Image$$RW_ZI$$ZI$$Limit||
000008 00 DCB 0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -