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

📄 adc.lst

📁 看看ARM菜鸟在ARM7上写的操作系统——ARM圈圈操作系统 最近在ADuC7027上写了一个ARM_00_OS
💻 LST
📖 第 1 页 / 共 2 页
字号:
   42:    if(result==0x01)
 0000001E  1C10      MOV         R0,R2 ; result
 00000020  0400      LSL         R0,R0,#0x10 ; result
 00000022  0C00      LSR         R0,R0,#0x10
 00000024  2801      CMP         R0,#0x1
 00000026  D106      BNE         L_6  ; T=0x00000036
   44:      ADCOF=i-3;
 00000028  1C18      MOV         R0,R3 ; i
 0000002A  0401      LSL         R1,R0,#0x10 ; i
 0000002C  0C09      LSR         R1,R1,#0x10
 0000002E  3903      SUB         R1,#0x3
 00000030  4800      LDR         R0,=0xFFFF0534
 00000032  6001      STR         R1,[R0,#0x0]
   45:      break;
 00000034  E008      B           L_7  ; T=0x00000048
   47:   }
 00000036          L_6:
 00000036  3301      ADD         R3,#0x1
 00000038  041B      LSL         R3,R3,#0x10
 0000003A  0C1B      LSR         R3,R3,#0x10
 0000003C          L_8:
 0000003C  1C18      MOV         R0,R3 ; i
 0000003E  0400      LSL         R0,R0,#0x10 ; i
 00000040  0C00      LSR         R0,R0,#0x10
 00000042  4800      LDR         R1,=0x3FF
 00000044  4288      CMP         R0,R1
 00000046  D3E2      BCC         L_9  ; T=0x0000000E
 00000048          L_7:
   48:  ADCCP=0x12;   //将输入连接到内部参考电压
 00000048  2112      MOV         R1,#0x12
 0000004A  4800      LDR         R0,=0xFFFF0504
 0000004C  6001      STR         R1,[R0,#0x0]
   49:  for(i=0;i<0x03FF;i++)        //增益校准
 0000004E  1C23      MOV         R3,R4 ; i
 00000050  E02A      B           L_14  ; T=0x000000A8
 00000052          L_15:
   51:    ADCGN=i;    //设置ADCGN的值
 00000052  1C18      MOV         R0,R3 ; i
 00000054  0401      LSL         R1,R0,#0x10 ; i
 00000056  0C09      LSR         R1,R1,#0x10
 00000058  4800      LDR         R0,=0xFFFF0530
 0000005A  6001      STR         R1,[R0,#0x0]
   52:    result=ADC_software_conversion();
 0000005C  F7FF      BL          ADC_software_conversion?T  ; T=0x0001  (1)
 0000005E  FFD0      BL          ADC_software_conversion?T  ; T=0x0001  (2)
 00000060  1C02      MOV         R2,R0 ; result
   53:    if(result==4094)
 00000062  0400      LSL         R0,R0,#0x10 ; result
 00000064  0C00      LSR         R0,R0,#0x10
 00000066  4800      LDR         R1,=0xFFE
 00000068  4288      CMP         R0,R1
 0000006A  D11A      BNE         L_12  ; T=0x000000A2
   55:       ADCGN=i+6;                      //再将ADCGN加的一点
 0000006C  1C18      MOV         R0,R3 ; i
 0000006E  0401      LSL         R1,R0,#0x10 ; i
 00000070  0C09      LSR         R1,R1,#0x10
 00000072  3106      ADD         R1,#0x6
 00000074  4800      LDR         R0,=0xFFFF0530
 00000076  6001      STR         R1,[R0,#0x0]
   56:       result=ADC_software_conversion();
 00000078  F7FF      BL          ADC_software_conversion?T  ; T=0x0001  (1)
 0000007A  FFC2      BL          ADC_software_conversion?T  ; T=0x0001  (2)
 0000007C  1C02      MOV         R2,R0 ; result
   57:       if(result==4095)
ARM COMPILER V2.50a,  ADC                                                                  16/05/06  14:55:46  PAGE 5   

 0000007E  0400      LSL         R0,R0,#0x10 ; result
 00000080  0C00      LSR         R0,R0,#0x10
 00000082  4800      LDR         R1,=0xFFF
 00000084  4288      CMP         R0,R1
 00000086  D106      BNE         L_18  ; T=0x00000096
   59:         ADCGN=i+4;
 00000088  1C18      MOV         R0,R3 ; i
 0000008A  0401      LSL         R1,R0,#0x10 ; i
 0000008C  0C09      LSR         R1,R1,#0x10
 0000008E  3104      ADD         R1,#0x4
 00000090  4800      LDR         R0,=0xFFFF0530
 00000092  6001      STR         R1,[R0,#0x0]
   60:         break;
 00000094  E00E      B           L_13  ; T=0x000000B4
   61:        }
 00000096          L_18:
   64:         ADCGN=i-4;
 00000096  1C18      MOV         R0,R3 ; i
 00000098  0401      LSL         R1,R0,#0x10 ; i
 0000009A  0C09      LSR         R1,R1,#0x10
 0000009C  3904      SUB         R1,#0x4
 0000009E  4800      LDR         R0,=0xFFFF0530
 000000A0  6001      STR         R1,[R0,#0x0]
   67:   }
 000000A2          L_12:
 000000A2  3301      ADD         R3,#0x1
 000000A4  041B      LSL         R3,R3,#0x10
 000000A6  0C1B      LSR         R3,R3,#0x10
 000000A8          L_14:
 000000A8  1C18      MOV         R0,R3 ; i
 000000AA  0400      LSL         R0,R0,#0x10 ; i
 000000AC  0C00      LSR         R0,R0,#0x10
 000000AE  4800      LDR         R1,=0x3FF
 000000B0  4288      CMP         R0,R1
 000000B2  D3CE      BCC         L_15  ; T=0x00000052
 000000B4          L_13:
 000000B4            ; SCOPE-END
   68: }
 000000B4  BC10      POP         {R4}
 000000B6  BC08      POP         {R3}
 000000B8  4718      BX          R3
 000000BA          ENDP ; 'ADC_calibration?T'


*** CODE SEGMENT '?PR?ADC_init?T?ADC':
   72: void ADC_init(void)
 00000000  B510      PUSH        {R4,LR}
   74:  ADCCON=0x0023;    //ADC时钟1MHz,打开ADC电源,单端模式,并选择软件转换模式
 00000002  2123      MOV         R1,#0x23
 00000004  4800      LDR         R0,=0xFFFF0500
 00000006  6001      STR         R1,[R0,#0x0]
   75:  ADCCP=0x00;       //通道0
 00000008  2400      MOV         R4,#0x0
 0000000A  4800      LDR         R0,=0xFFFF0504
 0000000C  6004      STR         R4,[R0,#0x0]
   76:  ADCCN=0x00;       //通道0
 0000000E  4800      LDR         R0,=0xFFFF0508
 00000010  6004      STR         R4,[R0,#0x0]
   77:  REFCON=0x01;      //使用内部2.5V参考电压
 00000012  2101      MOV         R1,#0x1
 00000014  4800      LDR         R0,=0xFFFF048C
 00000016  6001      STR         R1,[R0,#0x0]
   78:  ADC_calibration();  //ADC校准
 00000018  F7FF      BL          ADC_calibration?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          ADC_calibration?T  ; T=0x0001  (2)
   79:  ADCCP=0x00;      //选择通道0
 0000001C  4800      LDR         R0,=0xFFFF0504
 0000001E  6004      STR         R4,[R0,#0x0]
ARM COMPILER V2.50a,  ADC                                                                  16/05/06  14:55:46  PAGE 6   

   80: }
 00000020  BC10      POP         {R4}
 00000022  BC08      POP         {R3}
 00000024  4718      BX          R3
 00000026          ENDP ; 'ADC_init?T'


*** CODE SEGMENT '?PR?read_ADC?T?ADC':
   85: uint16 read_ADC(uint8 ch)
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; ch
 00000004  ---- Variable 'ch' assigned to Register 'R1' ----
   87:  ADCCP=ch & 0x1F;      //设置通道
 00000004  1C08      MOV         R0,R1 ; ch
 00000006  0601      LSL         R1,R0,#0x18 ; ch
 00000008  0E09      LSR         R1,R1,#0x18
 0000000A  201F      MOV         R0,#0x1F
 0000000C  4001      AND         R1,R0
 0000000E  4800      LDR         R0,=0xFFFF0504
 00000010  6001      STR         R1,[R0,#0x0]
   88:  return ADC_software_conversion();
 00000012  F7FF      BL          ADC_software_conversion?T  ; T=0x0001  (1)
 00000014  FFF5      BL          ADC_software_conversion?T  ; T=0x0001  (2)
 00000016  0400      LSL         R0,R0,#0x10 ; ADC_software_conversion?T
 00000018  0C00      LSR         R0,R0,#0x10
   89: }
 0000001A  BC08      POP         {R3}
 0000001C  4718      BX          R3
 0000001E          ENDP ; 'read_ADC?T'



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 + -