main.lst

来自「STR71x平台下实现ADC(数模转换)编程」· LST 代码 · 共 404 行 · 第 1/2 页

LST
404
字号

   \                                 In segment CODE, align 4, keep-with-next
     28          void Generic_Wait(u32 var) {
     29            u32 i;
     30            for( i=0;i<=var;i++);
   \                     Generic_Wait:
   \   00000000   0020A0E3           MOV         R2,#+0
   \   00000004   0210A0E1           MOV         R1,R2
   \                     ??Generic_Wait_0:
   \   00000008   010050E1           CMP         R0,R1
   \   0000000C   0100003A           BCC         ??Generic_Wait_1
   \   00000010   011091E2           ADDS        R1,R1,#+0x1
   \   00000014   FBFFFFEA           B           ??Generic_Wait_0
     31          }
   \                     ??Generic_Wait_1:
   \   00000018   1EFF2FE1           BX          LR                 ;; return
     32          /*******************************************************************************
     33          *                                    主函数
     34          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     35          int main (void) {
   \                     main:
   \   00000000   04E02DE5           STR         LR,[SP, #-4]!      ;; Push
     36           #ifdef DEBUG
     37            debug();
   \   00000004   ........           _BLF        debug,debug??rA
     38           #endif
     39            GPIO_Config (GPIO1, 0x0001, GPIO_HI_AIN_TRI); // 配置模拟输入通道
   \   00000008   0020A0E3           MOV         R2,#+0
   \   0000000C   0110A0E3           MOV         R1,#+0x1
   \   00000010   44019FE5           LDR         R0,??main_0        ;; GPIO1
   \   00000014   000090E5           LDR         R0,[R0, #+0]
   \   00000018   ........           _BLF        GPIO_Config,GPIO_Config??rA
     40            GPIO_Config (GPIO1, 0x0100, GPIO_OUT_PP);     // 配置P1.8引脚为输出
   \   0000001C   0520A0E3           MOV         R2,#+0x5
   \   00000020   401FA0E3           MOV         R1,#+0x100
   \   00000024   30019FE5           LDR         R0,??main_0        ;; GPIO1
   \   00000028   000090E5           LDR         R0,[R0, #+0]
   \   0000002C   ........           _BLF        GPIO_Config,GPIO_Config??rA
     41            ADC12_Init();                                 // 初始化ADC寄存器
   \   00000030   ........           _BLF        ADC12_Init,ADC12_Init??rA
     42            ADC12_PrescalerConfig(100);                   // 配置预定标器,采样率=100Hz
   \   00000034   6400A0E3           MOV         R0,#+0x64
   \   00000038   ........           _BLF        ADC12_PrescalerConfig,ADC12_PrescalerConfig??rA
     43            ADC12_ModeConfig (ADC12_SINGLE);              // 选择转换方式=单通道
   \   0000003C   0000A0E3           MOV         R0,#+0
   \   00000040   ........           _BLF        ADC12_ModeConfig,ADC12_ModeConfig??rA
     44            ADC12_ChannelSelect(ADC12_CHANNEL0);          // 选择转换通道
   \   00000044   0000A0E3           MOV         R0,#+0
   \   00000048   ........           _BLF        ADC12_ChannelSelect,ADC12_ChannelSelect??rA
     45            ADC12_ConversionStart();                      // 启动转换
   \   0000004C   ........           _BLF        ADC12_ConversionStart,ADC12_ConversionStart??rA
     46            while(1) {
     47                while (ADC12_FlagStatus (ADC12_DA0)==RESET);      // 查询标志,等待转换完毕
   \                     ??main_1:
   \   00000050   0100A0E3           MOV         R0,#+0x1
   \   00000054   ........           _BLF        ADC12_FlagStatus,ADC12_FlagStatus??rA
   \   00000058   000050E3           CMP         R0,#+0
   \   0000005C   FBFFFF0A           BEQ         ??main_1
     48                Conv_Res = ADC12_ConversionValue(ADC12_CHANNEL0); // 读取换结果
   \   00000060   0000A0E3           MOV         R0,#+0
   \   00000064   ........           _BLF        ADC12_ConversionValue,ADC12_ConversionValue??rA
   \   00000068   F0109FE5           LDR         R1,??main_0+0x4    ;; Conv_Res
   \   0000006C   B000C1E1           STRH        R0,[R1, #+0]
     49                value=ADC12_Calib(Conv_Res);                      // 校准转换结果
   \   00000070   E8009FE5           LDR         R0,??main_0+0x4    ;; Conv_Res
   \   00000074   B000D0E1           LDRH        R0,[R0, #+0]
   \   00000078   ........           BL          ADC12_Calib
   \   0000007C   E0109FE5           LDR         R1,??main_0+0x8    ;; value
   \   00000080   000081E5           STR         R0,[R1, #+0]
     50                if (!GPIO_BitRead(GPIO1,9)) {
   \   00000084   0910A0E3           MOV         R1,#+0x9
   \   00000088   CC009FE5           LDR         R0,??main_0        ;; GPIO1
   \   0000008C   000090E5           LDR         R0,[R0, #+0]
   \   00000090   ........           _BLF        GPIO_BitRead,GPIO_BitRead??rA
   \   00000094   000050E3           CMP         R0,#+0
   \   00000098   1300001A           BNE         ??main_2
     51                    GPIO_BitWrite(GPIO1,8,1);                     // 用电位器改变LED亮度
   \   0000009C   0120A0E3           MOV         R2,#+0x1
   \   000000A0   0810A0E3           MOV         R1,#+0x8
   \   000000A4   B0009FE5           LDR         R0,??main_0        ;; GPIO1
   \   000000A8   000090E5           LDR         R0,[R0, #+0]
   \   000000AC   ........           _BLF        GPIO_BitWrite,GPIO_BitWrite??rA
     52                    Generic_Wait(0xFFF-value );
   \   000000B0   FF00A0E3           MOV         R0,#+0xFF
   \   000000B4   F00E80E3           ORR         R0,R0,#+0xF00
   \   000000B8   A4109FE5           LDR         R1,??main_0+0x8    ;; value
   \   000000BC   001091E5           LDR         R1,[R1, #+0]
   \   000000C0   010050E0           SUBS        R0,R0,R1
   \   000000C4   ........           BL          Generic_Wait
     53                    GPIO_BitWrite(GPIO1,8,0);
   \   000000C8   0020A0E3           MOV         R2,#+0
   \   000000CC   0810A0E3           MOV         R1,#+0x8
   \   000000D0   84009FE5           LDR         R0,??main_0        ;; GPIO1
   \   000000D4   000090E5           LDR         R0,[R0, #+0]
   \   000000D8   ........           _BLF        GPIO_BitWrite,GPIO_BitWrite??rA
     54                    Generic_Wait(value);
   \   000000DC   80009FE5           LDR         R0,??main_0+0x8    ;; value
   \   000000E0   000090E5           LDR         R0,[R0, #+0]
   \   000000E4   ........           BL          Generic_Wait
   \   000000E8   D8FFFFEA           B           ??main_1
     55                }
     56                else  {                                           // 压下BUT按键,LED闪动
     57                    do {
     58                      Generic_Wait(0xFFFF);
   \                     ??main_2:
   \   000000EC   FF00A0E3           MOV         R0,#+0xFF
   \   000000F0   FF0C80E3           ORR         R0,R0,#+0xFF00
   \   000000F4   ........           BL          Generic_Wait
     59                      GPIO_BitWrite(GPIO1,8,~GPIO_BitRead(GPIO1, 8));
   \   000000F8   0810A0E3           MOV         R1,#+0x8
   \   000000FC   58009FE5           LDR         R0,??main_0        ;; GPIO1
   \   00000100   000090E5           LDR         R0,[R0, #+0]
   \   00000104   ........           _BLF        GPIO_BitRead,GPIO_BitRead??rA
   \   00000108   0020E0E1           MVN         R2,R0
   \   0000010C   FF2012E2           ANDS        R2,R2,#+0xFF       ;; Zero extend
   \   00000110   0810A0E3           MOV         R1,#+0x8
   \   00000114   40009FE5           LDR         R0,??main_0        ;; GPIO1
   \   00000118   000090E5           LDR         R0,[R0, #+0]
   \   0000011C   ........           _BLF        GPIO_BitWrite,GPIO_BitWrite??rA
     60                    }
     61                    while(GPIO_BitRead(GPIO1, 9)==0);
   \   00000120   0910A0E3           MOV         R1,#+0x9
   \   00000124   30009FE5           LDR         R0,??main_0        ;; GPIO1
   \   00000128   000090E5           LDR         R0,[R0, #+0]
   \   0000012C   ........           _BLF        GPIO_BitRead,GPIO_BitRead??rA
   \   00000130   000050E3           CMP         R0,#+0
   \   00000134   ECFFFF0A           BEQ         ??main_2
     62                    GPIO_BitWrite(GPIO1,8,0);
   \   00000138   0020A0E3           MOV         R2,#+0
   \   0000013C   0810A0E3           MOV         R1,#+0x8
   \   00000140   14009FE5           LDR         R0,??main_0        ;; GPIO1
   \   00000144   000090E5           LDR         R0,[R0, #+0]
   \   00000148   ........           _BLF        GPIO_BitWrite,GPIO_BitWrite??rA
     63                    Generic_Wait(0x1FFFF);
   \   0000014C   FF04E0E3           MVN         R0,#-16777216
   \   00000150   FE08C0E3           BIC         R0,R0,#+0xFE0000
   \   00000154   ........           BL          Generic_Wait
   \   00000158   BCFFFFEA           B           ??main_1
   \                     ??main_0:
   \   0000015C   ........           DC32        GPIO1
   \   00000160   ........           DC32        Conv_Res
   \   00000164   ........           DC32        value
     64               }
     65            }
     66          }
     67          	
     68          	
     69          	
     70          	
     71          	
     72          	
     73          
     74          
     75          
     76          

   Maximum stack usage in bytes:

     Function              CSTACK
     --------              ------
     ADC12_Calib               0
     ADC12_ChannelSelect       0
     ADC12_ConversionStart     0
     ADC12_ConversionValue     0
     ADC12_FlagStatus          0
     ADC12_ModeConfig          0
     GPIO_BitRead              0
     Generic_Wait              0
     main                      4


   Segment part sizes:

     Function/Label        Bytes
     --------------        -----
     ADC12_ConversionStart   36
     ADC12_ModeConfig        72
     ADC12_ChannelSelect     40
     ADC12_FlagStatus        40
     ADC12_ConversionValue   88
     GPIO_BitRead            16
     value                    4
     var                      4
     Conv_Res                 2
     ADC12_Calib             80
     Generic_Wait            28
     main                   360
      Others                156

 
 904 bytes in segment CODE
  10 bytes in segment DATA_Z
  12 bytes in segment INITTAB
 
 468 bytes of CODE memory (+ 448 bytes shared)
  10 bytes of DATA memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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