📄 main.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 08/Nov/2005 12:06:35 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = D:\Book-IAR\examples_ST\STR71x_ADC\app\main.c #
# Command line = D:\Book-IAR\examples_ST\STR71x_ADC\app\main.c -lC #
# D:\Book-IAR\examples_ST\STR71x_ADC\Debug\List\ -o #
# D:\Book-IAR\examples_ST\STR71x_ADC\Debug\Obj\ -s2 #
# --no_cse --no_unroll --no_inline --no_code_motion #
# --no_tbaa --no_clustering --no_scheduling --debug #
# --cpu_mode arm --endian little --cpu ARM7TDMI #
# --stack_align 4 --interwork -e --fpu None #
# --dlib_config "d:\IAR Systems\Embedded Workbench #
# 4.0\arm\LIB\dl4tpainl8n.h" -I #
# D:\Book-IAR\examples_ST\STR71x_ADC\ -I #
# D:\Book-IAR\examples_ST\STR71x_ADC\include\ -I #
# D:\Book-IAR\examples_ST\STR71x_ADC\source\ -I #
# "d:\IAR Systems\Embedded Workbench 4.0\arm\INC\" #
# List file = D:\Book-IAR\examples_ST\STR71x_ADC\Debug\List\main.l #
# st #
# Object file = D:\Book-IAR\examples_ST\STR71x_ADC\Debug\Obj\main.r7 #
# 9 #
# #
# #
##############################################################################
D:\Book-IAR\examples_ST\STR71x_ADC\app\main.c
1 // main.c
2
3 #include "71x_lib.h"
\ In segment CODE, align 4, keep-with-next
\ __??Code32?? __code __interwork __atpcs void ADC12_ConversionStart(void)
\ ADC12_ConversionStart:
\ 00000000 18009FE5 LDR R0,??ADC12_ConversionStart_0 ;; PCU
\ 00000004 000090E5 LDR R0,[R0, #+0]
\ 00000008 10109FE5 LDR R1,??ADC12_ConversionStart_0 ;; PCU
\ 0000000C 001091E5 LDR R1,[R1, #+0]
\ 00000010 B011D1E1 LDRH R1,[R1, #+0x10]
\ 00000014 201091E3 ORRS R1,R1,#+0x20
\ 00000018 B011C0E1 STRH R1,[R0, #+0x10]
\ 0000001C 1EFF2FE1 BX LR ;; return
\ ??ADC12_ConversionStart_0:
\ 00000020 ........ DC32 PCU
\ In segment CODE, align 4, keep-with-next
\ __??Code32?? __code __interwork __atpcs void ADC12_ModeConfig(ADC12_Modes)
\ ADC12_ModeConfig:
\ 00000000 000050E3 CMP R0,#+0
\ 00000004 0400001A BNE ??ADC12_ModeConfig_0
\ 00000008 34109FE5 LDR R1,??ADC12_ModeConfig_1 ;; ADC12
\ 0000000C 001091E5 LDR R1,[R1, #+0]
\ 00000010 B012D1E1 LDRH R1,[R1, #+0x20]
\ 00000014 401091E3 ORRS R1,R1,#+0x40
\ 00000018 050000EA B ??ADC12_ModeConfig_2
\ ??ADC12_ModeConfig_0:
\ 0000001C 20109FE5 LDR R1,??ADC12_ModeConfig_1 ;; ADC12
\ 00000020 001091E5 LDR R1,[R1, #+0]
\ 00000024 B012D1E1 LDRH R1,[R1, #+0x20]
\ 00000028 BF20A0E3 MOV R2,#+0xBF
\ 0000002C FF2C82E3 ORR R2,R2,#+0xFF00
\ 00000030 011012E0 ANDS R1,R2,R1
\ ??ADC12_ModeConfig_2:
\ 00000034 08209FE5 LDR R2,??ADC12_ModeConfig_1 ;; ADC12
\ 00000038 002092E5 LDR R2,[R2, #+0]
\ 0000003C B012C2E1 STRH R1,[R2, #+0x20]
\ 00000040 1EFF2FE1 BX LR ;; return
\ ??ADC12_ModeConfig_1:
\ 00000044 ........ DC32 ADC12
\ In segment CODE, align 4, keep-with-next
\ __??Code32?? __code __interwork __atpcs void ADC12_ChannelSelect(ADC12_Channels)
\ ADC12_ChannelSelect:
\ 00000000 1C109FE5 LDR R1,??ADC12_ChannelSelect_0 ;; ADC12
\ 00000004 001091E5 LDR R1,[R1, #+0]
\ 00000008 14209FE5 LDR R2,??ADC12_ChannelSelect_0 ;; ADC12
\ 0000000C 002092E5 LDR R2,[R2, #+0]
\ 00000010 B022D2E1 LDRH R2,[R2, #+0x20]
\ 00000014 0030A0E1 MOV R3,R0
\ 00000018 022093E1 ORRS R2,R3,R2
\ 0000001C B022C1E1 STRH R2,[R1, #+0x20]
\ 00000020 1EFF2FE1 BX LR ;; return
\ ??ADC12_ChannelSelect_0:
\ 00000024 ........ DC32 ADC12
\ In segment CODE, align 4, keep-with-next
\ __??Code32?? __code __interwork __atpcs FlagStatus ADC12_FlagStatus(ADC12_Flags)
\ ADC12_FlagStatus:
\ 00000000 1C109FE5 LDR R1,??ADC12_FlagStatus_0 ;; ADC12
\ 00000004 001091E5 LDR R1,[R1, #+0]
\ 00000008 B012D1E1 LDRH R1,[R1, #+0x20]
\ 0000000C 010010E1 TST R0,R1
\ 00000010 0100000A BEQ ??ADC12_FlagStatus_1
\ 00000014 0100A0E3 MOV R0,#+0x1
\ 00000018 000000EA B ??ADC12_FlagStatus_2
\ ??ADC12_FlagStatus_1:
\ 0000001C 0000A0E3 MOV R0,#+0
\ ??ADC12_FlagStatus_2:
\ 00000020 1EFF2FE1 BX LR ;; return
\ ??ADC12_FlagStatus_0:
\ 00000024 ........ DC32 ADC12
\ In segment CODE, align 4, keep-with-next
\ __??Code32?? __code __interwork __atpcs u16 ADC12_ConversionValue(ADC12_Channels)
\ ADC12_ConversionValue:
\ 00000000 4C109FE5 LDR R1,??ADC12_ConversionValue_0 ;; ADC12
\ 00000004 001091E5 LDR R1,[R1, #+0]
\ 00000008 44209FE5 LDR R2,??ADC12_ConversionValue_0 ;; ADC12
\ 0000000C 002092E5 LDR R2,[R2, #+0]
\ 00000010 B022D2E1 LDRH R2,[R2, #+0x20]
\ 00000014 0130A0E3 MOV R3,#+0x1
\ 00000018 FF0010E2 ANDS R0,R0,#+0xFF ;; Zero extend
\ 0000001C 20C2B0E1 MOVS R12,R0, LSR #+0x4
\ 00000020 133CE0E1 MVN R3,R3, LSL R12
\ 00000024 022013E0 ANDS R2,R3,R2
\ 00000028 B022C1E1 STRH R2,[R1, #+0x20]
\ 0000002C E014A0E3 MOV R1,#-536870912
\ 00000030 701C81E3 ORR R1,R1,#+0x7000
\ 00000034 C00091E0 ADDS R0,R1,R0, ASR #+0x1
\ 00000038 B000D0E1 LDRH R0,[R0, #+0]
\ 0000003C 0008A0E1 MOV R0,R0, LSL #+0x10
\ 00000040 2008B0E1 MOVS R0,R0, LSR #+0x10
\ 00000044 2002B0E1 MOVS R0,R0, LSR #+0x4
\ 00000048 0008A0E1 MOV R0,R0, LSL #+0x10
\ 0000004C 2008B0E1 MOVS R0,R0, LSR #+0x10
\ 00000050 1EFF2FE1 BX LR ;; return
\ ??ADC12_ConversionValue_0:
\ 00000054 ........ DC32 ADC12
\ In segment CODE, align 4, keep-with-next
\ __??Code32?? __code __interwork __atpcs u8 GPIO_BitRead(struct <unnamed> volatile *, u8)
\ GPIO_BitRead:
\ 00000000 BC00D0E1 LDRH R0,[R0, #+0xC]
\ 00000004 5001B0E1 MOVS R0,R0, ASR R1
\ 00000008 010010E2 ANDS R0,R0,#+0x1
\ 0000000C 1EFF2FE1 BX LR ;; return
4
\ In segment DATA_Z, align 4, align-sorted
5 u32 value,var;
\ value:
\ 00000000 DS8 4
\ In segment DATA_Z, align 4, align-sorted
\ var:
\ 00000000 DS8 4
\ In segment DATA_Z, align 2, align-sorted
6 u16 Conv_Res;
\ Conv_Res:
\ 00000000 DS8 2
7
8 /*******************************************************************************
9 * 说明:ADC12_Calib函数,用于ADC12转换结果校准
10 * 参数:Conv_Res为转换结果,12位二进制补码
11 * 返回值:转换结果校准值,12位二进制无符号数
12 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
13 u16 ADC12_Calib(u16 Conv_Res) {
\ ADC12_Calib:
\ 00000000 0010A0E1 MOV R1,R0
14 if ((Conv_Res & 0x800) == 0x800)
\ 00000004 0100A0E1 MOV R0,R1
\ 00000008 800E10E3 TST R0,#+0x800
\ 0000000C 0700000A BEQ ??ADC12_Calib_0
15 return (0x800 - (((~ Conv_Res)&0xFFF) +1));
\ 00000010 800EA0E3 MOV R0,#+0x800
\ 00000014 0110E0E1 MVN R1,R1
\ 00000018 011AA0E1 MOV R1,R1, LSL #+0x14
\ 0000001C 210A50E0 SUBS R0,R0,R1, LSR #+0x14
\ 00000020 010050E2 SUBS R0,R0,#+0x1
\ 00000024 0008A0E1 MOV R0,R0, LSL #+0x10
\ 00000028 2008B0E1 MOVS R0,R0, LSR #+0x10
\ 0000002C 060000EA B ??ADC12_Calib_1
16 else {
17 if ((Conv_Res & 0x800) == 0)
\ ??ADC12_Calib_0:
\ 00000030 800E11E3 TST R1,#+0x800
\ 00000034 0300001A BNE ??ADC12_Calib_2
18 return (Conv_Res + 0x800);
\ 00000038 800E91E2 ADDS R0,R1,#+0x800
\ 0000003C 0008A0E1 MOV R0,R0, LSL #+0x10
\ 00000040 2008B0E1 MOVS R0,R0, LSR #+0x10
\ 00000044 000000EA B ??ADC12_Calib_1
19 else return 0;
\ ??ADC12_Calib_2:
\ 00000048 0000A0E3 MOV R0,#+0
\ ??ADC12_Calib_1:
\ 0000004C 1EFF2FE1 BX LR ;; return
20 }
21 }
22
23 /*******************************************************************************
24 * 说明:通用延时函数
25 * 参数:无
26 * 返回值:无
27 *******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -