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

📄 ldd.lst

📁 ADI公司的关于光通讯模块的监控程序,在KEIL FOR ARM 的编译环境编译.程序大小约12K,芯片是ADu7020.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000036          L_11:
   42:     dac_update = FALSE;
 00000036  2100      MOV         R1,#0x0
 00000038  4800      LDR         R0,=dac_update ; dac_update
 0000003A  7001      STRB        R1,[R0,#0x0] ; dac_update
   43: }
 0000003C  B001      ADD         R13,#0x4
 0000003E  4770      BX          R14
 00000040          ENDP ; 'SetDac?T'


*** CODE SEGMENT '?PR?ErCalibration?T?ldd':
   51: void ErCalibration(BYTE mode){
 00000000  B501      PUSH        {R0,LR}
   56:     switch(mode){
 00000002  A800      ADD         R0,R13,#0x0
 00000004  7800      LDRB        R0,[R0,#0x0] ; mode
 00000006  2802      CMP         R0,#0x2
 00000008  D018      BEQ         L_14  ; T=0x0000003C
 0000000A  2803      CMP         R0,#0x3
 0000000C  D02B      BEQ         L_15  ; T=0x00000066
 0000000E  2801      CMP         R0,#0x1
 00000010  D16F      BNE         L_12  ; T=0x000000F2
   57:         case 1:                 // store ERREF and IMMON setting data at normal temp (25degC)
 00000012          L_13:
   58:             erref_low = DAC1DAT>>16;
 00000012  4800      LDR         R0,=0xFFFF060C
 00000014  6801      LDR         R1,[R0,#0x0]
 00000016  0C09      LSR         R1,R1,#0x10
 00000018  4800      LDR         R0,=erref_low ; erref_low
 0000001A  8001      STRH        R1,[R0,#0x0] ; erref_low
   59:             immon_low = (TXMOD_RAWDAT_MSB<<8) + TXMOD_RAWDAT_LSB;
 0000001C  4800      LDR         R0,=A2h + 0x96 ; A2h+150
 0000001E  7800      LDRB        R0,[R0,#0x0] ; A2h+150
 00000020  1C01      MOV         R1,R0
 00000022  0209      LSL         R1,R1,#0x8
 00000024  4800      LDR         R0,=A2h + 0x97 ; A2h+151
 00000026  7800      LDRB        R0,[R0,#0x0] ; A2h+151
 00000028  1809      ADD         R1,R0
 0000002A  4800      LDR         R0,=immon_low ; immon_low
 0000002C  8001      STRH        R1,[R0,#0x0] ; immon_low
   60:             ER_CON=0;           // clear ER_CON resister
 0000002E  2100      MOV         R1,#0x0
 00000030  4800      LDR         R0,=A2h + 0x90 ; A2h+144
 00000032  7001      STRB        R1,[R0,#0x0] ; A2h+144
   61:             cal_low_done=1;
 00000034  2101      MOV         R1,#0x1
 00000036  4800      LDR         R0,=cal_low_done ; cal_low_done
 00000038  7001      STRB        R1,[R0,#0x0] ; cal_low_done
   62:             break;
 0000003A  E05A      B           L_12  ; T=0x000000F2
   64:         case 2:                 // store ERREF and IMMON setting data at high temp (85degC)
 0000003C          L_14:
   65:             erref_high = DAC1DAT>>16;
 0000003C  4800      LDR         R0,=0xFFFF060C
ARM COMPILER V2.32a,  ldd                                                                  08/08/05  09:50:22  PAGE 6   

 0000003E  6801      LDR         R1,[R0,#0x0]
 00000040  0C09      LSR         R1,R1,#0x10
 00000042  4800      LDR         R0,=erref_high ; erref_high
 00000044  8001      STRH        R1,[R0,#0x0] ; erref_high
   66:             immon_high = (TXMOD_RAWDAT_MSB<<8) + TXMOD_RAWDAT_LSB;
 00000046  4800      LDR         R0,=A2h + 0x96 ; A2h+150
 00000048  7800      LDRB        R0,[R0,#0x0] ; A2h+150
 0000004A  1C01      MOV         R1,R0
 0000004C  0209      LSL         R1,R1,#0x8
 0000004E  4800      LDR         R0,=A2h + 0x97 ; A2h+151
 00000050  7800      LDRB        R0,[R0,#0x0] ; A2h+151
 00000052  1809      ADD         R1,R0
 00000054  4800      LDR         R0,=immon_high ; immon_high
 00000056  8001      STRH        R1,[R0,#0x0] ; immon_high
   67:             ER_CON=0;           // clear ER_CON resister
 00000058  2100      MOV         R1,#0x0
 0000005A  4800      LDR         R0,=A2h + 0x90 ; A2h+144
 0000005C  7001      STRB        R1,[R0,#0x0] ; A2h+144
   68:             cal_high_done=1;
 0000005E  2101      MOV         R1,#0x1
 00000060  4800      LDR         R0,=cal_high_done ; cal_high_done
 00000062  7001      STRB        R1,[R0,#0x0] ; cal_high_done
   69:             break;
 00000064  E045      B           L_12  ; T=0x000000F2
   71:         case 3:                 // calculate compensation slope and offset
 00000066          L_15:
   72:             if((cal_low_done==1) && (cal_high_done=1)){
 00000066  4800      LDR         R0,=cal_low_done ; cal_low_done
 00000068  7800      LDRB        R0,[R0,#0x0] ; cal_low_done
 0000006A  2801      CMP         R0,#0x1
 0000006C  D141      BNE         L_12  ; T=0x000000F2
 0000006E  2101      MOV         R1,#0x1
 00000070  4800      LDR         R0,=cal_high_done ; cal_high_done
 00000072  7001      STRB        R1,[R0,#0x0] ; cal_high_done
   75:                 slope = 1000*(erref_low - erref_high)/(immon_high - immon_low);
 00000074  4800      LDR         R0,=erref_high ; erref_high
 00000076  8800      LDRH        R0,[R0,#0x0] ; erref_high
 00000078  1C01      MOV         R1,R0
 0000007A  4800      LDR         R0,=erref_low ; erref_low
 0000007C  8800      LDRH        R0,[R0,#0x0] ; erref_low
 0000007E  1A40      SUB         R0,R1
 00000080  49FA      LDR         R1,=0x3E8
 00000082  4348      MUL         R0,R1
 00000084  4800      LDR         R1,=immon_low ; immon_low
 00000086  8809      LDRH        R1,[R1,#0x0] ; immon_low
 00000088  1C0A      MOV         R2,R1
 0000008A  4800      LDR         R1,=immon_high ; immon_high
 0000008C  8809      LDRH        R1,[R1,#0x0] ; immon_high
 0000008E  1A89      SUB         R1,R2
 00000090  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000092  FFB6      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000094  1C08      MOV         R0,R1
 00000096  4800      LDR         R0,=slope ; slope
 00000098  8001      STRH        R1,[R0,#0x0] ; slope
   76:                 offset = erref_low + (slope * immon_low)/1000;
 0000009A  4800      LDR         R0,=immon_low ; immon_low
 0000009C  8800      LDRH        R0,[R0,#0x0] ; immon_low
 0000009E  1C01      MOV         R1,R0
 000000A0  4800      LDR         R0,=slope ; slope
 000000A2  8800      LDRH        R0,[R0,#0x0] ; slope
 000000A4  4348      MUL         R0,R1
 000000A6  49FA      LDR         R1,=0x3E8
 000000A8  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 000000AA  FFAA      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 000000AC  1C08      MOV         R0,R1
 000000AE  4800      LDR         R1,=erref_low ; erref_low
ARM COMPILER V2.32a,  ldd                                                                  08/08/05  09:50:22  PAGE 7   

 000000B0  8809      LDRH        R1,[R1,#0x0] ; erref_low
 000000B2  1809      ADD         R1,R0
 000000B4  4800      LDR         R0,=offset ; offset
 000000B6  8001      STRH        R1,[R0,#0x0] ; offset
   79:                 ER_SLOPE_MSB = slope>>8;
 000000B8  4800      LDR         R0,=slope ; slope
 000000BA  8800      LDRH        R0,[R0,#0x0] ; slope
 000000BC  1C01      MOV         R1,R0
 000000BE  0A09      LSR         R1,R1,#0x8
 000000C0  4800      LDR         R0,=A2h + 0x92 ; A2h+146
 000000C2  7001      STRB        R1,[R0,#0x0] ; A2h+146
   80:                 ER_SLOPE_LSB = slope&0x00FF;
 000000C4  4800      LDR         R0,=slope ; slope
 000000C6  8800      LDRH        R0,[R0,#0x0] ; slope
 000000C8  1C01      MOV         R1,R0
 000000CA  20FF      MOV         R0,#0xFF
 000000CC  4001      AND         R1,R0
 000000CE  4800      LDR         R0,=A2h + 0x93 ; A2h+147
 000000D0  7001      STRB        R1,[R0,#0x0] ; A2h+147
   81:                 ER_OFFSET_MSB = offset>>8;
 000000D2  4800      LDR         R0,=offset ; offset
 000000D4  8800      LDRH        R0,[R0,#0x0] ; offset
 000000D6  1C01      MOV         R1,R0
 000000D8  0A09      LSR         R1,R1,#0x8
 000000DA  4800      LDR         R0,=A2h + 0x94 ; A2h+148
 000000DC  7001      STRB        R1,[R0,#0x0] ; A2h+148
   82:                 ER_OFFSET_LSB = offset&0xFF;
 000000DE  4800      LDR         R0,=offset ; offset
 000000E0  8800      LDRH        R0,[R0,#0x0] ; offset
 000000E2  1C01      MOV         R1,R0
 000000E4  20FF      MOV         R0,#0xFF
 000000E6  4001      AND         R1,R0
 000000E8  4800      LDR         R0,=A2h + 0x95 ; A2h+149
 000000EA  7001      STRB        R1,[R0,#0x0] ; A2h+149
   83:                 ER_CON=0;     // clear ER_CON resistser
 000000EC  2100      MOV         R1,#0x0
 000000EE  4800      LDR         R0,=A2h + 0x90 ; A2h+144
 000000F0  7001      STRB        R1,[R0,#0x0] ; A2h+144
   87:     }
 000000F2          L_12:
   88: }
 000000F2  B001      ADD         R13,#0x4
 000000F4  BC08      POP         {R3}
 000000F6  4718      BX          R3
 000000F8          ENDP ; 'ErCalibration?T'


*** CODE SEGMENT '?PR?ErCompensation?T?ldd':
   95: void ErCompensation(void){
 00000000  B500      PUSH        {LR}
 00000002  B084      SUB         R13,#0x10
 00000004            ; SCOPE-START
   99:     immon = (TXMOD_RAWDAT_MSB<<8) + TXMOD_RAWDAT_LSB;                   // read Immon
 00000004  4800      LDR         R0,=A2h + 0x96 ; A2h+150
 00000006  7800      LDRB        R0,[R0,#0x0] ; A2h+150
 00000008  1C01      MOV         R1,R0
 0000000A  0209      LSL         R1,R1,#0x8
 0000000C  4800      LDR         R0,=A2h + 0x97 ; A2h+151
 0000000E  7800      LDRB        R0,[R0,#0x0] ; A2h+151
 00000010  1809      ADD         R1,R0
 00000012  A801      ADD         R0,R13,#0x4
 00000014  8001      STRH        R1,[R0,#0x0] ; immon
  100:     slope = (ER_SLOPE_MSB<<8) + ER_SLOPE_LSB;
 00000016  4800      LDR         R0,=A2h + 0x92 ; A2h+146
 00000018  7800      LDRB        R0,[R0,#0x0] ; A2h+146
 0000001A  1C01      MOV         R1,R0
 0000001C  0209      LSL         R1,R1,#0x8
 0000001E  4800      LDR         R0,=A2h + 0x93 ; A2h+147
ARM COMPILER V2.32a,  ldd                                                                  08/08/05  09:50:22  PAGE 8   

 00000020  7800      LDRB        R0,[R0,#0x0] ; A2h+147
 00000022  1809      ADD         R1,R0
 00000024  A802      ADD         R0,R13,#0x8
 00000026  8001      STRH        R1,[R0,#0x0] ; slope
  101:     offset = (ER_OFFSET_MSB<<8) + ER_OFFSET_LSB;    
 00000028  4800      LDR         R0,=A2h + 0x94 ; A2h+148
 0000002A  7800      LDRB        R0,[R0,#0x0] ; A2h+148
 0000002C  1C01      MOV         R1,R0
 0000002E  0209      LSL         R1,R1,#0x8
 00000030  4800      LDR         R0,=A2h + 0x95 ; A2h+149
 00000032  7800      LDRB        R0,[R0,#0x0] ; A2h+149
 00000034  1809      ADD         R1,R0
 00000036  A803      ADD         R0,R13,#0xC
 00000038  8001      STRH        R1,[R0,#0x0] ; offset
  103:     if(offset > (slope  * immon / 1000)){
 0000003A  A801      ADD         R0,R13,#0x4
 0000003C  8800      LDRH        R0,[R0,#0x0] ; immon
 0000003E  1C01      MOV         R1,R0
 00000040  A802      ADD         R0,R13,#0x8
 00000042  8800      LDRH        R0,[R0,#0x0] ; slope
 00000044  4348      MUL         R0,R1
 00000046  49FA      LDR         R1,=0x3E8
 00000048  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 0000004A  FFDA      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 0000004C  1C08      MOV         R0,R1
 0000004E  A903      ADD         R1,R13,#0xC
 00000050  8809      LDRH        R1,[R1,#0x0] ; offset
 00000052  4281      CMP         R1,R0
 00000054  D921      BLS         L_17  ; T=0x0000009A
  104:         erref = offset - (slope * immon / 1000);        // find compensated erref
 00000056  A801      ADD         R0,R13,#0x4
 00000058  8800      LDRH        R0,[R0,#0x0] ; immon
 0000005A  1C01      MOV         R1,R0
 0000005C  A802      ADD         R0,R13,#0x8
 0000005E  8800      LDRH        R0,[R0,#0x0] ; slope
 00000060  4348      MUL         R0,R1
 00000062  49FA      LDR         R1,=0x3E8
 00000064  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000066  FFCC      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000068  1C08      MOV         R0,R1
 0000006A  A903      ADD         R1,R13,#0xC
 0000006C  8809      LDRH        R1,[R1,#0x0] ; offset
 0000006E  1A09      SUB         R1,R0
 00000070  A800      ADD         R0,R13,#0x0
 00000072  8001      STRH        R1,[R0,#0x0] ; erref
  105:         DAC1DAT = erref<<16;                            // update ERREF voltage
 00000074  A800      ADD         R0,R13,#0x0
 00000076  8800      LDRH        R0,[R0,#0x0] ; erref
 00000078  1C01      MOV         R1,R0
 0000007A  0409      LSL         R1,R1,#0x10
 0000007C  4800      LDR         R0,=0xFFFF060C
 0000007E  6001      STR         R1,[R0,#0x0]
  108:     ER_MSB = erref>>8;
 00000080  A800      ADD         R0,R13,#0x0
 00000082  8800      LDRH        R0,[R0,#0x0] ; erref
 00000084  1C01      MOV         R1,R0
 00000086  0A09      LSR         R1,R1,#0x8
 00000088  4800      LDR         R0,=A2h + 0xFA ; A2h+250
 0000008A  7001      STRB        R1,[R0,#0x0] ; A2h+250
  109:     ER_LSB = erref&0x00FF;
 0000008C  A800      ADD         R0,R13,#0x0
 0000008E  8800      LDRH        R0,[R0,#0x0] ; erref
 00000090  1C01      MOV         R1,R0
 00000092  20FF      MOV         R0,#0xFF
 00000094  4001      AND         R1,R0
 00000096  4800      LDR         R0,=A2h + 0xFB ; A2h+251
ARM COMPILER V2.32a,  ldd                                                                  08/08/05  09:50:22  PAGE 9   

 00000098  7001      STRB        R1,[R0,#0x0] ; A2h+251
  111:     }
 0000009A          L_17:
 0000009A            ; SCOPE-END
  112: }
 0000009A  B004      ADD         R13,#0x10
 0000009C  BC08      POP         {R3}
 0000009E  4718      BX          R3
 000000A0          ENDP ; 'ErCompensation?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =        14
  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 + -