📄 24a0lib.txt
字号:
|L1.1324|
00052c eaffffef B |L1.1264|
;;;218 *string='\0';
|L1.1328|
000530 e3a00000 MOV r0,#0
000534 e5c40000 STRB r0,[r4,#0]
;;;219 Uart_SendByte('\n');
000538 e3a0000a MOV r0,#0xa
00053c ebfffffe BL Uart_SendByte
;;;220 }
000540 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.1348|
000544 00000000 DCD ||.bss$2||
|L1.1352|
000548 00082008 DCB "\b \b\0"
ENDP
Uart_GetIntNum PROC
;;;223 int Uart_GetIntNum(void)
;;;224 {
00054c e92d43f0 STMFD sp!,{r4-r9,lr}
000550 e24dd024 SUB sp,sp,#0x24
;;;225 char str[30];
;;;226 char *string = str;
000554 e28d4004 ADD r4,sp,#4
;;;227 int base = 10;
000558 e3a0800a MOV r8,#0xa
;;;228 int minus = 0;
00055c e3a09000 MOV r9,#0
;;;229 int result = 0;
000560 e3a05000 MOV r5,#0
;;;230 int lastIndex;
;;;231 int i;
;;;232
;;;233 Uart_GetString(string);
000564 e1a00004 MOV r0,r4
000568 ebfffffe BL Uart_GetString
;;;234
;;;235 if(string[0]=='-') {
00056c e5d40000 LDRB r0,[r4,#0]
000570 e350002d CMP r0,#0x2d
000574 1a000001 BNE |L1.1408|
;;;236 minus = 1;
000578 e3a09001 MOV r9,#1
;;;237 string++;
00057c e2844001 ADD r4,r4,#1
;;;238 }
;;;239
;;;240 if(string[0]=='0' && (string[1]=='x' || string[1]=='X')) {
|L1.1408|
000580 e5d40000 LDRB r0,[r4,#0]
000584 e3500030 CMP r0,#0x30
000588 1a000007 BNE |L1.1452|
00058c e5d40001 LDRB r0,[r4,#1]
000590 e3500078 CMP r0,#0x78
000594 0a000002 BEQ |L1.1444|
000598 e5d40001 LDRB r0,[r4,#1]
00059c e3500058 CMP r0,#0x58
0005a0 1a000001 BNE |L1.1452|
;;;241 base = 16;
|L1.1444|
0005a4 e3a08010 MOV r8,#0x10
;;;242 string += 2;
0005a8 e2844002 ADD r4,r4,#2
;;;243 }
;;;244
;;;245 lastIndex = strlen(string) - 1;
|L1.1452|
0005ac e1a00004 MOV r0,r4
0005b0 ebfffffe BL strlen
0005b4 e2407001 SUB r7,r0,#1
;;;246
;;;247 if(lastIndex<0)
0005b8 e3570000 CMP r7,#0
0005bc aa000002 BGE |L1.1484|
;;;248 return -1;
0005c0 e3e00000 MVN r0,#0
|L1.1476|
0005c4 e28dd024 ADD sp,sp,#0x24
;;;249
;;;250 if(string[lastIndex]=='h' || string[lastIndex]=='H' ) {
;;;251 base = 16;
;;;252 string[lastIndex] = 0;
;;;253 lastIndex--;
;;;254 }
;;;255
;;;256 if(base==10) {
;;;257 result = atoi(string);
;;;258 result = minus ? (-1*result):result;
;;;259 }
;;;260 else {
;;;261 for(i=0;i<=lastIndex;i++) {
;;;262 if(isalpha(string[i])) {
;;;263 if(isupper(string[i]))
;;;264 result = (result<<4) + string[i] - 'A' + 10;
;;;265 else
;;;266 result = (result<<4) + string[i] - 'a' + 10;
;;;267 }
;;;268 else
;;;269 result = (result<<4) + string[i] - '0';
;;;270 }
;;;271 result = minus ? (-1*result):result;
;;;272 }
;;;273 return result;
;;;274 }
0005c8 e8bd83f0 LDMFD sp!,{r4-r9,pc}
|L1.1484|
0005cc e7d40007 LDRB r0,[r4,r7] ;250
0005d0 e3500068 CMP r0,#0x68 ;250
0005d4 0a000002 BEQ |L1.1508| ;250
0005d8 e7d40007 LDRB r0,[r4,r7] ;250
0005dc e3500048 CMP r0,#0x48 ;250
0005e0 1a000003 BNE |L1.1524| ;250
|L1.1508|
0005e4 e3a08010 MOV r8,#0x10 ;251
0005e8 e3a00000 MOV r0,#0 ;252
0005ec e7c40007 STRB r0,[r4,r7] ;252
0005f0 e2477001 SUB r7,r7,#1 ;253
|L1.1524|
0005f4 e358000a CMP r8,#0xa ;256
0005f8 1a000009 BNE |L1.1572| ;256
0005fc e1a00004 MOV r0,r4 ;257
000600 ebfffffe BL atoi ;257
000604 e1a05000 MOV r5,r0 ;257
000608 e3590000 CMP r9,#0 ;258
00060c 0a000001 BEQ |L1.1560| ;258
000610 e2650000 RSB r0,r5,#0 ;258
000614 ea000000 B |L1.1564| ;258
|L1.1560|
000618 e1a00005 MOV r0,r5 ;258
|L1.1564|
00061c e1a05000 MOV r5,r0 ;258
000620 ea000023 B |L1.1716| ;258
|L1.1572|
000624 e3a06000 MOV r6,#0 ;261
|L1.1576|
000628 e1560007 CMP r6,r7 ;261
00062c ca00001a BGT |L1.1692| ;261
000630 ea000001 B |L1.1596| ;261
|L1.1588|
000634 e2866001 ADD r6,r6,#1 ;261
000638 eafffffa B |L1.1576| ;261
|L1.1596|
00063c ebfffffe BL __rt_ctype_table ;262
000640 e5900000 LDR r0,[r0,#0] ;262
000644 e7d41006 LDRB r1,[r4,r6] ;262
000648 e7d00001 LDRB r0,[r0,r1] ;262
00064c e3100018 TST r0,#0x18 ;262
000650 0a00000d BEQ |L1.1676| ;262
000654 ebfffffe BL __rt_ctype_table ;263
000658 e5900000 LDR r0,[r0,#0] ;263
00065c e7d41006 LDRB r1,[r4,r6] ;263
000660 e7d00001 LDRB r0,[r0,r1] ;263
000664 e3100010 TST r0,#0x10 ;263
000668 0a000003 BEQ |L1.1660| ;263
00066c e7d40006 LDRB r0,[r4,r6] ;264
000670 e0800205 ADD r0,r0,r5,LSL #4 ;264
000674 e2405037 SUB r5,r0,#0x37 ;264
000678 ea000006 B |L1.1688| ;264
|L1.1660|
00067c e7d40006 LDRB r0,[r4,r6] ;266
000680 e0800205 ADD r0,r0,r5,LSL #4 ;266
000684 e2405057 SUB r5,r0,#0x57 ;266
000688 ea000002 B |L1.1688| ;266
|L1.1676|
00068c e7d40006 LDRB r0,[r4,r6] ;269
000690 e0800205 ADD r0,r0,r5,LSL #4 ;269
000694 e2405030 SUB r5,r0,#0x30 ;269
|L1.1688|
000698 eaffffe5 B |L1.1588| ;270
|L1.1692|
00069c e3590000 CMP r9,#0 ;271
0006a0 0a000001 BEQ |L1.1708| ;271
0006a4 e2650000 RSB r0,r5,#0 ;271
0006a8 ea000000 B |L1.1712| ;271
|L1.1708|
0006ac e1a00005 MOV r0,r5 ;271
|L1.1712|
0006b0 e1a05000 MOV r5,r0 ;271
|L1.1716|
0006b4 e1a00005 MOV r0,r5 ;273
0006b8 eaffffc1 B |L1.1476| ;273
ENDP
Uart_SendString PROC
;;;306 void Uart_SendString(char *pt)
;;;307 {
0006bc e92d4010 STMFD sp!,{r4,lr}
0006c0 e1a04000 MOV r4,r0
;;;308 while(*pt)
0006c4 e1a00000 NOP
|L1.1736|
0006c8 e5d40000 LDRB r0,[r4,#0]
0006cc e3500000 CMP r0,#0
0006d0 0a000002 BEQ |L1.1760|
;;;309 Uart_SendByte(*pt++);
0006d4 e4d40001 LDRB r0,[r4],#1
0006d8 ebfffffe BL Uart_SendByte
0006dc eafffff9 B |L1.1736|
;;;310 }
|L1.1760|
0006e0 e8bd8010 LDMFD sp!,{r4,pc}
ENDP
Led_Display PROC
;;;329 void Led_Display(int data)
;;;330 {
0006e4 e51f1448 LDR r1,|L1.676|
;;;331 //Active is low.(LED On)
;;;332 // GP7 GP6 GP5 GP4
;;;333 //LED3 LED2 LED0 LED1
;;;334 rGPDAT = (rGPDAT & ~(0xf<<4)) | ((~data & 0xf)<<4);
0006e8 e591100c LDR r1,[r1,#0xc]
0006ec e3c110f0 BIC r1,r1,#0xf0
0006f0 e3a0200f MOV r2,#0xf
0006f4 e1c22000 BIC r2,r2,r0
0006f8 e1811202 ORR r1,r1,r2,LSL #4
0006fc e51f2460 LDR r2,|L1.676|
000700 e582100c STR r1,[r2,#0xc]
;;;335
;;;336 }
000704 e12fff1e BX lr
ENDP
Timer_Start PROC
;;;340 void Timer_Start(int divider) //0:16us,1:32us 2:64us 3:128us
;;;341 {
000708 e3a01dc8 MOV r1,#0x3200
;;;342 rWTCON = ((PCLK/1000000-1)<<8)|(divider<<3); //Watch-dog timer control register
00070c e1811180 ORR r1,r1,r0,LSL #3
000710 e51f2488 LDR r2,|L1.656|
000714 e5821000 STR r1,[r2,#0]
;;;343 rWTDAT = 0xffff; //Watch-dog timer data register
000718 e59f1360 LDR r1,|L1.2688|
00071c e1c22001 BIC r2,r2,r1
000720 e5821004 STR r1,[r2,#4]
;;;344 rWTCNT = 0xffff; //Watch-dog count register
000724 e1c22001 BIC r2,r2,r1
000728 e5821008 STR r1,[r2,#8]
;;;345
;;;346 //Enable Watchdog timer with disabling Interrupt and Reset function.
;;;347 rWTCON = rWTCON | (1<<5);
00072c e1c21001 BIC r1,r2,r1
000730 e5911000 LDR r1,[r1,#0]
000734 e3811020 ORR r1,r1,#0x20
000738 e5821000 STR r1,[r2,#0]
;;;348 }
00073c e12fff1e BX lr
ENDP
Timer_Stop PROC
;;;351 int Timer_Stop(void)
;;;352 {
000740 e3a00dc8 MOV r0,#0x3200
;;;353 rWTCON = ((PCLK/1000000-1)<<8);
000744 e51f14bc LDR r1,|L1.656|
000748 e5810000 STR r0,[r1,#0]
;;;354 return (0xffff - rWTCNT);
00074c e1c10000 BIC r0,r1,r0
000750 e5900008 LDR r0,[r0,#8]
000754 e26000ff RSB r0,r0,#0xff
000758 e2800cff ADD r0,r0,#0xff00
;;;355 }
00075c e12fff1e BX lr
ENDP
ChangeMPllValue PROC
;;;359 void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
;;;360 {
000760 e1a03600 MOV r3,r0,LSL #12
;;;361 rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
000764 e1833201 ORR r3,r3,r1,LSL #4
000768 e1833002 ORR r3,r3,r2
00076c e3a0c440 MOV r12,#0x40000000
000770 e58c3010 STR r3,[r12,#0x10]
;;;362 }
000774 e12fff1e BX lr
ENDP
ChangeUPllValue PROC
;;;381 void ChangeUPllValue(int mdiv,int pdiv,int sdiv)
;;;382 {
000778 e1a03600 MOV r3,r0,LSL #12
;;;383 rUPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
00077c e1833201 ORR r3,r3,r1,LSL #4
000780 e1833002 ORR r3,r3,r2
000784 e3a0c440 MOV r12,#0x40000000
000788 e58c3014 STR r3,[r12,#0x14]
;;;384 }
00078c e12fff1e BX lr
ENDP
ChangeSromParameter PROC
;;;418 void ChangeSromParameter(unsigned int hclk, int bank)
;;;419 {
000790 e92d41f0 STMFD sp!,{r4-r8,lr}
000794 e24dd028 SUB sp,sp,#0x28
000798 e1a07000 MOV r7,r0
00079c e1a08001 MOV r8,r1
;;;420 int acc0, acc1, acc2;
;;;421
;;;422 // (Period of hclk(nano second))*1000 =1000000/(hclk/1000000.)
;;;423 acc0 = (int)(MINACC0/(1000000/(hclk/1000000.))+0.5)+1;
0007a0 e1a00007 MOV r0,r7
0007a4 ebfffffe BL _dfltu
0007a8 e88d0003 STMIA sp,{r0,r1}
0007ac e28f0fb4 ADR r0,|L1.2692|
0007b0 e890000c LDMIA r0,{r2,r3}
0007b4 e59d0000 LDR r0,[sp,#0]
0007b8 ebfffffe BL _ddiv
0007bc e58d0008 STR r0,[sp,#8]
0007c0 e58d100c STR r1,[sp,#0xc]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -