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

📄 2442lib.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0007b4  e1560004          CMP      r6,r4
0007b8  aa000006          BGE      |L1.2008|
;;;282                {
;;;283                    Uart_Printf("\b \b");
0007bc  e28f002c          ADR      r0,|L1.2032|
0007c0  ebfffffe          BL       Uart_Printf
;;;284                    string--;
0007c4  e2444001          SUB      r4,r4,#1
0007c8  ea000002          B        |L1.2008|
;;;285                }
;;;286            }
;;;287            else 
;;;288            {
;;;289                *string++ = c;
                  |L1.1996|
0007cc  e4c45001          STRB     r5,[r4],#1
;;;290                Uart_SendByte(c);
0007d0  e1a00005          MOV      r0,r5
0007d4  ebfffffe          BL       Uart_SendByte
;;;291            }
;;;292        }
                  |L1.2008|
0007d8  eaffffef          B        |L1.1948|
;;;293        *string='\0';
                  |L1.2012|
0007dc  e3a00000          MOV      r0,#0
0007e0  e5c40000          STRB     r0,[r4,#0]
;;;294        Uart_SendByte('\n');
0007e4  e3a0000a          MOV      r0,#0xa
0007e8  ebfffffe          BL       Uart_SendByte
;;;295    }
0007ec  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                  |L1.2032|
0007f0  00082008          DCB      "\b \b\0"
                          ENDP

                  Uart_GetIntNum PROC
;;;298    int Uart_GetIntNum(void)
;;;299    {
0007f4  e92d43f0          STMFD    sp!,{r4-r9,lr}
0007f8  e24dd024          SUB      sp,sp,#0x24
;;;300        char str[30];
;;;301        char *string = str;
0007fc  e28d4004          ADD      r4,sp,#4
;;;302        int base     = 10;
000800  e3a0800a          MOV      r8,#0xa
;;;303        int minus    = 0;
000804  e3a09000          MOV      r9,#0
;;;304        int result   = 0;
000808  e3a05000          MOV      r5,#0
;;;305        int lastIndex;    
;;;306        int i;
;;;307        
;;;308        Uart_GetString(string);
00080c  e1a00004          MOV      r0,r4
000810  ebfffffe          BL       Uart_GetString
;;;309        
;;;310        if(string[0]=='-')
000814  e5d40000          LDRB     r0,[r4,#0]
000818  e350002d          CMP      r0,#0x2d
00081c  1a000001          BNE      |L1.2088|
;;;311        {
;;;312            minus = 1;
000820  e3a09001          MOV      r9,#1
;;;313            string++;
000824  e2844001          ADD      r4,r4,#1
;;;314        }
;;;315        
;;;316        if(string[0]=='0' && (string[1]=='x' || string[1]=='X'))
                  |L1.2088|
000828  e5d40000          LDRB     r0,[r4,#0]
00082c  e3500030          CMP      r0,#0x30
000830  1a000007          BNE      |L1.2132|
000834  e5d40001          LDRB     r0,[r4,#1]
000838  e3500078          CMP      r0,#0x78
00083c  0a000002          BEQ      |L1.2124|
000840  e5d40001          LDRB     r0,[r4,#1]
000844  e3500058          CMP      r0,#0x58
000848  1a000001          BNE      |L1.2132|
;;;317        {
;;;318            base    = 16;
                  |L1.2124|
00084c  e3a08010          MOV      r8,#0x10
;;;319            string += 2;
000850  e2844002          ADD      r4,r4,#2
;;;320        }
;;;321        
;;;322        lastIndex = strlen(string) - 1;
                  |L1.2132|
000854  e1a00004          MOV      r0,r4
000858  ebfffffe          BL       strlen
00085c  e2407001          SUB      r7,r0,#1
;;;323        
;;;324        if(lastIndex<0)
000860  e3570000          CMP      r7,#0
000864  aa000002          BGE      |L1.2164|
;;;325            return -1;
000868  e3e00000          MVN      r0,#0
                  |L1.2156|
00086c  e28dd024          ADD      sp,sp,#0x24
;;;326        
;;;327        if(string[lastIndex]=='h' || string[lastIndex]=='H' )
;;;328        {
;;;329            base = 16;
;;;330            string[lastIndex] = 0;
;;;331            lastIndex--;
;;;332        }
;;;333    
;;;334        if(base==10)
;;;335        {
;;;336            result = atoi(string);
;;;337            result = minus ? (-1*result):result;
;;;338        }
;;;339        else
;;;340        {
;;;341            for(i=0;i<=lastIndex;i++)
;;;342            {
;;;343                if(isalpha(string[i]))
;;;344                {
;;;345                    if(isupper(string[i]))
;;;346                        result = (result<<4) + string[i] - 'A' + 10;
;;;347                    else
;;;348                        result = (result<<4) + string[i] - 'a' + 10;
;;;349                }
;;;350                else
;;;351                    result = (result<<4) + string[i] - '0';
;;;352            }
;;;353            result = minus ? (-1*result):result;
;;;354        }
;;;355        return result;
;;;356    }
000870  e8bd83f0          LDMFD    sp!,{r4-r9,pc}
                  |L1.2164|
000874  e7d40007          LDRB     r0,[r4,r7]            ;327
000878  e3500068          CMP      r0,#0x68              ;327
00087c  0a000002          BEQ      |L1.2188|             ;327
000880  e7d40007          LDRB     r0,[r4,r7]            ;327
000884  e3500048          CMP      r0,#0x48              ;327
000888  1a000003          BNE      |L1.2204|             ;327
                  |L1.2188|
00088c  e3a08010          MOV      r8,#0x10              ;329
000890  e3a00000          MOV      r0,#0                 ;330
000894  e7c40007          STRB     r0,[r4,r7]            ;330
000898  e2477001          SUB      r7,r7,#1              ;331
                  |L1.2204|
00089c  e358000a          CMP      r8,#0xa               ;334
0008a0  1a000009          BNE      |L1.2252|             ;334
0008a4  e1a00004          MOV      r0,r4                 ;336
0008a8  ebfffffe          BL       atoi                  ;336
0008ac  e1a05000          MOV      r5,r0                 ;336
0008b0  e3590000          CMP      r9,#0                 ;337
0008b4  0a000001          BEQ      |L1.2240|             ;337
0008b8  e2650000          RSB      r0,r5,#0              ;337
0008bc  ea000000          B        |L1.2244|             ;337
                  |L1.2240|
0008c0  e1a00005          MOV      r0,r5                 ;337
                  |L1.2244|
0008c4  e1a05000          MOV      r5,r0                 ;337
0008c8  ea000023          B        |L1.2396|             ;337
                  |L1.2252|
0008cc  e3a06000          MOV      r6,#0                 ;341
                  |L1.2256|
0008d0  e1560007          CMP      r6,r7                 ;341
0008d4  ca00001a          BGT      |L1.2372|             ;341
0008d8  ea000001          B        |L1.2276|             ;341
                  |L1.2268|
0008dc  e2866001          ADD      r6,r6,#1              ;341
0008e0  eafffffa          B        |L1.2256|             ;341
                  |L1.2276|
0008e4  ebfffffe          BL       __rt_ctype_table      ;343
0008e8  e5900000          LDR      r0,[r0,#0]            ;343
0008ec  e7d41006          LDRB     r1,[r4,r6]            ;343
0008f0  e7d00001          LDRB     r0,[r0,r1]            ;343
0008f4  e3100018          TST      r0,#0x18              ;343
0008f8  0a00000d          BEQ      |L1.2356|             ;343
0008fc  ebfffffe          BL       __rt_ctype_table      ;345
000900  e5900000          LDR      r0,[r0,#0]            ;345
000904  e7d41006          LDRB     r1,[r4,r6]            ;345
000908  e7d00001          LDRB     r0,[r0,r1]            ;345
00090c  e3100010          TST      r0,#0x10              ;345
000910  0a000003          BEQ      |L1.2340|             ;345
000914  e7d40006          LDRB     r0,[r4,r6]            ;346
000918  e0800205          ADD      r0,r0,r5,LSL #4       ;346
00091c  e2405037          SUB      r5,r0,#0x37           ;346
000920  ea000006          B        |L1.2368|             ;346
                  |L1.2340|
000924  e7d40006          LDRB     r0,[r4,r6]            ;348
000928  e0800205          ADD      r0,r0,r5,LSL #4       ;348
00092c  e2405057          SUB      r5,r0,#0x57           ;348
000930  ea000002          B        |L1.2368|             ;348
                  |L1.2356|
000934  e7d40006          LDRB     r0,[r4,r6]            ;351
000938  e0800205          ADD      r0,r0,r5,LSL #4       ;351
00093c  e2405030          SUB      r5,r0,#0x30           ;351
                  |L1.2368|
000940  eaffffe5          B        |L1.2268|             ;352
                  |L1.2372|
000944  e3590000          CMP      r9,#0                 ;353
000948  0a000001          BEQ      |L1.2388|             ;353
00094c  e2650000          RSB      r0,r5,#0              ;353
000950  ea000000          B        |L1.2392|             ;353
                  |L1.2388|
000954  e1a00005          MOV      r0,r5                 ;353
                  |L1.2392|
000958  e1a05000          MOV      r5,r0                 ;353
                  |L1.2396|
00095c  e1a00005          MOV      r0,r5                 ;355
000960  eaffffc1          B        |L1.2156|             ;355
                          ENDP

                  Led_Display PROC
;;;421    void Led_Display(int data)
;;;422    {
000964  e3a01456          MOV      r1,#0x56000000
;;;423              //Active is low.(LED On)
;;;424              // GPF7  GPF6   GPF5   GPF4
;;;425              //nLED_8 nLED4 nLED_2 nLED_1
;;;426    //    rGPFDAT = (rGPFDAT & 0xf) | !((data & 0xf)<<4);
;;;427        rGPFDAT = (rGPFDAT & ~(0xf<<4)) | ((~data & 0xf)<<4);    
000968  e5911054          LDR      r1,[r1,#0x54]
00096c  e3c110f0          BIC      r1,r1,#0xf0
000970  e3a0200f          MOV      r2,#0xf
000974  e1c22000          BIC      r2,r2,r0
000978  e1811202          ORR      r1,r1,r2,LSL #4
00097c  e3a02456          MOV      r2,#0x56000000
000980  e5821054          STR      r1,[r2,#0x54]
;;;428    }
000984  e1a0f00e          MOV      pc,lr
                          ENDP

                  Timer_Start PROC
;;;432    void Timer_Start(int divider)  //0:16us,1:32us 2:64us 3:128us
;;;433    {
000988  e3a01dc0          MOV      r1,#0x3000
;;;434        rWTCON = ((PCLK/1000000-1)<<8)|(divider<<3);  //Watch-dog timer control register
00098c  e1811180          ORR      r1,r1,r0,LSL #3
000990  e3a02453          MOV      r2,#0x53000000
000994  e5821000          STR      r1,[r2,#0]
;;;435        rWTDAT = 0xffff;  //Watch-dog timer data register
000998  e51f1538          LDR      r1,|L1.1128|
00099c  e3a02453          MOV      r2,#0x53000000
0009a0  e5821004          STR      r1,[r2,#4]
;;;436        rWTCNT = 0xffff;  //Watch-dog count register
0009a4  e3a02453          MOV      r2,#0x53000000
0009a8  e5821008          STR      r1,[r2,#8]
;;;437    
;;;438          // Watch-dog timer enable & interrupt  disable
;;;439        rWTCON = (rWTCON & ~(1<<5) & ~(1<<2)) |(1<<5);
0009ac  e3a01453          MOV      r1,#0x53000000
0009b0  e5911000          LDR      r1,[r1,#0]
0009b4  e3c11024          BIC      r1,r1,#0x24
0009b8  e3811020          ORR      r1,r1,#0x20
0009bc  e3a02453          MOV      r2,#0x53000000
0009c0  e5821000          STR      r1,[r2,#0]
;;;440    }
0009c4  e1a0f00e          MOV      pc,lr
                          ENDP

                  Timer_Stop PROC
;;;443    int Timer_Stop(void)
;;;444    {
0009c8  e3a00dc0          MOV      r0,#0x3000
;;;445        rWTCON = ((PCLK/1000000-1)<<8);
0009cc  e3a01453          MOV      r1,#0x53000000
0009d0  e5810000          STR      r0,[r1,#0]
;;;446        return (0xffff - rWTCNT);
0009d4  e3a00453          MOV      r0,#0x53000000
0009d8  e5900008          LDR      r0,[r0,#8]
0009dc  e26000ff          RSB      r0,r0,#0xff
0009e0  e2800cff          ADD      r0,r0,#0xff00
;;;447    }
0009e4  e1a0f00e          MOV      pc,lr
                          ENDP

                  ChangeMPllValue PROC
;;;451    void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
;;;452    {
0009e8  e1a03600          MOV      r3,r0,LSL #12
;;;453    	//Led_Display(0x8);
;;;454    
;;;455        rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
0009ec  e1833201          ORR      r3,r3,r1,LSL #4
0009f0  e1833002          ORR      r3,r3,r2
0009f4  e3a0c44c          MOV      r12,#0x4c000000
0009f8  e58c3004          STR      r3,[r12,#4]
;;;456    	//Led_Display(0x0);
;;;457    }
0009fc  e1a0f00e          MOV      pc,lr
                          ENDP

                  ChangeClockDivider PROC
;;;479    void ChangeClockDivider(int hdivn_val,int pdivn_val)
;;;480    {
000a00  e92d40f8          STMFD    sp!,{r3-r7,lr}
000a04  e1a06000          MOV      r6,r0
000a08  e1a07001          MOV      r7,r1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -