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

📄 ad_sample.txt

📁 一个电力系统谐波检测的程序
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oad_sample.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips AD_SAMPLE\AD_SAMPLE.c]

                          ARM

                          AREA ||.text.7||, CODE, READONLY, ALIGN=2

                  AD_INIT PROC
;;;5       
;;;6      	 PINSEL1 |=(1<<22);
000000  e59f012c          LDR      r0,|L1.308|
000004  e5900004          LDR      r0,[r0,#4]
000008  e3800501          ORR      r0,r0,#0x400000
00000c  e59f1120          LDR      r1,|L1.308|
000010  e5810004          STR      r0,[r1,#4]
;;;7      	 PINSEL1 |=(1<<24);
000014  e1a00001          MOV      r0,r1
000018  e5900004          LDR      r0,[r0,#4]
00001c  e3800401          ORR      r0,r0,#0x1000000
000020  e5810004          STR      r0,[r1,#4]
;;;8      	 PINSEL1 |=(1<<26);// 
000024  e1a00001          MOV      r0,r1
000028  e5900004          LDR      r0,[r0,#4]
00002c  e3800301          ORR      r0,r0,#0x4000000
000030  e5810004          STR      r0,[r1,#4]
;;;9      	 PINSEL1 |=(1<<18);
000034  e1a00001          MOV      r0,r1
000038  e5900004          LDR      r0,[r0,#4]
00003c  e3800701          ORR      r0,r0,#0x40000
000040  e5810004          STR      r0,[r1,#4]
;;;10     	 PINSEL1 |=(1<<20);
000044  e1a00001          MOV      r0,r1
000048  e5900004          LDR      r0,[r0,#4]
00004c  e3800601          ORR      r0,r0,#0x100000
000050  e5810004          STR      r0,[r1,#4]
;;;11     	 PINSEL0 |=(3<<8);
000054  e1a00001          MOV      r0,r1
000058  e5900000          LDR      r0,[r0,#0]
00005c  e3800c03          ORR      r0,r0,#0x300
000060  e5810000          STR      r0,[r1,#0]
;;;12     	/* 进行ADC模块设置 */
;;;13     	AD0CR = (0 << 0)						|	// SEL=8,选择通道3
000064  e59f00cc          LDR      r0,|L1.312|
000068  e2811902          ADD      r1,r1,#0x8000
00006c  e5810000          STR      r0,[r1,#0]
;;;14     			((Fpclk / 1000000 - 1) << 8)	|	// CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
;;;15     			(0 << 16)						|	// BURST=0,软件控制转换操作
;;;16     			(0 << 17)						|	// CLKS=0, 使用11clock转换
;;;17     			(1 << 21)						|  	// PDN=1,正常工作模式
;;;18     			(0 << 22)						|  	// TEST1:0=00,正常工作模式
;;;19     			(0 << 24)						|	// START=1,直接启动ADC转换
;;;20     			(0 << 27);						 	// 直接启动ADC转换时,此位无效
;;;21      	//DelayNS(10);
;;;22     	//ADC_Data = AD0DR;		// 读取ADC结果,并清除DONE标志位	 
;;;23      }
000070  e12fff1e          BX       lr
                          ENDP

                  AD_START PROC
;;;24      void AD_START()
;;;25      {
000074  e92d4010          PUSH     {r4,lr}
000078  e24dd018          SUB      sp,sp,#0x18
;;;26     		uint32 AD_RESULT[6];  uint8 i=0;
00007c  e3a04000          MOV      r4,#0
;;;27     		memset(AD_RESULT,0,sizeof(AD_RESULT))  ;
000080  e3a01018          MOV      r1,#0x18
000084  e1a0000d          MOV      r0,sp
000088  ebfffffe          BL       __aeabi_memclr4
;;;28     	 	for(i=0;i<6;i++)
00008c  e1a00000          MOV      r0,r0
000090  ea000022          B        |L1.288|
;;;29     		{
;;;30     			 
;;;31     	 	  if(i<3)	 {	AD0CR = (1 << i)						|	// SEL=8,选择通道3
                  |L1.148|
000094  e3540003          CMP      r4,#3
000098  aa000006          BGE      |L1.184|
00009c  e3a00001          MOV      r0,#1
0000a0  e1a00410          LSL      r0,r0,r4
0000a4  e3800602          ORR      r0,r0,#0x200000
0000a8  e3800c0b          ORR      r0,r0,#0xb00
0000ac  e59f1088          LDR      r1,|L1.316|
0000b0  e5810000          STR      r0,[r1,#0]
0000b4  ea000006          B        |L1.212|
;;;32     			((Fpclk / 1000000 - 1) << 8)	|	// CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
;;;33     			(0 << 16)						|	// BURST=0,软件控制转换操作
;;;34     			(0 << 17)						|	// CLKS=0, 使用11clock转换
;;;35     			(1 << 21)						|  	// PDN=1,正常工作模式
;;;36     			(0 << 22)						|  	// TEST1:0=00,正常工作模式
;;;37     			(0 << 24)						|	// START=1,直接启动ADC转换
;;;38     			(0 << 27);						 	// 直接启动ADC转换时,此位无效
;;;39     		   }
;;;40     	 	  else {	AD0CR = (1 << i+1)						|	// SEL=8,选择通道3
                  |L1.184|
0000b8  e2840001          ADD      r0,r4,#1
0000bc  e3a01001          MOV      r1,#1
0000c0  e1a00011          LSL      r0,r1,r0
0000c4  e3800602          ORR      r0,r0,#0x200000
0000c8  e3800c0b          ORR      r0,r0,#0xb00
0000cc  e59f1068          LDR      r1,|L1.316|
0000d0  e5810000          STR      r0,[r1,#0]
;;;41     			((Fpclk / 1000000 - 1) << 8)	|	// CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
;;;42     			(0 << 16)						|	// BURST=0,软件控制转换操作
;;;43     			(0 << 17)						|	// CLKS=0, 使用11clock转换
;;;44     			(1 << 21)						|  	// PDN=1,正常工作模式
;;;45     			(0 << 22)						|  	// TEST1:0=00,正常工作模式
;;;46     			(0 << 24)						|	// START=1,直接启动ADC转换
;;;47     			(0 << 27);						 	// 直接启动ADC转换时,此位无效
;;;48     		  }	
;;;49     	 
;;;50       	    AD0CR |=START_AD;
                  |L1.212|
0000d4  e59f0060          LDR      r0,|L1.316|
0000d8  e5900000          LDR      r0,[r0,#0]
0000dc  e3800401          ORR      r0,r0,#0x1000000
0000e0  e59f1054          LDR      r1,|L1.316|
0000e4  e5810000          STR      r0,[r1,#0]
;;;51          	while ((AD0DR & 0x80000000) == 0);
0000e8  e1a00000          MOV      r0,r0
                  |L1.236|
0000ec  e59f0048          LDR      r0,|L1.316|
0000f0  e5900004          LDR      r0,[r0,#4]
0000f4  e3100102          TST      r0,#0x80000000
0000f8  0afffffb          BEQ      |L1.236|
;;;52     	 	AD_RESULT[i]=AD0DR;
0000fc  e59f0038          LDR      r0,|L1.316|
000100  e5900004          LDR      r0,[r0,#4]
000104  e78d0104          STR      r0,[sp,r4,LSL #2]
;;;53     		AD_RESULT[i] = (AD_RESULT[i] >> 6) & 0x3ff;
000108  e79d0104          LDR      r0,[sp,r4,LSL #2]
00010c  e59f102c          LDR      r1,|L1.320|
000110  e0010320          AND      r0,r1,r0,LSR #6
000114  e78d0104          STR      r0,[sp,r4,LSL #2]
000118  e2840001          ADD      r0,r4,#1              ;28
00011c  e20040ff          AND      r4,r0,#0xff           ;28
                  |L1.288|
000120  e3540006          CMP      r4,#6                 ;28
000124  baffffda          BLT      |L1.148|              ;28
;;;54     	    
;;;55     		}
;;;56      }
000128  e28dd018          ADD      sp,sp,#0x18
00012c  e8bd4010          POP      {r4,lr}
000130  e12fff1e          BX       lr
                  |L1.308|
000134  e002c000          DCD      0xe002c000
                  |L1.312|
000138  00200b00          DCD      0x00200b00
                  |L1.316|
00013c  e0034000          DCD      0xe0034000
                  |L1.320|
000140  000003ff          DCD      0x000003ff
                          ENDP


⌨️ 快捷键说明

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