⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24a0lib.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                  |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 + -