📄 ad_sample.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 + -