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 + -
显示快捷键?