📄 ldd.lst
字号:
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 + -