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

📄 main.lst

📁 STR71x平台下实现ADC(数模转换)编程
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# 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 + -