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

📄 adc.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0002ec  e3a01480          MOV      r1,#0x80000000
0002f0  e1c22001          BIC      r2,r2,r1
0002f4  e5821010          STR      r1,[r2,#0x10]
;;;134     	
;;;135     
;;;136    }
0002f8  e8bd0007          LDMFD    sp!,{r0-r2}
0002fc  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  AdcDisplayFunction PROC
;;;199    void AdcDisplayFunction(void)
;;;200    {
000300  e92d4010          STMFD    sp!,{r4,lr}
;;;201    	int i;
;;;202    
;;;203    	i=0;	
000304  e3a04000          MOV      r4,#0
;;;204    	Uart_Printf("\n\n");
000308  e28f0064          ADR      r0,|L1.884|
00030c  ebfffffe          BL       _printf
;;;205    	while(1)	{   //display menu
000310  e1a00000          NOP      
                  |L1.788|
000314  e1a00000          NOP      
;;;206    	    Uart_Printf("%2d:%s",i,adc_function[i][1]);
000318  e59f0058          LDR      r0,|L1.888|
00031c  e0800184          ADD      r0,r0,r4,LSL #3
000320  e1a01004          MOV      r1,r4
000324  e5902004          LDR      r2,[r0,#4]
000328  e28f004c          ADR      r0,|L1.892|
00032c  ebfffffe          BL       _printf
;;;207    	    i++;
000330  e2844001          ADD      r4,r4,#1
;;;208    	    if((int)(adc_function[i][0])==0) {
000334  e59f003c          LDR      r0,|L1.888|
000338  e7900184          LDR      r0,[r0,r4,LSL #3]
00033c  e3500000          CMP      r0,#0
000340  1a000002          BNE      |L1.848|
;;;209    			Uart_Printf("\n");
000344  e24f0fb1          ADR      r0,|L1.136|
000348  ebfffffe          BL       _printf
;;;210    			break;
00034c  ea000004          B        |L1.868|
;;;211    	    }
;;;212    	    if((i%2)==0) Uart_Printf("\n");
                  |L1.848|
000350  e3140001          TST      r4,#1
000354  1a000001          BNE      |L1.864|
000358  e24f0fb6          ADR      r0,|L1.136|
00035c  ebfffffe          BL       _printf
;;;213    	}
                  |L1.864|
000360  eaffffeb          B        |L1.788|
;;;214    }
                  |L1.868|
000364  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.872|
000368  00000008          DCD      ||.bss$2|| + 8
                  |L1.876|
00036c  0000000c          DCD      ||.bss$2|| + 12
                  |L1.880|
000370  45800000          DCD      0x45800000
                  |L1.884|
000374  00000a0a          DCB      "\n\n\0\0"
                  |L1.888|
000378  00000000          DCD      adc_function
                  |L1.892|
00037c  3a643225          DCB      "%2d:"
000380  00007325          DCB      "%s\0\0"
                          ENDP

                  Ch30_ADC PROC
;;;216    void Ch30_ADC(void)
;;;217    {
000384  e92d4010          STMFD    sp!,{r4,lr}
;;;218    	int i;
;;;219    
;;;220    	while(1) {
000388  e1a00000          NOP      
                  |L1.908|
00038c  e1a00000          NOP      
;;;221    		AdcDisplayFunction();
000390  ebfffffe          BL       AdcDisplayFunction
;;;222    		Uart_Printf("\nSelect(-1 to exit): ");
000394  e28f0038          ADR      r0,|L1.980|
000398  ebfffffe          BL       _printf
;;;223    		i = Uart_GetIntNum();
00039c  ebfffffe          BL       Uart_GetIntNum
0003a0  e1a04000          MOV      r4,r0
;;;224    		//Uart_Printf("IN:%d.\n\n", i);
;;;225    		if(i==-1) break;
0003a4  e3740001          CMN      r4,#1
0003a8  1a000000          BNE      |L1.944|
0003ac  ea000007          B        |L1.976|
;;;226    		
;;;227    		if(i>=0 && (i<(sizeof(adc_function)/8)) ) 
                  |L1.944|
0003b0  e3540000          CMP      r4,#0
0003b4  ba000004          BLT      |L1.972|
0003b8  e3540006          CMP      r4,#6
0003bc  2a000002          BCS      |L1.972|
;;;228    	    	( (void (*)(void)) (adc_function[i][0]) )();	// execute selected function.
0003c0  e51f1050          LDR      r1,|L1.888|
0003c4  e7910184          LDR      r0,[r1,r4,LSL #3]
0003c8  e12fff30          BLX      r0
;;;229    	}
                  |L1.972|
0003cc  eaffffee          B        |L1.908|
;;;230    
;;;231    }
                  |L1.976|
0003d0  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.980|
0003d4  6c65530a          DCB      "\nSel"
0003d8  28746365          DCB      "ect("
0003dc  7420312d          DCB      "-1 t"
0003e0  7865206f          DCB      "o ex"
0003e4  3a297469          DCB      "it):"
0003e8  00000020          DCB      " \0\0\0"
                          ENDP

                  ReadAdc PROC
;;;355    int ReadAdc(int ch)
;;;356    {
0003ec  e1a01000          MOV      r1,r0
;;;357        int i;
;;;358        static int prevCh=-1;
;;;359    
;;;360        rADCCON = (1<<14)|(preScaler<<6)|(ch<<3);	//setup channel
0003f0  e59f0194          LDR      r0,|L1.1420|
0003f4  e5900000          LDR      r0,[r0,#0]  ; preScaler
0003f8  e1a00300          MOV      r0,r0,LSL #6
0003fc  e1800181          ORR      r0,r0,r1,LSL #3
000400  e3800c40          ORR      r0,r0,#0x4000
000404  e51f309c          LDR      r3,|L1.880|
000408  e5830000          STR      r0,[r3,#0]
;;;361    
;;;362        if(prevCh!=ch)
00040c  e59f017c          LDR      r0,|L1.1424|
000410  e5900000          LDR      r0,[r0,#0]  ; prevCh@ReadAdc_0
000414  e1500001          CMP      r0,r1
000418  0a00000d          BEQ      |L1.1108|
;;;363        {
;;;364    	rADCCON = (1<<14)|(preScaler<<6)|(ch<<3);   //setup channel
00041c  e59f0168          LDR      r0,|L1.1420|
000420  e5900000          LDR      r0,[r0,#0]  ; preScaler
000424  e1a00300          MOV      r0,r0,LSL #6
000428  e1800181          ORR      r0,r0,r1,LSL #3
00042c  e3800c40          ORR      r0,r0,#0x4000
000430  e5830000          STR      r0,[r3,#0]
;;;365    	for(i=0;i<LOOPADC;i++);	//delay to set up the next channel
000434  e3a02000          MOV      r2,#0
                  |L1.1080|
000438  e252cd80          SUBS     r12,r2,#0x2000
00043c  a25cce71          SUBGES   r12,r12,#0x710
000440  aa000001          BGE      |L1.1100|
000444  e2822001          ADD      r2,r2,#1
000448  eafffffa          B        |L1.1080|
;;;366    	prevCh=ch;
                  |L1.1100|
00044c  e59f013c          LDR      r0,|L1.1424|
000450  e5801000          STR      r1,[r0,#0]  ; prevCh@ReadAdc_0
;;;367        }
;;;368        rADCCON|=0x1;   //start ADC
                  |L1.1108|
000454  e51f00ec          LDR      r0,|L1.880|
000458  e5900000          LDR      r0,[r0,#0]
00045c  e3800001          ORR      r0,r0,#1
000460  e51f30f8          LDR      r3,|L1.880|
000464  e5830000          STR      r0,[r3,#0]
;;;369    
;;;370        while(rADCCON & 0x1);	//check if Enable_start is low, waiting for 0
000468  e1a00000          NOP      
                  |L1.1132|
00046c  e51f0104          LDR      r0,|L1.880|
000470  e5900000          LDR      r0,[r0,#0]
000474  e3100001          TST      r0,#1
000478  1afffffb          BNE      |L1.1132|
;;;371        while(!(rADCCON & 0x8000));	//check if EC(End of Conversion) flag is high, waiting for 1
00047c  e1a00000          NOP      
                  |L1.1152|
000480  e51f0118          LDR      r0,|L1.880|
000484  e5900000          LDR      r0,[r0,#0]
000488  e3100c80          TST      r0,#0x8000
00048c  0afffffb          BEQ      |L1.1152|
;;;372    
;;;373        return ( (int)rADCDAX & 0x3ff );
000490  e51f0128          LDR      r0,|L1.880|
000494  e590000c          LDR      r0,[r0,#0xc]
000498  e1a00b00          MOV      r0,r0,LSL #22
00049c  e1a00b20          MOV      r0,r0,LSR #22
;;;374    }
0004a0  e12fff1e          BX       lr
                          ENDP

                  Test_Adc PROC
;;;235    void Test_Adc(void)
;;;236    {
0004a4  e92d4ff0          STMFD    sp!,{r4-r11,lr}
0004a8  e24dd024          SUB      sp,sp,#0x24
;;;237        int i,key,j;
;;;238        int a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0; //Initialize variables
0004ac  e3a00000          MOV      r0,#0
0004b0  e58d0018          STR      r0,[sp,#0x18]
0004b4  e3a00000          MOV      r0,#0
0004b8  e58d0014          STR      r0,[sp,#0x14]
0004bc  e3a05000          MOV      r5,#0
0004c0  e3a06000          MOV      r6,#0
0004c4  e3a07000          MOV      r7,#0
0004c8  e3a08000          MOV      r8,#0
0004cc  e3a09000          MOV      r9,#0
0004d0  e3a0a000          MOV      r10,#0
;;;239        int value;
;;;240        
;;;241        Uart_Printf("[ ADC_IN Test ]\n");
0004d4  e28f00b8          ADR      r0,|L1.1428|
0004d8  ebfffffe          BL       _printf
;;;242        Uart_Printf("0. Dispaly Count 100     1. Continued ...\n\n");
0004dc  e28f00c4          ADR      r0,|L1.1448|
0004e0  ebfffffe          BL       _printf
;;;243        Uart_Printf("Select : ");
0004e4  e28f00e8          ADR      r0,|L1.1492|
0004e8  ebfffffe          BL       _printf
;;;244        key = Uart_GetIntNum();
0004ec  ebfffffe          BL       Uart_GetIntNum
0004f0  e58d0020          STR      r0,[sp,#0x20]
;;;245        Uart_Printf("\n\n");    
0004f4  e24f0f62          ADR      r0,|L1.884|
0004f8  ebfffffe          BL       _printf
;;;246            
;;;247        Uart_Printf("The ADC_IN are adjusted to the following values.\n");	      
0004fc  e28f00dc          ADR      r0,|L1.1504|
000500  ebfffffe          BL       _printf
;;;248        Uart_Printf("Push any key to exit!!!\n");	 
000504  e28f0f42          ADR      r0,|L1.1556|
000508  ebfffffe          BL       _printf
;;;249    
;;;250        Uart_Printf("ADC conv. freq. = %dHz\n",ADC_FREQ);
00050c  e59f111c          LDR      r1,|L1.1584|
000510  e28f0f47          ADR      r0,|L1.1588|
000514  ebfffffe          BL       _printf
;;;251        preScaler = PCLK/(ADC_FREQ) -1;               //PCLK:50.7MHz
000518  e3a00013          MOV      r0,#0x13
00051c  e59f1068          LDR      r1,|L1.1420|
000520  e5810000          STR      r0,[r1,#0]  ; preScaler
;;;252        Uart_Printf("preScaler:%d\n", preScaler);
000524  e59f0060          LDR      r0,|L1.1420|
000528  e5901000          LDR      r1,[r0,#0]  ; preScaler
00052c  e28f0f46          ADR      r0,|L1.1612|
000530  ebfffffe          BL       _printf
;;;253        //ADC conversion time = 5CYCLES*(1/(ADC Freq.)), ADC Freq. = PCLK/(ADCPSR+1)
;;;254    
;;;255        //pISR_ADC_PENUP_DOWN=(unsigned)Adc_Manual;
;;;256        //rINTMSK=~(BIT_ADC_PENUP_DOWN);
;;;257        //rINTSUBMSK=~(BIT_SUB_ADC|BIT_SUB_PENUP|BIT_SUB_PENDN);	
;;;258        
;;;259        Uart_Printf("PCLK/ADC_FREQ - 1 = %d\n",preScaler);
000534  e59f0050          LDR      r0,|L1.1420|
000538  e5901000          LDR      r1,[r0,#0]  ; preScaler
00053c  e28f0f46          ADR      r0,|L1.1628|
000540  ebfffffe          BL       _printf
;;;260    
;;;261    	Uart_Printf("rADCCON:%x\n", rADCCON);
000544  e51f01dc          LDR      r0,|L1.880|
000548  e5900000          LDR      r0,[r0,#0]
00054c  e1a01000          MOV      r1,r0
000550  e28f0f47          ADR      r0,|L1.1652|
000554  ebfffffe          BL       _printf
;;;262        if (key == 0)
000558  e59d0020          LDR      r0,[sp,#0x20]
00055c  e3500000          CMP      r0,#0
000560  1a00005f          BNE      |L1.1764|
;;;263        {
;;;264    
;;;265    	Uart_Printf("Select the channel[0~3]:\n");
000564  e28f0f45          ADR      r0,|L1.1664|
000568  ebfffffe          BL       _printf
;;;266    	j=Uart_GetIntNum();
00056c  ebfffffe          BL       Uart_GetIntNum
000570  e58d001c          STR      r0,[sp,#0x1c]
;;;267    	
;;;268    	while(1) {
000574  e1a00000          NOP      
                  |L1.1400|
000578  e1a00000          NOP      
;;;269    		for(i=0; i<REQCNT; i++) {
00057c  e3a04000          MOV      r4,#0
                  |L1.1408|
000580  e3540064          CMP      r4,#0x64
000584  aa00004d          BGE      |L1.1728|
000588  ea000045          B        |L1.1700|
                  |L1.1420|
00058c  00000000          DCD      ||.bss$2||
                  |L1.1424|
000590  00000030          DCD      ||.data$0|| + 48
                  |L1.1428|
000594  4441205b          DCB      "[ AD"
000598  4e495f43          DCB      "C_IN"
00059c  73655420          DCB      " Tes"
0005a0  0a5d2074          DCB      "t ]\n"
0005a4  00000000          DCB      "\0\0\0\0"
                  |L1.1448|
0005a8  44202e30          DCB      "0. D"
0005ac  61707369          DCB      "ispa"
0005b0  4320796c          DCB      "ly C"
0005b4  746e756f          DCB      "ount"
0005b8  30303120          DCB      " 100"

⌨️ 快捷键说明

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