📄 adc.lst
字号:
00000034 E1A02000 MOV R2,R0 ; result
00000038 ---- Variable 'result' assigned to Register 'R2' ----
39: if(result==0x01)
00000038 E1A00002 MOV R0,R2 ; result
0000003C E1A00800 MOV R0,R0,LSL #16 ; result
00000040 E1A00820 MOV R0,R0,LSR #16
00000044 E3500001 CMP R0,#0x0001
00000048 1A000006 BNE L_6 ; Targ=0x68
41: ADCOF=i-3;
0000004C E1A00003 MOV R0,R3 ; i
00000050 E1A01800 MOV R1,R0,LSL #16 ; i
00000054 E1A01821 MOV R1,R1,LSR #16
00000058 E2411003 SUB R1,R1,#0x0003
0000005C E5100000 LDR R0,=0xFFFF0534
00000060 E5801000 STR R1,[R0,#0x0]
42: break;
00000064 EA000008 B L_7 ; Targ=0x8C
44: }
00000068 L_6:
00000068 E2833001 ADD R3,R3,#0x0001 ; i
0000006C E1A03803 MOV R3,R3,LSL #16
00000070 E1A03823 MOV R3,R3,LSR #16
00000074 L_8:
00000074 E1A00003 MOV R0,R3 ; i
00000078 E1A00800 MOV R0,R0,LSL #16 ; i
0000007C E1A00820 MOV R0,R0,LSR #16
00000080 E5101000 LDR R1,=0x3FF
00000084 E1500001 CMP R0,R1
00000088 3AFFFFE3 BCC L_9 ; Targ=0x1C
0000008C L_7:
45: ADCCP=0x12; //将输入连接到内部参考电压
0000008C E3A01012 MOV R1,#0x12
00000090 E5100000 LDR R0,=0xFFFF0504
00000094 E5801000 STR R1,[R0,#0x0]
46: for(i=0;i<0x03FF;i++) //增益校准
00000098 E1A03004 MOV R3,R4 ; i
0000009C EA00002A B L_14 ; Targ=0x14C
000000A0 L_15:
48: ADCGN=i; //设置ADCGN的值
000000A0 E1A00003 MOV R0,R3 ; i
000000A4 E1A01800 MOV R1,R0,LSL #16 ; i
000000A8 E1A01821 MOV R1,R1,LSR #16
000000AC E5100000 LDR R0,=0xFFFF0530
000000B0 E5801000 STR R1,[R0,#0x0]
49: result=ADC_software_conversion();
000000B4 EBFFFFD1 BL ADC_software_conversion?A ; Targ=0x0
000000B8 E1A02000 MOV R2,R0 ; result
50: if(result==4094)
000000BC E1A00002 MOV R0,R2 ; result
000000C0 E1A00800 MOV R0,R0,LSL #16 ; result
000000C4 E1A00820 MOV R0,R0,LSR #16
000000C8 E5101000 LDR R1,=0xFFE
000000CC E1500001 CMP R0,R1
000000D0 1A00001A BNE L_12 ; Targ=0x140
52: ADCGN=i+6; //再将ADCGN加的一点
000000D4 E1A00003 MOV R0,R3 ; i
000000D8 E1A01800 MOV R1,R0,LSL #16 ; i
000000DC E1A01821 MOV R1,R1,LSR #16
000000E0 E2811006 ADD R1,R1,#0x0006
000000E4 E5100000 LDR R0,=0xFFFF0530
000000E8 E5801000 STR R1,[R0,#0x0]
ARM COMPILER V2.53, ADC 22/09/07 23:08:05 PAGE 5
53: result=ADC_software_conversion();
000000EC EBFFFFC3 BL ADC_software_conversion?A ; Targ=0x0
000000F0 E1A02000 MOV R2,R0 ; result
54: if(result==4095)
000000F4 E1A00002 MOV R0,R2 ; result
000000F8 E1A00800 MOV R0,R0,LSL #16 ; result
000000FC E1A00820 MOV R0,R0,LSR #16
00000100 E5101000 LDR R1,=0xFFF
00000104 E1500001 CMP R0,R1
00000108 1A000006 BNE L_18 ; Targ=0x128
56: ADCGN=i+4;
0000010C E1A00003 MOV R0,R3 ; i
00000110 E1A01800 MOV R1,R0,LSL #16 ; i
00000114 E1A01821 MOV R1,R1,LSR #16
00000118 E2811004 ADD R1,R1,#0x0004
0000011C E5100000 LDR R0,=0xFFFF0530
00000120 E5801000 STR R1,[R0,#0x0]
57: break;
00000124 EA00000E B L_13 ; Targ=0x164
58: }
00000128 L_18:
61: ADCGN=i-4;
00000128 E1A00003 MOV R0,R3 ; i
0000012C E1A01800 MOV R1,R0,LSL #16 ; i
00000130 E1A01821 MOV R1,R1,LSR #16
00000134 E2411004 SUB R1,R1,#0x0004
00000138 E5100000 LDR R0,=0xFFFF0530
0000013C E5801000 STR R1,[R0,#0x0]
64: }
00000140 L_12:
00000140 E2833001 ADD R3,R3,#0x0001 ; i
00000144 E1A03803 MOV R3,R3,LSL #16
00000148 E1A03823 MOV R3,R3,LSR #16
0000014C L_14:
0000014C E1A00003 MOV R0,R3 ; i
00000150 E1A00800 MOV R0,R0,LSL #16 ; i
00000154 E1A00820 MOV R0,R0,LSR #16
00000158 E5101000 LDR R1,=0x3FF
0000015C E1500001 CMP R0,R1
00000160 3AFFFFCE BCC L_15 ; Targ=0xA0
00000164 L_13:
00000164 ; SCOPE-END
65: }
00000164 E8BD0010 LDMIA R13!,{R4}
00000168 E8BD0008 LDMIA R13!,{R3}
0000016C E12FFF13 BX R3
00000170 ENDP ; 'ADC_calibration?A'
*** CODE SEGMENT '?PR?ADC_init?A?ADC':
69: void ADC_init(void)
00000000 E92D4010 STMDB R13!,{R4,LR}
71: ADCCON=0x0023; //ADC时钟1MHz,打开ADC电源,单端模式,并选择软件转换模式
00000004 E3A01023 MOV R1,#0x23
00000008 E5100000 LDR R0,=0xFFFF0500
0000000C E5801000 STR R1,[R0,#0x0]
72: ADCCP=0x00; //通道0
00000010 E3A04000 MOV R4,#0x0
00000014 E5100000 LDR R0,=0xFFFF0504
00000018 E5804000 STR R4,[R0,#0x0]
73: ADCCN=0x00; //通道0
0000001C E5100000 LDR R0,=0xFFFF0508
00000020 E5804000 STR R4,[R0,#0x0]
74: REFCON=0x01; //使用内部2.5V参考电压
00000024 E3A01001 MOV R1,#0x1
00000028 E5100000 LDR R0,=0xFFFF048C
0000002C E5801000 STR R1,[R0,#0x0]
75: ADC_calibration(); //ADC校准
ARM COMPILER V2.53, ADC 22/09/07 23:08:05 PAGE 6
00000030 EBFFFFF2 BL ADC_calibration?A ; Targ=0x0
76: ADCCP=0x00; //选择通道0
00000034 E5100000 LDR R0,=0xFFFF0504
00000038 E5804000 STR R4,[R0,#0x0]
77: }
0000003C E8BD0010 LDMIA R13!,{R4}
00000040 E8BD0008 LDMIA R13!,{R3}
00000044 E12FFF13 BX R3
00000048 ENDP ; 'ADC_init?A'
*** CODE SEGMENT '?PR?read_ADC?A?ADC':
82: uint16 read_ADC(uint8 ch)
00000000 E92D4000 STMDB R13!,{LR}
00000004 E1A01000 MOV R1,R0 ; ch
00000008 ---- Variable 'ch' assigned to Register 'R1' ----
84: ADCCP=ch & 0x1F; //设置通道
00000008 E1A00001 MOV R0,R1 ; ch
0000000C E1A01C00 MOV R1,R0,LSL #24 ; ch
00000010 E1A01C21 MOV R1,R1,LSR #24
00000014 E201101F AND R1,R1,#0x001F
00000018 E5100000 LDR R0,=0xFFFF0504
0000001C E5801000 STR R1,[R0,#0x0]
85: return ADC_software_conversion();
00000020 EBFFFFF6 BL ADC_software_conversion?A ; Targ=0x0
00000024 E1A00800 MOV R0,R0,LSL #16 ; ADC_software_conversion?A
00000028 E1A00820 MOV R0,R0,LSR #16
86: }
0000002C E8BD0008 LDMIA R13!,{R3}
00000030 E12FFF13 BX R3
00000034 ENDP ; 'read_ADC?A'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -