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