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

📄 adc.lst

📁 基于陀螺仪原理的惯性导航程序 用于测量量角速度
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -