753 lines
48 KiB
Plaintext
753 lines
48 KiB
Plaintext
1 ;--------------------------------------------------------
|
|
2 ; File Created by SDCC : free open source ANSI-C Compiler
|
|
3 ; Version 4.2.0 #13081 (Linux)
|
|
4 ;--------------------------------------------------------
|
|
5 .module eeprom
|
|
6 .optsdcc -mmcs51 --model-small
|
|
7
|
|
8 ;--------------------------------------------------------
|
|
9 ; Public variables in this module
|
|
10 ;--------------------------------------------------------
|
|
11 .globl _delay_ms
|
|
12 .globl _EADC
|
|
13 .globl _ET1
|
|
14 .globl _ET0
|
|
15 .globl _ES
|
|
16 .globl _EA
|
|
17 .globl _REN
|
|
18 .globl _RI
|
|
19 .globl _TI
|
|
20 .globl _TR1
|
|
21 .globl _TF1
|
|
22 .globl _IT0
|
|
23 .globl _IE0
|
|
24 .globl _TR0
|
|
25 .globl _TF0
|
|
26 .globl _CMPCR2
|
|
27 .globl _CMPCR1
|
|
28 .globl _TA
|
|
29 .globl _IRCBAND_REG
|
|
30 .globl _IAP_TPS
|
|
31 .globl _IAP_CONTR
|
|
32 .globl _IAP_TRIG
|
|
33 .globl _IAP_CMD
|
|
34 .globl _IAP_ADDRL
|
|
35 .globl _IAP_ADDRH
|
|
36 .globl _IAP_DATA
|
|
37 .globl _WDT_CONTR
|
|
38 .globl _PCA_PWM3
|
|
39 .globl _PCA_PWM2
|
|
40 .globl _PCA_PWM1
|
|
41 .globl _PCA_PWM0
|
|
42 .globl _CCAP3L
|
|
43 .globl _CCAP2L
|
|
44 .globl _CCAP1L
|
|
45 .globl _CCAP0L
|
|
46 .globl _CCAPM3
|
|
47 .globl _CCAPM2
|
|
48 .globl _CCAPM1
|
|
49 .globl _CCAPM0
|
|
50 .globl _CMOD
|
|
51 .globl _CCON
|
|
52 .globl _ADCTIM_X
|
|
53 .globl _ADCCFG
|
|
54 .globl _ADC_RESL
|
|
55 .globl _ADC_RES
|
|
56 .globl _ADC_CONTR
|
|
57 .globl _SPDAT
|
|
58 .globl _SPCTL
|
|
59 .globl _SPSTAT
|
|
60 .globl _IP2H
|
|
61 .globl _IP2
|
|
62 .globl _IP
|
|
63 .globl _IE2
|
|
64 .globl _IE
|
|
65 .globl _BRT
|
|
66 .globl _P_SW1
|
|
67 .globl _SADEN
|
|
68 .globl _SADDR
|
|
69 .globl _S2BUF
|
|
70 .globl _S2CON
|
|
71 .globl _SBUF
|
|
72 .globl _SCON
|
|
73 .globl _TM4PS_X
|
|
74 .globl _TM3PS_X
|
|
75 .globl _TM2PS_X
|
|
76 .globl _T4T3M
|
|
77 .globl _T4L
|
|
78 .globl _T4H
|
|
79 .globl _T3L
|
|
80 .globl _T3H
|
|
81 .globl _T2L
|
|
82 .globl _T2H
|
|
83 .globl _INTCLKO
|
|
84 .globl _AUXR
|
|
85 .globl _TH1
|
|
86 .globl _TH0
|
|
87 .globl _TL1
|
|
88 .globl _TL0
|
|
89 .globl _TMOD
|
|
90 .globl _TCON
|
|
91 .globl _P_SW2
|
|
92 .globl _P5M0
|
|
93 .globl _P5M1
|
|
94 .globl _P4M0
|
|
95 .globl _P4M1
|
|
96 .globl _P3M0
|
|
97 .globl _P3M1
|
|
98 .globl _P2M0
|
|
99 .globl _P2M1
|
|
100 .globl _P1M0
|
|
101 .globl _P1M1
|
|
102 .globl _P0M0
|
|
103 .globl _P0M1
|
|
104 .globl _PSW
|
|
105 .globl _B
|
|
106 .globl _ACC
|
|
107 .globl _PCON
|
|
108 .globl _DPH
|
|
109 .globl _DPL
|
|
110 .globl _SP
|
|
111 .globl _P5
|
|
112 .globl _P4
|
|
113 .globl _P3
|
|
114 .globl _P2
|
|
115 .globl _P1
|
|
116 .globl _P0
|
|
117 .globl _eeprom_write_PARM_3
|
|
118 .globl _eeprom_write_PARM_2
|
|
119 .globl _eeprom_read_PARM_3
|
|
120 .globl _eeprom_read_PARM_2
|
|
121 .globl _eeprom_init
|
|
122 .globl _eeprom_read
|
|
123 .globl _eeprom_write
|
|
124 .globl _eeprom_format
|
|
125 ;--------------------------------------------------------
|
|
126 ; special function registers
|
|
127 ;--------------------------------------------------------
|
|
128 .area RSEG (ABS,DATA)
|
|
000000 129 .org 0x0000
|
|
000080 130 _P0 = 0x0080
|
|
000090 131 _P1 = 0x0090
|
|
0000A0 132 _P2 = 0x00a0
|
|
0000B0 133 _P3 = 0x00b0
|
|
0000C0 134 _P4 = 0x00c0
|
|
0000C8 135 _P5 = 0x00c8
|
|
000081 136 _SP = 0x0081
|
|
000082 137 _DPL = 0x0082
|
|
000083 138 _DPH = 0x0083
|
|
000087 139 _PCON = 0x0087
|
|
0000E0 140 _ACC = 0x00e0
|
|
0000F0 141 _B = 0x00f0
|
|
0000D0 142 _PSW = 0x00d0
|
|
000093 143 _P0M1 = 0x0093
|
|
000094 144 _P0M0 = 0x0094
|
|
000091 145 _P1M1 = 0x0091
|
|
000092 146 _P1M0 = 0x0092
|
|
000095 147 _P2M1 = 0x0095
|
|
000096 148 _P2M0 = 0x0096
|
|
0000B1 149 _P3M1 = 0x00b1
|
|
0000B2 150 _P3M0 = 0x00b2
|
|
0000B3 151 _P4M1 = 0x00b3
|
|
0000B4 152 _P4M0 = 0x00b4
|
|
0000C9 153 _P5M1 = 0x00c9
|
|
0000CA 154 _P5M0 = 0x00ca
|
|
0000BA 155 _P_SW2 = 0x00ba
|
|
000088 156 _TCON = 0x0088
|
|
000089 157 _TMOD = 0x0089
|
|
00008A 158 _TL0 = 0x008a
|
|
00008B 159 _TL1 = 0x008b
|
|
00008C 160 _TH0 = 0x008c
|
|
00008D 161 _TH1 = 0x008d
|
|
00008E 162 _AUXR = 0x008e
|
|
00008F 163 _INTCLKO = 0x008f
|
|
0000D6 164 _T2H = 0x00d6
|
|
0000D7 165 _T2L = 0x00d7
|
|
0000D4 166 _T3H = 0x00d4
|
|
0000D5 167 _T3L = 0x00d5
|
|
0000D2 168 _T4H = 0x00d2
|
|
0000D3 169 _T4L = 0x00d3
|
|
0000D1 170 _T4T3M = 0x00d1
|
|
00FEA1 171 _TM2PS_X = 0xfea1
|
|
00FEA2 172 _TM3PS_X = 0xfea2
|
|
00FEA3 173 _TM4PS_X = 0xfea3
|
|
000098 174 _SCON = 0x0098
|
|
000099 175 _SBUF = 0x0099
|
|
00009A 176 _S2CON = 0x009a
|
|
00009B 177 _S2BUF = 0x009b
|
|
0000A9 178 _SADDR = 0x00a9
|
|
0000B9 179 _SADEN = 0x00b9
|
|
0000A2 180 _P_SW1 = 0x00a2
|
|
00009C 181 _BRT = 0x009c
|
|
0000A8 182 _IE = 0x00a8
|
|
0000AF 183 _IE2 = 0x00af
|
|
0000B8 184 _IP = 0x00b8
|
|
0000B6 185 _IP2 = 0x00b6
|
|
0000B7 186 _IP2H = 0x00b7
|
|
0000CD 187 _SPSTAT = 0x00cd
|
|
0000CE 188 _SPCTL = 0x00ce
|
|
0000CF 189 _SPDAT = 0x00cf
|
|
0000BC 190 _ADC_CONTR = 0x00bc
|
|
0000BD 191 _ADC_RES = 0x00bd
|
|
0000BE 192 _ADC_RESL = 0x00be
|
|
0000DE 193 _ADCCFG = 0x00de
|
|
00FEA8 194 _ADCTIM_X = 0xfea8
|
|
0000D8 195 _CCON = 0x00d8
|
|
0000D9 196 _CMOD = 0x00d9
|
|
0000DA 197 _CCAPM0 = 0x00da
|
|
0000DB 198 _CCAPM1 = 0x00db
|
|
0000DC 199 _CCAPM2 = 0x00dc
|
|
0000DD 200 _CCAPM3 = 0x00dd
|
|
0000EA 201 _CCAP0L = 0x00ea
|
|
0000EB 202 _CCAP1L = 0x00eb
|
|
0000EC 203 _CCAP2L = 0x00ec
|
|
0000ED 204 _CCAP3L = 0x00ed
|
|
0000F2 205 _PCA_PWM0 = 0x00f2
|
|
0000F3 206 _PCA_PWM1 = 0x00f3
|
|
0000F4 207 _PCA_PWM2 = 0x00f4
|
|
0000F5 208 _PCA_PWM3 = 0x00f5
|
|
0000C1 209 _WDT_CONTR = 0x00c1
|
|
0000C2 210 _IAP_DATA = 0x00c2
|
|
0000C3 211 _IAP_ADDRH = 0x00c3
|
|
0000C4 212 _IAP_ADDRL = 0x00c4
|
|
0000C5 213 _IAP_CMD = 0x00c5
|
|
0000C6 214 _IAP_TRIG = 0x00c6
|
|
0000C7 215 _IAP_CONTR = 0x00c7
|
|
0000F7 216 _IAP_TPS = 0x00f7
|
|
00009D 217 _IRCBAND_REG = 0x009d
|
|
0000AE 218 _TA = 0x00ae
|
|
0000E6 219 _CMPCR1 = 0x00e6
|
|
0000E7 220 _CMPCR2 = 0x00e7
|
|
221 ;--------------------------------------------------------
|
|
222 ; special function bits
|
|
223 ;--------------------------------------------------------
|
|
224 .area RSEG (ABS,DATA)
|
|
000000 225 .org 0x0000
|
|
00008D 226 _TF0 = 0x008d
|
|
00008C 227 _TR0 = 0x008c
|
|
000089 228 _IE0 = 0x0089
|
|
000088 229 _IT0 = 0x0088
|
|
00008F 230 _TF1 = 0x008f
|
|
00008E 231 _TR1 = 0x008e
|
|
000099 232 _TI = 0x0099
|
|
000098 233 _RI = 0x0098
|
|
00009C 234 _REN = 0x009c
|
|
0000AF 235 _EA = 0x00af
|
|
0000AC 236 _ES = 0x00ac
|
|
0000A9 237 _ET0 = 0x00a9
|
|
0000AB 238 _ET1 = 0x00ab
|
|
0000AD 239 _EADC = 0x00ad
|
|
240 ;--------------------------------------------------------
|
|
241 ; overlayable register banks
|
|
242 ;--------------------------------------------------------
|
|
243 .area REG_BANK_0 (REL,OVR,DATA)
|
|
000000 244 .ds 8
|
|
245 ;--------------------------------------------------------
|
|
246 ; internal ram data
|
|
247 ;--------------------------------------------------------
|
|
248 .area DSEG (DATA)
|
|
000000 249 _iap_write_PARM_2:
|
|
000000 250 .ds 1
|
|
000001 251 _eeprom_read_PARM_2:
|
|
000001 252 .ds 3
|
|
000004 253 _eeprom_read_PARM_3:
|
|
000004 254 .ds 3
|
|
000007 255 _eeprom_write_PARM_2:
|
|
000007 256 .ds 1
|
|
000008 257 _eeprom_write_PARM_3:
|
|
000008 258 .ds 3
|
|
259 ;--------------------------------------------------------
|
|
260 ; overlayable items in internal ram
|
|
261 ;--------------------------------------------------------
|
|
262 ;--------------------------------------------------------
|
|
263 ; indirectly addressable internal ram data
|
|
264 ;--------------------------------------------------------
|
|
265 .area ISEG (DATA)
|
|
266 ;--------------------------------------------------------
|
|
267 ; absolute internal ram data
|
|
268 ;--------------------------------------------------------
|
|
269 .area IABS (ABS,DATA)
|
|
270 .area IABS (ABS,DATA)
|
|
271 ;--------------------------------------------------------
|
|
272 ; bit data
|
|
273 ;--------------------------------------------------------
|
|
274 .area BSEG (BIT)
|
|
275 ;--------------------------------------------------------
|
|
276 ; paged external ram data
|
|
277 ;--------------------------------------------------------
|
|
278 .area PSEG (PAG,XDATA)
|
|
279 ;--------------------------------------------------------
|
|
280 ; external ram data
|
|
281 ;--------------------------------------------------------
|
|
282 .area XSEG (XDATA)
|
|
283 ;--------------------------------------------------------
|
|
284 ; absolute external ram data
|
|
285 ;--------------------------------------------------------
|
|
286 .area XABS (ABS,XDATA)
|
|
287 ;--------------------------------------------------------
|
|
288 ; external initialized ram data
|
|
289 ;--------------------------------------------------------
|
|
290 .area XISEG (XDATA)
|
|
291 .area HOME (CODE)
|
|
292 .area GSINIT0 (CODE)
|
|
293 .area GSINIT1 (CODE)
|
|
294 .area GSINIT2 (CODE)
|
|
295 .area GSINIT3 (CODE)
|
|
296 .area GSINIT4 (CODE)
|
|
297 .area GSINIT5 (CODE)
|
|
298 .area GSINIT (CODE)
|
|
299 .area GSFINAL (CODE)
|
|
300 .area CSEG (CODE)
|
|
301 ;--------------------------------------------------------
|
|
302 ; global & static initialisations
|
|
303 ;--------------------------------------------------------
|
|
304 .area HOME (CODE)
|
|
305 .area GSINIT (CODE)
|
|
306 .area GSFINAL (CODE)
|
|
307 .area GSINIT (CODE)
|
|
308 ;--------------------------------------------------------
|
|
309 ; Home
|
|
310 ;--------------------------------------------------------
|
|
311 .area HOME (CODE)
|
|
312 .area HOME (CODE)
|
|
313 ;--------------------------------------------------------
|
|
314 ; code
|
|
315 ;--------------------------------------------------------
|
|
316 .area CSEG (CODE)
|
|
317 ;------------------------------------------------------------
|
|
318 ;Allocation info for local variables in function 'unlock_special'
|
|
319 ;------------------------------------------------------------
|
|
320 ; src/eeprom.c:31: static void unlock_special(void)
|
|
321 ; -----------------------------------------
|
|
322 ; function unlock_special
|
|
323 ; -----------------------------------------
|
|
000000 324 _unlock_special:
|
|
000007 325 ar7 = 0x07
|
|
000006 326 ar6 = 0x06
|
|
000005 327 ar5 = 0x05
|
|
000004 328 ar4 = 0x04
|
|
000003 329 ar3 = 0x03
|
|
000002 330 ar2 = 0x02
|
|
000001 331 ar1 = 0x01
|
|
000000 332 ar0 = 0x00
|
|
333 ; src/eeprom.c:33: TA = 0xAA;
|
|
000000 75 AE AA [24] 334 mov _TA,#0xaa
|
|
335 ; src/eeprom.c:34: TA = 0x55;
|
|
000003 75 AE 55 [24] 336 mov _TA,#0x55
|
|
337 ; src/eeprom.c:35: }
|
|
000006 22 [24] 338 ret
|
|
339 ;------------------------------------------------------------
|
|
340 ;Allocation info for local variables in function 'iap_idle'
|
|
341 ;------------------------------------------------------------
|
|
342 ; src/eeprom.c:38: static void iap_idle(void)
|
|
343 ; -----------------------------------------
|
|
344 ; function iap_idle
|
|
345 ; -----------------------------------------
|
|
000007 346 _iap_idle:
|
|
347 ; src/eeprom.c:40: IAP_CONTR = 0;
|
|
000007 75 C7 00 [24] 348 mov _IAP_CONTR,#0x00
|
|
349 ; src/eeprom.c:41: IAP_CMD = 0;
|
|
00000A 75 C5 00 [24] 350 mov _IAP_CMD,#0x00
|
|
351 ; src/eeprom.c:42: IAP_TRIG = 0;
|
|
00000D 75 C6 00 [24] 352 mov _IAP_TRIG,#0x00
|
|
353 ; src/eeprom.c:43: }
|
|
000010 22 [24] 354 ret
|
|
355 ;------------------------------------------------------------
|
|
356 ;Allocation info for local variables in function 'iap_read'
|
|
357 ;------------------------------------------------------------
|
|
358 ;addr Allocated to registers r6 r7
|
|
359 ;val Allocated to registers r7
|
|
360 ;------------------------------------------------------------
|
|
361 ; src/eeprom.c:45: static uint8_t iap_read(uint16_t addr)
|
|
362 ; -----------------------------------------
|
|
363 ; function iap_read
|
|
364 ; -----------------------------------------
|
|
000011 365 _iap_read:
|
|
000011 AE 82 [24] 366 mov r6,dpl
|
|
000013 AF 83 [24] 367 mov r7,dph
|
|
368 ; src/eeprom.c:48: EA = 0;
|
|
369 ; assignBit
|
|
000015 C2 AF [12] 370 clr _EA
|
|
371 ; src/eeprom.c:49: IAP_CONTR = IAP_EN | IAP_CMD_WAIT;
|
|
000017 75 C7 80 [24] 372 mov _IAP_CONTR,#0x80
|
|
373 ; src/eeprom.c:50: IAP_CMD = 1; /* READ */
|
|
00001A 75 C5 01 [24] 374 mov _IAP_CMD,#0x01
|
|
375 ; src/eeprom.c:51: IAP_ADDRH = (uint8_t)(addr >> 8);
|
|
00001D 8F C3 [24] 376 mov _IAP_ADDRH,r7
|
|
377 ; src/eeprom.c:52: IAP_ADDRL = (uint8_t)(addr & 0xFF);
|
|
00001F 8E C4 [24] 378 mov _IAP_ADDRL,r6
|
|
379 ; src/eeprom.c:53: IAP_TRIG = 0x5A;
|
|
000021 75 C6 5A [24] 380 mov _IAP_TRIG,#0x5a
|
|
381 ; src/eeprom.c:54: IAP_TRIG = 0xA5;
|
|
000024 75 C6 A5 [24] 382 mov _IAP_TRIG,#0xa5
|
|
383 ; src/eeprom.c:55: _nop_();
|
|
000027 12r00r00 [24] 384 lcall __nop_
|
|
385 ; src/eeprom.c:56: _nop_();
|
|
00002A 12r00r00 [24] 386 lcall __nop_
|
|
387 ; src/eeprom.c:57: val = IAP_DATA;
|
|
00002D AF C2 [24] 388 mov r7,_IAP_DATA
|
|
389 ; src/eeprom.c:58: iap_idle();
|
|
00002F C0 07 [24] 390 push ar7
|
|
000031 12r00r07 [24] 391 lcall _iap_idle
|
|
000034 D0 07 [24] 392 pop ar7
|
|
393 ; src/eeprom.c:59: EA = 1;
|
|
394 ; assignBit
|
|
000036 D2 AF [12] 395 setb _EA
|
|
396 ; src/eeprom.c:60: return val;
|
|
000038 8F 82 [24] 397 mov dpl,r7
|
|
398 ; src/eeprom.c:61: }
|
|
00003A 22 [24] 399 ret
|
|
400 ;------------------------------------------------------------
|
|
401 ;Allocation info for local variables in function 'iap_erase'
|
|
402 ;------------------------------------------------------------
|
|
403 ;sector_addr Allocated to registers r6 r7
|
|
404 ;------------------------------------------------------------
|
|
405 ; src/eeprom.c:64: static void iap_erase(uint16_t sector_addr)
|
|
406 ; -----------------------------------------
|
|
407 ; function iap_erase
|
|
408 ; -----------------------------------------
|
|
00003B 409 _iap_erase:
|
|
00003B AE 82 [24] 410 mov r6,dpl
|
|
00003D AF 83 [24] 411 mov r7,dph
|
|
412 ; src/eeprom.c:66: EA = 0;
|
|
413 ; assignBit
|
|
00003F C2 AF [12] 414 clr _EA
|
|
415 ; src/eeprom.c:67: IAP_CONTR = IAP_EN | IAP_CMD_WAIT;
|
|
000041 75 C7 80 [24] 416 mov _IAP_CONTR,#0x80
|
|
417 ; src/eeprom.c:68: IAP_CMD = 3; /* ERASE */
|
|
000044 75 C5 03 [24] 418 mov _IAP_CMD,#0x03
|
|
419 ; src/eeprom.c:69: IAP_ADDRH = (uint8_t)(sector_addr >> 8);
|
|
000047 8F C3 [24] 420 mov _IAP_ADDRH,r7
|
|
421 ; src/eeprom.c:70: IAP_ADDRL = (uint8_t)(sector_addr & 0xFF);
|
|
000049 8E C4 [24] 422 mov _IAP_ADDRL,r6
|
|
423 ; src/eeprom.c:71: IAP_TRIG = 0x5A;
|
|
00004B 75 C6 5A [24] 424 mov _IAP_TRIG,#0x5a
|
|
425 ; src/eeprom.c:72: IAP_TRIG = 0xA5;
|
|
00004E 75 C6 A5 [24] 426 mov _IAP_TRIG,#0xa5
|
|
427 ; src/eeprom.c:74: delay_ms(10);
|
|
000051 90 00 0A [24] 428 mov dptr,#0x000a
|
|
000054 12r00r00 [24] 429 lcall _delay_ms
|
|
430 ; src/eeprom.c:75: iap_idle();
|
|
000057 12r00r07 [24] 431 lcall _iap_idle
|
|
432 ; src/eeprom.c:76: EA = 1;
|
|
433 ; assignBit
|
|
00005A D2 AF [12] 434 setb _EA
|
|
435 ; src/eeprom.c:77: }
|
|
00005C 22 [24] 436 ret
|
|
437 ;------------------------------------------------------------
|
|
438 ;Allocation info for local variables in function 'iap_write'
|
|
439 ;------------------------------------------------------------
|
|
440 ;val Allocated with name '_iap_write_PARM_2'
|
|
441 ;addr Allocated to registers r6 r7
|
|
442 ;------------------------------------------------------------
|
|
443 ; src/eeprom.c:79: static void iap_write(uint16_t addr, uint8_t val)
|
|
444 ; -----------------------------------------
|
|
445 ; function iap_write
|
|
446 ; -----------------------------------------
|
|
00005D 447 _iap_write:
|
|
00005D AE 82 [24] 448 mov r6,dpl
|
|
00005F AF 83 [24] 449 mov r7,dph
|
|
450 ; src/eeprom.c:81: EA = 0;
|
|
451 ; assignBit
|
|
000061 C2 AF [12] 452 clr _EA
|
|
453 ; src/eeprom.c:82: IAP_CONTR = IAP_EN | IAP_CMD_WAIT;
|
|
000063 75 C7 80 [24] 454 mov _IAP_CONTR,#0x80
|
|
455 ; src/eeprom.c:83: IAP_CMD = 2; /* WRITE */
|
|
000066 75 C5 02 [24] 456 mov _IAP_CMD,#0x02
|
|
457 ; src/eeprom.c:84: IAP_ADDRH = (uint8_t)(addr >> 8);
|
|
000069 8F C3 [24] 458 mov _IAP_ADDRH,r7
|
|
459 ; src/eeprom.c:85: IAP_ADDRL = (uint8_t)(addr & 0xFF);
|
|
00006B 8E C4 [24] 460 mov _IAP_ADDRL,r6
|
|
461 ; src/eeprom.c:86: IAP_DATA = val;
|
|
00006D 85*00 C2 [24] 462 mov _IAP_DATA,_iap_write_PARM_2
|
|
463 ; src/eeprom.c:87: IAP_TRIG = 0x5A;
|
|
000070 75 C6 5A [24] 464 mov _IAP_TRIG,#0x5a
|
|
465 ; src/eeprom.c:88: IAP_TRIG = 0xA5;
|
|
000073 75 C6 A5 [24] 466 mov _IAP_TRIG,#0xa5
|
|
467 ; src/eeprom.c:89: _nop_();
|
|
000076 12r00r00 [24] 468 lcall __nop_
|
|
469 ; src/eeprom.c:90: _nop_();
|
|
000079 12r00r00 [24] 470 lcall __nop_
|
|
471 ; src/eeprom.c:91: iap_idle();
|
|
00007C 12r00r07 [24] 472 lcall _iap_idle
|
|
473 ; src/eeprom.c:92: EA = 1;
|
|
474 ; assignBit
|
|
00007F D2 AF [12] 475 setb _EA
|
|
476 ; src/eeprom.c:93: }
|
|
000081 22 [24] 477 ret
|
|
478 ;------------------------------------------------------------
|
|
479 ;Allocation info for local variables in function 'eeprom_init'
|
|
480 ;------------------------------------------------------------
|
|
481 ;m0 Allocated to registers r7
|
|
482 ;m1 Allocated to registers r6
|
|
483 ;------------------------------------------------------------
|
|
484 ; src/eeprom.c:95: uint8_t eeprom_init(void)
|
|
485 ; -----------------------------------------
|
|
486 ; function eeprom_init
|
|
487 ; -----------------------------------------
|
|
000082 488 _eeprom_init:
|
|
489 ; src/eeprom.c:98: uint8_t m0 = iap_read(IAP_EEPROM_BASE);
|
|
000082 90 FC 00 [24] 490 mov dptr,#0xfc00
|
|
000085 12r00r11 [24] 491 lcall _iap_read
|
|
000088 AF 82 [24] 492 mov r7,dpl
|
|
493 ; src/eeprom.c:99: uint8_t m1 = iap_read(IAP_EEPROM_BASE + 1);
|
|
00008A 90 FC 01 [24] 494 mov dptr,#0xfc01
|
|
00008D C0 07 [24] 495 push ar7
|
|
00008F 12r00r11 [24] 496 lcall _iap_read
|
|
000092 AE 82 [24] 497 mov r6,dpl
|
|
000094 D0 07 [24] 498 pop ar7
|
|
499 ; src/eeprom.c:100: if (m0 == 'L' && m1 == '3') return EEPROM_OK;
|
|
000096 BF 4C 07 [24] 500 cjne r7,#0x4c,00102$
|
|
000099 BE 33 04 [24] 501 cjne r6,#0x33,00102$
|
|
00009C 75 82 00 [24] 502 mov dpl,#0x00
|
|
00009F 22 [24] 503 ret
|
|
0000A0 504 00102$:
|
|
505 ; src/eeprom.c:101: return EEPROM_ERR;
|
|
0000A0 75 82 01 [24] 506 mov dpl,#0x01
|
|
507 ; src/eeprom.c:102: }
|
|
0000A3 22 [24] 508 ret
|
|
509 ;------------------------------------------------------------
|
|
510 ;Allocation info for local variables in function 'eeprom_read'
|
|
511 ;------------------------------------------------------------
|
|
512 ;ch Allocated with name '_eeprom_read_PARM_2'
|
|
513 ;addr Allocated with name '_eeprom_read_PARM_3'
|
|
514 ;mode Allocated to registers r5 r6 r7
|
|
515 ;i Allocated to registers r7
|
|
516 ;------------------------------------------------------------
|
|
517 ; src/eeprom.c:104: uint8_t eeprom_read(uint8_t *mode, uint8_t *ch, uint8_t addr[5])
|
|
518 ; -----------------------------------------
|
|
519 ; function eeprom_read
|
|
520 ; -----------------------------------------
|
|
0000A4 521 _eeprom_read:
|
|
0000A4 AD 82 [24] 522 mov r5,dpl
|
|
0000A6 AE 83 [24] 523 mov r6,dph
|
|
0000A8 AF F0 [24] 524 mov r7,b
|
|
525 ; src/eeprom.c:106: if (mode) *mode = iap_read(IAP_EEPROM_BASE + 4);
|
|
0000AA ED [12] 526 mov a,r5
|
|
0000AB 4E [12] 527 orl a,r6
|
|
0000AC 60 1E [24] 528 jz 00102$
|
|
0000AE 90 FC 04 [24] 529 mov dptr,#0xfc04
|
|
0000B1 C0 07 [24] 530 push ar7
|
|
0000B3 C0 06 [24] 531 push ar6
|
|
0000B5 C0 05 [24] 532 push ar5
|
|
0000B7 12r00r11 [24] 533 lcall _iap_read
|
|
0000BA AC 82 [24] 534 mov r4,dpl
|
|
0000BC D0 05 [24] 535 pop ar5
|
|
0000BE D0 06 [24] 536 pop ar6
|
|
0000C0 D0 07 [24] 537 pop ar7
|
|
0000C2 8D 82 [24] 538 mov dpl,r5
|
|
0000C4 8E 83 [24] 539 mov dph,r6
|
|
0000C6 8F F0 [24] 540 mov b,r7
|
|
0000C8 EC [12] 541 mov a,r4
|
|
0000C9 12r00r00 [24] 542 lcall __gptrput
|
|
0000CC 543 00102$:
|
|
544 ; src/eeprom.c:107: if (ch) *ch = iap_read(IAP_EEPROM_BASE + 5);
|
|
0000CC E5*01 [12] 545 mov a,_eeprom_read_PARM_2
|
|
0000CE 45*02 [12] 546 orl a,(_eeprom_read_PARM_2 + 1)
|
|
0000D0 60 24 [24] 547 jz 00104$
|
|
0000D2 AD*01 [24] 548 mov r5,_eeprom_read_PARM_2
|
|
0000D4 AE*02 [24] 549 mov r6,(_eeprom_read_PARM_2 + 1)
|
|
0000D6 AF*03 [24] 550 mov r7,(_eeprom_read_PARM_2 + 2)
|
|
0000D8 90 FC 05 [24] 551 mov dptr,#0xfc05
|
|
0000DB C0 07 [24] 552 push ar7
|
|
0000DD C0 06 [24] 553 push ar6
|
|
0000DF C0 05 [24] 554 push ar5
|
|
0000E1 12r00r11 [24] 555 lcall _iap_read
|
|
0000E4 AC 82 [24] 556 mov r4,dpl
|
|
0000E6 D0 05 [24] 557 pop ar5
|
|
0000E8 D0 06 [24] 558 pop ar6
|
|
0000EA D0 07 [24] 559 pop ar7
|
|
0000EC 8D 82 [24] 560 mov dpl,r5
|
|
0000EE 8E 83 [24] 561 mov dph,r6
|
|
0000F0 8F F0 [24] 562 mov b,r7
|
|
0000F2 EC [12] 563 mov a,r4
|
|
0000F3 12r00r00 [24] 564 lcall __gptrput
|
|
0000F6 565 00104$:
|
|
566 ; src/eeprom.c:108: if (addr) {
|
|
0000F6 E5*04 [12] 567 mov a,_eeprom_read_PARM_3
|
|
0000F8 45*05 [12] 568 orl a,(_eeprom_read_PARM_3 + 1)
|
|
0000FA 60 43 [24] 569 jz 00107$
|
|
570 ; src/eeprom.c:109: for (uint8_t i = 0; i < 5; i++) {
|
|
0000FC 7F 00 [12] 571 mov r7,#0x00
|
|
0000FE 572 00109$:
|
|
0000FE BF 05 00 [24] 573 cjne r7,#0x05,00137$
|
|
000101 574 00137$:
|
|
000101 50 3C [24] 575 jnc 00107$
|
|
576 ; src/eeprom.c:110: addr[i] = iap_read(IAP_EEPROM_BASE + 6 + i);
|
|
000103 EF [12] 577 mov a,r7
|
|
000104 25*04 [12] 578 add a,_eeprom_read_PARM_3
|
|
000106 FC [12] 579 mov r4,a
|
|
000107 E4 [12] 580 clr a
|
|
000108 35*05 [12] 581 addc a,(_eeprom_read_PARM_3 + 1)
|
|
00010A FD [12] 582 mov r5,a
|
|
00010B AE*06 [24] 583 mov r6,(_eeprom_read_PARM_3 + 2)
|
|
00010D 8F 02 [24] 584 mov ar2,r7
|
|
00010F 7B 00 [12] 585 mov r3,#0x00
|
|
000111 74 06 [12] 586 mov a,#0x06
|
|
000113 2A [12] 587 add a,r2
|
|
000114 FA [12] 588 mov r2,a
|
|
000115 74 FC [12] 589 mov a,#0xfc
|
|
000117 3B [12] 590 addc a,r3
|
|
000118 FB [12] 591 mov r3,a
|
|
000119 8A 82 [24] 592 mov dpl,r2
|
|
00011B 8B 83 [24] 593 mov dph,r3
|
|
00011D C0 07 [24] 594 push ar7
|
|
00011F C0 06 [24] 595 push ar6
|
|
000121 C0 05 [24] 596 push ar5
|
|
000123 C0 04 [24] 597 push ar4
|
|
000125 12r00r11 [24] 598 lcall _iap_read
|
|
000128 AB 82 [24] 599 mov r3,dpl
|
|
00012A D0 04 [24] 600 pop ar4
|
|
00012C D0 05 [24] 601 pop ar5
|
|
00012E D0 06 [24] 602 pop ar6
|
|
000130 D0 07 [24] 603 pop ar7
|
|
000132 8C 82 [24] 604 mov dpl,r4
|
|
000134 8D 83 [24] 605 mov dph,r5
|
|
000136 8E F0 [24] 606 mov b,r6
|
|
000138 EB [12] 607 mov a,r3
|
|
000139 12r00r00 [24] 608 lcall __gptrput
|
|
609 ; src/eeprom.c:109: for (uint8_t i = 0; i < 5; i++) {
|
|
00013C 0F [12] 610 inc r7
|
|
00013D 80 BF [24] 611 sjmp 00109$
|
|
00013F 612 00107$:
|
|
613 ; src/eeprom.c:113: return EEPROM_OK;
|
|
00013F 75 82 00 [24] 614 mov dpl,#0x00
|
|
615 ; src/eeprom.c:114: }
|
|
000142 22 [24] 616 ret
|
|
617 ;------------------------------------------------------------
|
|
618 ;Allocation info for local variables in function 'eeprom_write'
|
|
619 ;------------------------------------------------------------
|
|
620 ;ch Allocated with name '_eeprom_write_PARM_2'
|
|
621 ;addr Allocated with name '_eeprom_write_PARM_3'
|
|
622 ;mode Allocated to registers r7
|
|
623 ;i Allocated to registers r6
|
|
624 ;cksum Allocated to registers r7
|
|
625 ;i Allocated to registers r6
|
|
626 ;------------------------------------------------------------
|
|
627 ; src/eeprom.c:116: uint8_t eeprom_write(uint8_t mode, uint8_t ch, const uint8_t addr[5])
|
|
628 ; -----------------------------------------
|
|
629 ; function eeprom_write
|
|
630 ; -----------------------------------------
|
|
000143 631 _eeprom_write:
|
|
000143 AF 82 [24] 632 mov r7,dpl
|
|
633 ; src/eeprom.c:119: iap_erase(IAP_EEPROM_BASE);
|
|
000145 90 FC 00 [24] 634 mov dptr,#0xfc00
|
|
000148 C0 07 [24] 635 push ar7
|
|
00014A 12r00r3B [24] 636 lcall _iap_erase
|
|
637 ; src/eeprom.c:122: iap_write(IAP_EEPROM_BASE + 0, 'L');
|
|
00014D 75*00 4C [24] 638 mov _iap_write_PARM_2,#0x4c
|
|
000150 90 FC 00 [24] 639 mov dptr,#0xfc00
|
|
000153 12r00r5D [24] 640 lcall _iap_write
|
|
641 ; src/eeprom.c:123: iap_write(IAP_EEPROM_BASE + 1, '3');
|
|
000156 75*00 33 [24] 642 mov _iap_write_PARM_2,#0x33
|
|
000159 90 FC 01 [24] 643 mov dptr,#0xfc01
|
|
00015C 12r00r5D [24] 644 lcall _iap_write
|
|
00015F D0 07 [24] 645 pop ar7
|
|
646 ; src/eeprom.c:124: iap_write(IAP_EEPROM_BASE + 4, mode);
|
|
000161 8F*00 [24] 647 mov _iap_write_PARM_2,r7
|
|
000163 90 FC 04 [24] 648 mov dptr,#0xfc04
|
|
000166 C0 07 [24] 649 push ar7
|
|
000168 12r00r5D [24] 650 lcall _iap_write
|
|
651 ; src/eeprom.c:125: iap_write(IAP_EEPROM_BASE + 5, ch);
|
|
00016B 85*07*00 [24] 652 mov _iap_write_PARM_2,_eeprom_write_PARM_2
|
|
00016E 90 FC 05 [24] 653 mov dptr,#0xfc05
|
|
000171 12r00r5D [24] 654 lcall _iap_write
|
|
000174 D0 07 [24] 655 pop ar7
|
|
656 ; src/eeprom.c:126: for (uint8_t i = 0; i < 5; i++) {
|
|
000176 7E 00 [12] 657 mov r6,#0x00
|
|
000178 658 00104$:
|
|
000178 BE 05 00 [24] 659 cjne r6,#0x05,00129$
|
|
00017B 660 00129$:
|
|
00017B 50 33 [24] 661 jnc 00101$
|
|
662 ; src/eeprom.c:127: iap_write(IAP_EEPROM_BASE + 6 + i, addr[i]);
|
|
00017D 8E 04 [24] 663 mov ar4,r6
|
|
00017F 7D 00 [12] 664 mov r5,#0x00
|
|
000181 74 06 [12] 665 mov a,#0x06
|
|
000183 2C [12] 666 add a,r4
|
|
000184 FC [12] 667 mov r4,a
|
|
000185 74 FC [12] 668 mov a,#0xfc
|
|
000187 3D [12] 669 addc a,r5
|
|
000188 FD [12] 670 mov r5,a
|
|
000189 EE [12] 671 mov a,r6
|
|
00018A 25*08 [12] 672 add a,_eeprom_write_PARM_3
|
|
00018C F9 [12] 673 mov r1,a
|
|
00018D E4 [12] 674 clr a
|
|
00018E 35*09 [12] 675 addc a,(_eeprom_write_PARM_3 + 1)
|
|
000190 FA [12] 676 mov r2,a
|
|
000191 AB*0A [24] 677 mov r3,(_eeprom_write_PARM_3 + 2)
|
|
000193 89 82 [24] 678 mov dpl,r1
|
|
000195 8A 83 [24] 679 mov dph,r2
|
|
000197 8B F0 [24] 680 mov b,r3
|
|
000199 12r00r00 [24] 681 lcall __gptrget
|
|
00019C F5*00 [12] 682 mov _iap_write_PARM_2,a
|
|
00019E 8C 82 [24] 683 mov dpl,r4
|
|
0001A0 8D 83 [24] 684 mov dph,r5
|
|
0001A2 C0 07 [24] 685 push ar7
|
|
0001A4 C0 06 [24] 686 push ar6
|
|
0001A6 12r00r5D [24] 687 lcall _iap_write
|
|
0001A9 D0 06 [24] 688 pop ar6
|
|
0001AB D0 07 [24] 689 pop ar7
|
|
690 ; src/eeprom.c:126: for (uint8_t i = 0; i < 5; i++) {
|
|
0001AD 0E [12] 691 inc r6
|
|
0001AE 80 C8 [24] 692 sjmp 00104$
|
|
0001B0 693 00101$:
|
|
694 ; src/eeprom.c:130: uint8_t cksum = mode ^ ch;
|
|
0001B0 E5*07 [12] 695 mov a,_eeprom_write_PARM_2
|
|
0001B2 62 07 [12] 696 xrl ar7,a
|
|
697 ; src/eeprom.c:131: for (uint8_t i = 0; i < 5; i++) cksum ^= addr[i];
|
|
0001B4 7E 00 [12] 698 mov r6,#0x00
|
|
0001B6 699 00107$:
|
|
0001B6 BE 05 00 [24] 700 cjne r6,#0x05,00131$
|
|
0001B9 701 00131$:
|
|
0001B9 50 19 [24] 702 jnc 00102$
|
|
0001BB EE [12] 703 mov a,r6
|
|
0001BC 25*08 [12] 704 add a,_eeprom_write_PARM_3
|
|
0001BE FB [12] 705 mov r3,a
|
|
0001BF E4 [12] 706 clr a
|
|
0001C0 35*09 [12] 707 addc a,(_eeprom_write_PARM_3 + 1)
|
|
0001C2 FC [12] 708 mov r4,a
|
|
0001C3 AD*0A [24] 709 mov r5,(_eeprom_write_PARM_3 + 2)
|
|
0001C5 8B 82 [24] 710 mov dpl,r3
|
|
0001C7 8C 83 [24] 711 mov dph,r4
|
|
0001C9 8D F0 [24] 712 mov b,r5
|
|
0001CB 12r00r00 [24] 713 lcall __gptrget
|
|
0001CE FB [12] 714 mov r3,a
|
|
0001CF 62 07 [12] 715 xrl ar7,a
|
|
0001D1 0E [12] 716 inc r6
|
|
0001D2 80 E2 [24] 717 sjmp 00107$
|
|
0001D4 718 00102$:
|
|
719 ; src/eeprom.c:132: iap_write(IAP_EEPROM_BASE + 11, cksum);
|
|
0001D4 8F*00 [24] 720 mov _iap_write_PARM_2,r7
|
|
0001D6 90 FC 0B [24] 721 mov dptr,#0xfc0b
|
|
0001D9 12r00r5D [24] 722 lcall _iap_write
|
|
723 ; src/eeprom.c:134: return EEPROM_OK;
|
|
0001DC 75 82 00 [24] 724 mov dpl,#0x00
|
|
725 ; src/eeprom.c:135: }
|
|
0001DF 22 [24] 726 ret
|
|
727 ;------------------------------------------------------------
|
|
728 ;Allocation info for local variables in function 'eeprom_format'
|
|
729 ;------------------------------------------------------------
|
|
730 ; src/eeprom.c:137: uint8_t eeprom_format(void)
|
|
731 ; -----------------------------------------
|
|
732 ; function eeprom_format
|
|
733 ; -----------------------------------------
|
|
0001E0 734 _eeprom_format:
|
|
735 ; src/eeprom.c:139: return eeprom_write(MODE_SBUS, DEFAULT_RF_CH, DEFAULT_ADDR);
|
|
0001E0 75*08r00 [24] 736 mov _eeprom_write_PARM_3,#_DEFAULT_ADDR
|
|
0001E3 75*09s00 [24] 737 mov (_eeprom_write_PARM_3 + 1),#(_DEFAULT_ADDR >> 8)
|
|
0001E6 75*0A 80 [24] 738 mov (_eeprom_write_PARM_3 + 2),#0x80
|
|
0001E9 75*07 4C [24] 739 mov _eeprom_write_PARM_2,#0x4c
|
|
0001EC 75 82 00 [24] 740 mov dpl,#0x00
|
|
741 ; src/eeprom.c:140: }
|
|
0001EF 02r01r43 [24] 742 ljmp _eeprom_write
|
|
743 .area CSEG (CODE)
|
|
744 .area CONST (CODE)
|
|
000000 745 _DEFAULT_ADDR:
|
|
000000 E7 746 .db #0xe7 ; 231
|
|
000001 E7 747 .db #0xe7 ; 231
|
|
000002 E7 748 .db #0xe7 ; 231
|
|
000003 E7 749 .db #0xe7 ; 231
|
|
000004 C2 750 .db #0xc2 ; 194
|
|
751 .area XINIT (CODE)
|
|
752 .area CABS (ABS,CODE)
|