📄 cc1000.lst
字号:
247 00bc 1701 movw r2,r14
248 00be 2801 movw r4,r16
152:cc1000.c **** uint32_t TXCalc = 0;
153:cc1000.c **** int32_t diff;
154:cc1000.c ****
155:cc1000.c **** NRef = ((desiredFreq + CC1000ControlM_IF) << 2) / FRef;
250 .LM16:
251 00c0 72E0 ldi r23,2
252 00c2 220F 1: lsl r18
253 00c4 331F rol r19
254 00c6 441F rol r20
255 00c8 551F rol r21
256 00ca 7A95 dec r23
257 00cc D1F7 brne 1b
258 00ce CA01 movw r24,r20
259 00d0 B901 movw r22,r18
260 00d2 A601 movw r20,r12
261 00d4 9501 movw r18,r10
262 00d6 0E94 0000 call __udivmodsi4
156:cc1000.c **** if (NRef & 0x1) {
264 .LM17:
265 00da DA01 movw r26,r20
266 00dc C901 movw r24,r18
267 00de 8170 andi r24,lo8(1)
268 00e0 9070 andi r25,hi8(1)
269 00e2 A070 andi r26,hlo8(1)
270 00e4 B070 andi r27,hhi8(1)
271 00e6 892B or r24,r25
272 00e8 21F0 breq .L6
157:cc1000.c **** NRef++;
274 .LM18:
275 00ea 2F5F subi r18,lo8(-(1))
276 00ec 3F4F sbci r19,hi8(-(1))
277 00ee 4F4F sbci r20,hlo8(-(1))
278 00f0 5F4F sbci r21,hhi8(-(1))
279 .L6:
158:cc1000.c **** }
159:cc1000.c ****
160:cc1000.c **** if (NRef & 0x2) {
281 .LM19:
282 00f2 DA01 movw r26,r20
283 00f4 C901 movw r24,r18
284 00f6 B695 lsr r27
285 00f8 A795 ror r26
286 00fa 9795 ror r25
287 00fc 8795 ror r24
288 00fe 8170 andi r24,lo8(1)
289 0100 9070 andi r25,hi8(1)
290 0102 892B or r24,r25
291 0104 59F0 breq .L7
161:cc1000.c **** RXCalc = 16384 >> 1;
293 .LM20:
294 0106 212C mov r2,__zero_reg__
295 0108 F0E2 ldi r31,hi8(8192)
296 010a 3F2E mov r3,r31
297 010c 412C mov r4,__zero_reg__
298 010e 512C mov r5,__zero_reg__
162:cc1000.c **** Channel = FRef >> 1;
300 .LM21:
301 0110 8601 movw r16,r12
302 0112 7501 movw r14,r10
303 0114 1695 lsr r17
304 0116 0795 ror r16
305 0118 F794 ror r15
306 011a E794 ror r14
307 .L7:
163:cc1000.c **** }
164:cc1000.c ****
165:cc1000.c **** NRef >>= 2;
309 .LM22:
310 011c 72E0 ldi r23,2
311 011e 5695 1: lsr r21
312 0120 4795 ror r20
313 0122 3795 ror r19
314 0124 2795 ror r18
315 0126 7A95 dec r23
316 0128 D1F7 brne 1b
166:cc1000.c ****
167:cc1000.c **** RXCalc += NRef * 16384 - 8192;
318 .LM23:
319 012a DA01 movw r26,r20
320 012c C901 movw r24,r18
321 012e 6EE0 ldi r22,14
322 0130 880F 1: lsl r24
323 0132 991F rol r25
324 0134 AA1F rol r26
325 0136 BB1F rol r27
326 0138 6A95 dec r22
327 013a D1F7 brne 1b
328 013c 820D add r24,r2
329 013e 931D adc r25,r3
330 0140 A41D adc r26,r4
331 0142 B51D adc r27,r5
332 0144 212C mov r2,__zero_reg__
333 0146 F0EE ldi r31,hi8(-8192)
334 0148 3F2E mov r3,r31
335 014a FFEF ldi r31,hlo8(-8192)
336 014c 4F2E mov r4,r31
337 014e FFEF ldi r31,hhi8(-8192)
338 0150 5F2E mov r5,r31
339 0152 280E add r2,r24
340 0154 391E adc r3,r25
341 0156 4A1E adc r4,r26
342 0158 5B1E adc r5,r27
168:cc1000.c **** if (RXCalc < CC1000ControlM_FREQ_MIN || RXCalc > CC1000ControlM_FREQ_MAX) {
344 .LM24:
345 015a 8050 subi r24,lo8(-(-4202496))
346 015c 9042 sbci r25,hi8(-(-4202496))
347 015e A044 sbci r26,hlo8(-(-4202496))
348 0160 B040 sbci r27,hhi8(-(-4202496))
349 0162 8050 subi r24,lo8(12557312)
350 0164 9C49 sbci r25,hi8(12557312)
351 0166 AF4B sbci r26,hlo8(12557312)
352 0168 B040 sbci r27,hhi8(12557312)
353 016a 08F0 brlo .+2
354 016c 64C0 rjmp .L5
169:cc1000.c **** continue;
170:cc1000.c **** }
171:cc1000.c **** TXCalc = RXCalc - CC1000ControlM_CorTbl[i];
356 .LM25:
357 016e A98D ldd r26,Y+25
358 0170 BA8D ldd r27,Y+26
359 0172 8D91 ld r24,X+
360 0174 9C91 ld r25,X
361 0176 AA27 clr r26
362 0178 BB27 clr r27
363 017a 4201 movw r8,r4
364 017c 3101 movw r6,r2
365 017e 681A sub r6,r24
366 0180 790A sbc r7,r25
367 0182 8A0A sbc r8,r26
368 0184 9B0A sbc r9,r27
172:cc1000.c **** if (TXCalc < CC1000ControlM_FREQ_MIN || TXCalc > CC1000ControlM_FREQ_MAX) {
370 .LM26:
371 0186 D401 movw r26,r8
372 0188 C301 movw r24,r6
373 018a 8050 subi r24,lo8(-(-4194304))
374 018c 9040 sbci r25,hi8(-(-4194304))
375 018e A044 sbci r26,hlo8(-(-4194304))
376 0190 B040 sbci r27,hhi8(-(-4194304))
377 0192 8050 subi r24,lo8(12557312)
378 0194 9C49 sbci r25,hi8(12557312)
379 0196 AF4B sbci r26,hlo8(12557312)
380 0198 B040 sbci r27,hhi8(12557312)
381 019a 08F0 brlo .+2
382 019c 4CC0 rjmp .L5
173:cc1000.c **** continue;
174:cc1000.c **** }
175:cc1000.c **** Channel += NRef * FRef;
384 .LM27:
385 019e CA01 movw r24,r20
386 01a0 B901 movw r22,r18
387 01a2 A601 movw r20,r12
388 01a4 9501 movw r18,r10
389 01a6 0E94 0000 call __mulsi3
390 01aa DC01 movw r26,r24
391 01ac CB01 movw r24,r22
392 01ae E80E add r14,r24
393 01b0 F91E adc r15,r25
394 01b2 0A1F adc r16,r26
395 01b4 1B1F adc r17,r27
176:cc1000.c **** Channel -= CC1000ControlM_IF;
397 .LM28:
398 01b6 20E1 ldi r18,lo8(-150000)
399 01b8 36EB ldi r19,hi8(-150000)
400 01ba 4DEF ldi r20,hlo8(-150000)
401 01bc 5FEF ldi r21,hhi8(-150000)
402 01be E20E add r14,r18
403 01c0 F31E adc r15,r19
404 01c2 041F adc r16,r20
405 01c4 151F adc r17,r21
177:cc1000.c ****
178:cc1000.c **** diff = Channel - desiredFreq;
407 .LM29:
408 01c6 D801 movw r26,r16
409 01c8 C701 movw r24,r14
410 01ca 2981 ldd r18,Y+1
411 01cc 3A81 ldd r19,Y+2
412 01ce 4B81 ldd r20,Y+3
413 01d0 5C81 ldd r21,Y+4
414 01d2 821B sub r24,r18
415 01d4 930B sbc r25,r19
416 01d6 A40B sbc r26,r20
417 01d8 B50B sbc r27,r21
179:cc1000.c **** if (diff < 0) {
419 .LM30:
420 01da B7FF sbrs r27,7
421 01dc 07C0 rjmp .L10
180:cc1000.c **** diff = 0 - diff;
423 .LM31:
424 01de B095 com r27
425 01e0 A095 com r26
426 01e2 9095 com r25
427 01e4 8195 neg r24
428 01e6 9F4F sbci r25,lo8(-1)
429 01e8 AF4F sbci r26,lo8(-1)
430 01ea BF4F sbci r27,lo8(-1)
431 .L10:
181:cc1000.c **** }
182:cc1000.c **** if (diff < Offset) {
433 .LM32:
434 01ec 2989 ldd r18,Y+17
435 01ee 3A89 ldd r19,Y+18
436 01f0 4B89 ldd r20,Y+19
437 01f2 5C89 ldd r21,Y+20
438 01f4 8217 cp r24,r18
439 01f6 9307 cpc r25,r19
440 01f8 A407 cpc r26,r20
441 01fa B507 cpc r27,r21
442 01fc E4F4 brge .L5
183:cc1000.c **** RXFreq = RXCalc;
444 .LM33:
445 01fe 2986 std Y+9,r2
446 0200 3A86 std Y+10,r3
447 0202 4B86 std Y+11,r4
448 0204 5C86 std Y+12,r5
184:cc1000.c **** TXFreq = TXCalc;
450 .LM34:
451 0206 6D86 std Y+13,r6
452 0208 7E86 std Y+14,r7
453 020a 8F86 std Y+15,r8
454 020c 988A std Y+16,r9
185:cc1000.c **** ActualChannel = Channel;
456 .LM35:
457 020e ED82 std Y+5,r14
458 0210 FE82 std Y+6,r15
459 0212 0F83 std Y+7,r16
460 0214 1887 std Y+8,r17
186:cc1000.c **** FSep = CC1000ControlM_FSepTbl[i];
462 .LM36:
463 0216 2B8D ldd r18,Y+27
464 0218 3C8D ldd r19,Y+28
465 021a 2050 subi r18,lo8(-(CC1000ControlM_FSepTbl))
466 021c 3040 sbci r19,hi8(-(CC1000ControlM_FSepTbl))
467 021e F901 movw r30,r18
468 0220 2081 ld r18,Z
469 0222 3181 ldd r19,Z+1
470 0224 2D8F std Y+29,r18
471 0226 3E8F std Y+30,r19
187:cc1000.c **** RefDiv = i + 6;
473 .LM37:
474 0228 FE89 ldd r31,Y+22
475 022a FA5F subi r31,lo8(-(6))
476 022c FD8B std Y+21,r31
188:cc1000.c **** Offset = diff;
478 .LM38:
479 022e 898B std Y+17,r24
480 0230 9A8B std Y+18,r25
481 0232 AB8B std Y+19,r26
482 0234 BC8B std Y+20,r27
483 .L5:
484 .LBE2:
486 .LM39:
487 0236 2E89 ldd r18,Y+22
488 0238 2F5F subi r18,lo8(-(1))
489 023a 2E8B std Y+22,r18
490 023c 4B8D ldd r20,Y+27
491 023e 5C8D ldd r21,Y+28
492 0240 4E5F subi r20,lo8(-(2))
493 0242 5F4F sbci r21,hi8(-(2))
494 0244 4B8F std Y+27,r20
495 0246 5C8F std Y+28,r21
496 0248 898D ldd r24,Y+25
497 024a 9A8D ldd r25,Y+26
498 024c 0296 adiw r24,2
499 024e 898F std Y+25,r24
500 0250 9A8F std Y+26,r25
501 0252 2930 cpi r18,lo8(9)
502 0254 08F4 brsh .+2
503 0256 1FCF rjmp .L12
189:cc1000.c **** }
190:cc1000.c **** }
191:cc1000.c ****
192:cc1000.c **** if (RefDiv != 0) {
505 .LM40:
506 0258 9D89 ldd r25,Y+21
507 025a 9923 tst r25
508 025c 09F4 brne .+2
509 025e 60C0 rjmp .L13
193:cc1000.c ****
194:cc1000.c **** CC1000ControlM_gCurrentParameters[0x3] = (uint8_t )(RXFreq & 0xFF);
511 .LM41:
512 0260 A985 ldd r26,Y+9
513 0262 A093 0000 sts CC1000ControlM_gCurrentParameters+3,r26
195:cc1000.c **** CC1000ControlM_gCurrentParameters[0x2] = (uint8_t )((RXFreq >> 8) & 0xFF);
515 .LM42:
516 0266 2985 ldd r18,Y+9
517 0268 3A85 ldd r19,Y+10
518 026a 4B85 ldd r20,Y+11
519 026c 5C85 ldd r21,Y+12
520 026e BB27 clr r27
521 0270 A52F mov r26,r21
522 0272 942F mov r25,r20
523 0274 832F mov r24,r19
524 0276 8093 0000 sts CC1000ControlM_gCurrentParameters+2,r24
196:cc1000.c **** CC1000ControlM_gCurrentParameters[0x1] = (uint8_t )((RXFreq >> 16) & 0xFF);
526 .LM43:
527 027a CA01 movw r24,r20
528 027c AA27 clr r26
529 027e BB27 clr r27
530 0280 8093 0000 sts CC1000ControlM_gCurrentParameters+1,r24
197:cc1000.c ****
198:cc1000.c **** CC1000ControlM_gCurrentParameters[0x6] = (uint8_t )(TXFreq & 0xFF);
532 .LM44:
533 0284 3D85 ldd r19,Y+13
534 0286 3093 0000 sts CC1000ControlM_gCurrentParameters+6,r19
199:cc1000.c **** CC1000ControlM_gCurrentParameters[0x5] = (uint8_t )((TXFreq >> 8) & 0xFF);
536 .LM45:
537 028a 2D85 ldd r18,Y+13
538 028c 3E85 ldd r19,Y+14
539 028e 4F85 ldd r20,Y+15
540 0290 5889 ldd r21,Y+16
541 0292 BB27 clr r27
542 0294 A52F mov r26,r21
543 0296 942F mov r25,r20
544 0298 832F mov r24,r19
545 029a 8093 0000 sts CC1000ControlM_gCurrentParameters+5,r24
200:cc1000.c **** CC1000ControlM_gCurrentParameters[0x4] = (uint8_t )((TXFreq >> 16) & 0xFF);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -