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

📄 adcts.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\adcts.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  ReadAdc PROC
;;;54     int ReadAdc(int ch)
;;;55     {
                  |L1.0|
000000  e1a01000          MOV      r1,r0
;;;56         int i;
;;;57         static int prevCh=-1;
;;;58     
;;;59         if(prevCh!=ch)
000004  e59f0138          LDR      r0,|L1.324|
000008  e5900000          LDR      r0,[r0,#0]  ; prevCh@ReadAdc_0
00000c  e1500001          CMP      r0,r1
000010  0a00000a          BEQ      |L1.64|
;;;60             {
;;;61             rADCCON=(1<<14)+(ADCPRS<<6)+(ch<<3);   //setup channel, ADCPRS
000014  e59f012c          LDR      r0,|L1.328|
000018  e0800181          ADD      r0,r0,r1,LSL #3
00001c  e3a03458          MOV      r3,#0x58000000
000020  e5830000          STR      r0,[r3,#0]
;;;62             for(i=0;i<LOOP;i++);    //delay to set up the next channel
000024  e3a02000          MOV      r2,#0
                  |L1.40|
000028  e3520001          CMP      r2,#1
00002c  aa000001          BGE      |L1.56|
000030  e2822001          ADD      r2,r2,#1
000034  eafffffb          B        |L1.40|
;;;63             prevCh=ch;
                  |L1.56|
000038  e59f0104          LDR      r0,|L1.324|
00003c  e5801000          STR      r1,[r0,#0]  ; prevCh@ReadAdc_0
;;;64             }
;;;65         rADCCON=(1<<14)+(ADCPRS<<6)+(ch<<3);   //setup channel, ADCPRS
                  |L1.64|
000040  e59f0100          LDR      r0,|L1.328|
000044  e0800181          ADD      r0,r0,r1,LSL #3
000048  e3a03458          MOV      r3,#0x58000000
00004c  e5830000          STR      r0,[r3,#0]
;;;66         rADCTSC = rADCTSC & 0xfb;     //Normal ADC conversion & No TS operation
000050  e3a00458          MOV      r0,#0x58000000
000054  e5900004          LDR      r0,[r0,#4]
000058  e20000fb          AND      r0,r0,#0xfb
00005c  e3a03458          MOV      r3,#0x58000000
000060  e5830004          STR      r0,[r3,#4]
;;;67         rADCCON|=0x1;   //start ADC
000064  e3a00458          MOV      r0,#0x58000000
000068  e5900000          LDR      r0,[r0,#0]
00006c  e3800001          ORR      r0,r0,#1
000070  e3a03458          MOV      r3,#0x58000000
000074  e5830000          STR      r0,[r3,#0]
;;;68     
;;;69         while(rADCCON & 0x1);          //check if Enable_start is low
000078  e1a00000          NOP      
                  |L1.124|
00007c  e3a00458          MOV      r0,#0x58000000
000080  e5900000          LDR      r0,[r0,#0]
000084  e3100001          TST      r0,#1
000088  1afffffb          BNE      |L1.124|
;;;70         while(!(rADCCON & 0x8000));        //check if EC(End of Conversion) flag is high
00008c  e1a00000          NOP      
                  |L1.144|
000090  e3a00458          MOV      r0,#0x58000000
000094  e5900000          LDR      r0,[r0,#0]
000098  e3100c80          TST      r0,#0x8000
00009c  0afffffb          BEQ      |L1.144|
;;;71         return (rADCDAT0&0x3ff);
0000a0  e3a00458          MOV      r0,#0x58000000
0000a4  e590000c          LDR      r0,[r0,#0xc]
0000a8  e1a00b00          MOV      r0,r0,LSL #22
0000ac  e1a00b20          MOV      r0,r0,LSR #22
;;;72     }
0000b0  e1a0f00e          MOV      pc,lr
                          ENDP

                  Test_Adc PROC
;;;23     void Test_Adc(void)
;;;24     {
0000b4  e92d4ff8          STMFD    sp!,{r3-r11,lr}
;;;25         int a0=0,a1=0,a2=0,a3=0; //Initialize variables
0000b8  e3a05000          MOV      r5,#0
0000bc  e3a04000          MOV      r4,#0
0000c0  e3a06000          MOV      r6,#0
0000c4  e3a07000          MOV      r7,#0
;;;26         int a4=0,a5=0,a6=0,a7=0; //Initialize variables
0000c8  e3a08000          MOV      r8,#0
0000cc  e3a09000          MOV      r9,#0
0000d0  e3a0a000          MOV      r10,#0
0000d4  e3a0b000          MOV      r11,#0
;;;27     
;;;28         Uart_Printf("The ADC_IN are adjusted to the following values.\n");        
0000d8  e28f006c          ADR      r0,|L1.332|
0000dc  ebfffffe          BL       Uart_Printf
;;;29         Uart_Printf("Push any key to exit!!!\n");    
0000e0  e28f0098          ADR      r0,|L1.384|
0000e4  ebfffffe          BL       Uart_Printf
;;;30         Uart_Printf("ADC conv. freq.=%d(Hz)\n",(int)(PCLK/(ADCPRS+1.))); // ADC Freq. = PCLK/(ADCPSR+1), ADC conversion time = 5CYCLES*(1/(ADC Freq.))
0000e8  e59f10ac          LDR      r1,|L1.412|
0000ec  e28f00ac          ADR      r0,|L1.416|
0000f0  ebfffffe          BL       Uart_Printf
;;;31         
;;;32         while(Uart_GetKey()==0)
0000f4  e1a00000          NOP      
                  |L1.248|
0000f8  ebfffffe          BL       Uart_GetKey
0000fc  e3500000          CMP      r0,#0
000100  1a000006          BNE      |L1.288|
;;;33         {
;;;34     
;;;35         //a0=ReadAdc(0);
;;;36         a1=ReadAdc(0);
000104  e3a00000          MOV      r0,#0
000108  ebfffffe          BL       ReadAdc
00010c  e1a04000          MOV      r4,r0
;;;37         //a2=ReadAdc(2);
;;;38         //a3=ReadAdc(3);
;;;39         //a4=ReadAdc(4);    
;;;40         //a5=ReadAdc(5);
;;;41         //a6=ReadAdc(6);
;;;42         //a7=ReadAdc(7);    
;;;43     
;;;44         Uart_Printf("AIN0: %04d\n", a1);
000110  e1a01004          MOV      r1,r4
000114  e28f009c          ADR      r0,|L1.440|
000118  ebfffffe          BL       Uart_Printf
;;;45         //Uart_Printf("AIN0: %04d AIN1: %04d AIN2: %04d AIN3: %04d", a0,a1,a2,a3);
;;;46         //Uart_Printf("AIN4: %04d AIN5: %04d AIN6: %04d AIN7: %04d \n", a4,a5,a6,a7);
;;;47        }
00011c  eafffff5          B        |L1.248|
;;;48         
;;;49         rADCCON=(0<<14)+(19<<6)+(7<<3)+(1<<2);     //stand by mode to reduce power consumption 
                  |L1.288|
000120  e59f009c          LDR      r0,|L1.452|
000124  e3a01458          MOV      r1,#0x58000000
000128  e5810000          STR      r0,[r1,#0]
;;;50         Uart_Printf("rADCCON = 0x%x\n", rADCCON);
00012c  e3a00458          MOV      r0,#0x58000000
000130  e5900000          LDR      r0,[r0,#0]
000134  e1a01000          MOV      r1,r0
000138  e28f0088          ADR      r0,|L1.456|
00013c  ebfffffe          BL       Uart_Printf
;;;51     }
000140  e8bd8ff8          LDMFD    sp!,{r3-r11,pc}
                  |L1.324|
000144  00000000          DCD      ||.data$0||
                  |L1.328|
000148  00004c80          DCD      0x00004c80
                  |L1.332|
00014c  20656854          DCB      "The "
000150  5f434441          DCB      "ADC_"
000154  61204e49          DCB      "IN a"
000158  61206572          DCB      "re a"
00015c  73756a64          DCB      "djus"
000160  20646574          DCB      "ted "
000164  74206f74          DCB      "to t"
000168  66206568          DCB      "he f"
00016c  6f6c6c6f          DCB      "ollo"
000170  676e6977          DCB      "wing"
000174  6c617620          DCB      " val"
000178  2e736575          DCB      "ues."
00017c  0000000a          DCB      "\n\0\0\0"
                  |L1.384|
000180  68737550          DCB      "Push"
000184  796e6120          DCB      " any"
000188  79656b20          DCB      " key"
00018c  206f7420          DCB      " to "
000190  74697865          DCB      "exit"
000194  0a212121          DCB      "!!!\n"
000198  00000000          DCB      "\0\0\0\0"
                  |L1.412|
00019c  000ec716          DCD      0x000ec716
                  |L1.416|
0001a0  20434441          DCB      "ADC "
0001a4  766e6f63          DCB      "conv"
0001a8  7266202e          DCB      ". fr"
0001ac  3d2e7165          DCB      "eq.="
0001b0  48286425          DCB      "%d(H"
0001b4  000a297a          DCB      "z)\n\0"
                  |L1.440|
0001b8  304e4941          DCB      "AIN0"
0001bc  3025203a          DCB      ": %0"
0001c0  000a6434          DCB      "4d\n\0"
                  |L1.452|
0001c4  000004fc          DCD      0x000004fc
                  |L1.456|
0001c8  43444172          DCB      "rADC"
0001cc  204e4f43          DCB      "CON "
0001d0  7830203d          DCB      "= 0x"
0001d4  000a7825          DCB      "%x\n\0"
                          ENDP

                  AdcTsAuto PROC
;;;100    void __irq AdcTsAuto(void)
;;;101    {
0001d8  e92d501f          STMFD    sp!,{r0-r4,r12,lr}
0001dc  e24dd004          SUB      sp,sp,#4
;;;102    	int i;
;;;103    	U32 saveAdcdly;
;;;104    
;;;105        if(rADCDAT0&0x8000)
0001e0  e3a00458          MOV      r0,#0x58000000
0001e4  e590000c          LDR      r0,[r0,#0xc]
0001e8  e3100c80          TST      r0,#0x8000
0001ec  0a000007          BEQ      |L1.528|
;;;106        {
;;;107    	Uart_Printf("\nStylus Up!!\n");
0001f0  e28f0f7b          ADR      r0,|L1.996|
0001f4  ebfffffe          BL       Uart_Printf
;;;108    	rADCTSC&=0xff;	// Set stylus down interrupt bit
0001f8  e3a00458          MOV      r0,#0x58000000
0001fc  e5900004          LDR      r0,[r0,#4]
000200  e20000ff          AND      r0,r0,#0xff
000204  e3a01458          MOV      r1,#0x58000000
000208  e5810004          STR      r0,[r1,#4]
00020c  ea000001          B        |L1.536|
;;;109        }
;;;110        else 
;;;111    	Uart_Printf("\nStylus Down!!\n");
                  |L1.528|
000210  e28f0f77          ADR      r0,|L1.1012|
000214  ebfffffe          BL       Uart_Printf
;;;112    
;;;113    	rADCTSC=(1<<3)|(1<<2);         //Pull-up disable, Seq. X,Y postion measure.
                  |L1.536|
000218  e3a0000c          MOV      r0,#0xc
00021c  e3a01458          MOV      r1,#0x58000000
000220  e5810004          STR      r0,[r1,#4]
;;;114    	saveAdcdly=rADCDLY;
000224  e3a00458          MOV      r0,#0x58000000
000228  e5904008          LDR      r4,[r0,#8]
;;;115    	rADCDLY=40000;                 //Normal conversion mode delay about (1/50M)*40000=0.8ms
00022c  e59f01d0          LDR      r0,|L1.1028|
000230  e3a01458          MOV      r1,#0x58000000
000234  e5810008          STR      r0,[r1,#8]
;;;116    
;;;117    	rADCCON|=0x1;                   //start ADC
000238  e3a00458          MOV      r0,#0x58000000
00023c  e5900000          LDR      r0,[r0,#0]
000240  e3800001          ORR      r0,r0,#1
000244  e3a01458          MOV      r1,#0x58000000
000248  e5810000          STR      r0,[r1,#0]
;;;118    
;;;119    		while(rADCCON & 0x1);		//check if Enable_start is low
00024c  e1a00000          NOP      
                  |L1.592|
000250  e3a00458          MOV      r0,#0x58000000
000254  e5900000          LDR      r0,[r0,#0]
000258  e3100001          TST      r0,#1
00025c  1afffffb          BNE      |L1.592|
;;;120    		while(!(rADCCON & 0x8000));        //check if EC(End of Conversion) flag is high, This line is necessary~!!
000260  e1a00000          NOP      
                  |L1.612|
000264  e3a00458          MOV      r0,#0x58000000
000268  e5900000          LDR      r0,[r0,#0]
00026c  e3100c80          TST      r0,#0x8000
000270  0afffffb          BEQ      |L1.612|
;;;121    		
;;;122                while(!(rSRCPND & (BIT_ADC)));  //check if ADC is finished with interrupt bit
000274  e1a00000          NOP      
                  |L1.632|
000278  e3a0044a          MOV      r0,#0x4a000000
00027c  e5900000          LDR      r0,[r0,#0]
000280  e3100480          TST      r0,#0x80000000
000284  0afffffb          BEQ      |L1.632|
;;;123    
;;;124                xdata=(rADCDAT0&0x3ff);
000288  e3a00458          MOV      r0,#0x58000000
00028c  e590000c          LDR      r0,[r0,#0xc]
000290  e1a00b00          MOV      r0,r0,LSL #22
000294  e1a00b20          MOV      r0,r0,LSR #22

⌨️ 快捷键说明

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