📄 nrf905_temperature.lis
字号:
039E 9927 clr R25
03A0 0196 adiw R24,1
03A2 2090D800 lds R2,_adc_mux
03A6 3090D900 lds R3,_adc_mux+1
03AA 8215 cp R24,R2
03AC 9305 cpc R25,R3
03AE C0F4 brsh L98
03B0 X26:
03B0 .dbline 408
03B0 2224 clr R2
03B2 3324 clr R3
03B4 3092D900 sts _adc_mux+1,R3
03B8 2092D800 sts _adc_mux,R2
03BC .dbline 409
03BC ; }
03BC 11C0 rjmp L98
03BE L97:
03BE .dbline 410
03BE ; else if(adc_mux > (num-1)) adc_mux = 0;
03BE 80910100 lds R24,_num
03C2 9927 clr R25
03C4 0197 sbiw R24,1
03C6 2090D800 lds R2,_adc_mux
03CA 3090D900 lds R3,_adc_mux+1
03CE 8215 cp R24,R2
03D0 9305 cpc R25,R3
03D2 30F4 brsh L103
03D4 X27:
03D4 .dbline 410
03D4 2224 clr R2
03D6 3324 clr R3
03D8 3092D900 sts _adc_mux+1,R3
03DC 2092D800 sts _adc_mux,R2
03E0 L103:
03E0 L98:
03E0 .dbline -2
03E0 L96:
03E0 .dbline 0 ; func end
03E0 1990 ld R1,y+
03E2 1FBE out 0x3f,R1
03E4 F991 ld R31,y+
03E6 E991 ld R30,y+
03E8 A991 ld R26,y+
03EA 9991 ld R25,y+
03EC 8991 ld R24,y+
03EE 5990 ld R5,y+
03F0 4990 ld R4,y+
03F2 3990 ld R3,y+
03F4 2990 ld R2,y+
03F6 1990 ld R1,y+
03F8 1895 reti
03FA .dbend
03FA .dbfunc e GetLPC _GetLPC fc
03FA ; c -> R20
03FA ; i -> R22,R23
03FA ; len -> R18,R19
03FA ; buf -> R16,R17
.even
03FA _GetLPC::
03FA 00D0 rcall push_xgsetF000
03FC .dbline -1
03FC .dbline 415
03FC ; }
03FC ;
03FC ; /////////////////////////////////////////////////////////////////////////////////
03FC ; BYTE GetLPC(BYTE *buf,short len)
03FC ; {
03FC .dbline 417
03FC ; short i;
03FC ; BYTE c = 0xff;
03FC 4FEF ldi R20,255
03FE .dbline 419
03FE ;
03FE ; for ( i=0; i<len; i++ ) c ^= buf[i];
03FE 6627 clr R22
0400 7727 clr R23
0402 07C0 rjmp L109
0404 L106:
0404 .dbline 419
0404 FB01 movw R30,R22
0406 E00F add R30,R16
0408 F11F adc R31,R17
040A 2080 ldd R2,z+0
040C 4225 eor R20,R2
040E L107:
040E .dbline 419
040E 6F5F subi R22,255 ; offset = 1
0410 7F4F sbci R23,255
0412 L109:
0412 .dbline 419
0412 6217 cp R22,R18
0414 7307 cpc R23,R19
0416 B4F3 brlt L106
0418 X28:
0418 .dbline 420
0418 ; return c;
0418 042F mov R16,R20
041A .dbline -2
041A L105:
041A .dbline 0 ; func end
041A 00C0 rjmp pop_xgsetF000
041C .dbsym r c 20 c
041C .dbsym r i 22 S
041C .dbsym r len 18 S
041C .dbsym r buf 16 pc
041C .dbend
041C .dbfunc e CallData _CallData fV
.even
041C _CallData::
041C .dbline -1
041C .dbline 425
041C ; }
041C ;
041C ; /////////////////////////////////////////////////////////////////////////////////
041C ; void CallData(void)
041C ; {
041C .dbline 426
041C ; tx_buf[0] = 0xeb;
041C 8BEE ldi R24,235
041E 80931D00 sts _tx_buf,R24
0422 .dbline 427
0422 ; tx_buf[1] = 0x90;
0422 80E9 ldi R24,144
0424 80931E00 sts _tx_buf+1,R24
0428 .dbline 428
0428 ; tx_buf[2] = CMD_ASKDATA;
0428 2224 clr R2
042A 20921F00 sts _tx_buf+2,R2
042E .dbline 429
042E ; tx_buf[3] = ID_L;
042E 20900800 lds R2,_ID_L
0432 20922000 sts _tx_buf+3,R2
0436 .dbline 430
0436 ; tx_buf[4] = ID_H;
0436 20900700 lds R2,_ID_H
043A 20922100 sts _tx_buf+4,R2
043E .dbline 431
043E ; tx_buf[5] = num;
043E 20900100 lds R2,_num
0442 20922200 sts _tx_buf+5,R2
0446 .dbline 432
0446 ; tx_buf[6] = GetLPC(tx_buf,7);
0446 27E0 ldi R18,7
0448 30E0 ldi R19,0
044A 00E0 ldi R16,<_tx_buf
044C 10E0 ldi R17,>_tx_buf
044E D5DF rcall _GetLPC
0450 00932300 sts _tx_buf+6,R16
0454 .dbline 433
0454 ; tx_len = 7;
0454 87E0 ldi R24,7
0456 80931C00 sts _tx_len,R24
045A .dbline -2
045A L110:
045A .dbline 0 ; func end
045A 0895 ret
045C .dbend
045C .dbfunc e RetData _RetData fV
045C ; i -> R20
.even
045C _RetData::
045C 00D0 rcall push_xgset300C
045E .dbline -1
045E .dbline 437
045E ; }
045E ;
045E ; void RetData(void)
045E ; {
045E .dbline 440
045E ; BYTE i;
045E ;
045E ; tx_buf[0] = 0xeb;
045E 8BEE ldi R24,235
0460 80931D00 sts _tx_buf,R24
0464 .dbline 441
0464 ; tx_buf[1] = 0x90;
0464 80E9 ldi R24,144
0466 80931E00 sts _tx_buf+1,R24
046A .dbline 442
046A ; tx_buf[2] = CMD_RETDATA;
046A 81E0 ldi R24,1
046C 80931F00 sts _tx_buf+2,R24
0470 .dbline 443
0470 ; tx_buf[3] = ID_L;
0470 20900800 lds R2,_ID_L
0474 20922000 sts _tx_buf+3,R2
0478 .dbline 444
0478 ; tx_buf[4] = ID_H;
0478 20900700 lds R2,_ID_H
047C 20922100 sts _tx_buf+4,R2
0480 .dbline 445
0480 ; tx_buf[5] = num;
0480 20900100 lds R2,_num
0484 20922200 sts _tx_buf+5,R2
0488 .dbline 446
0488 ; tx_buf[6] = startnum;
0488 2090AD00 lds R2,_startnum
048C 20922300 sts _tx_buf+6,R2
0490 .dbline 447
0490 ; if(num <4){
0490 80910100 lds R24,_num
0494 8430 cpi R24,4
0496 08F0 brlo X35
0498 3AC0 rjmp L124
049A X35:
049A X29:
049A .dbline 447
049A .dbline 448
049A ; for(i=7;i<num*2+7;i++){
049A 47E0 ldi R20,7
049C 16C0 rjmp L129
049E L126:
049E .dbline 448
049E .dbline 449
049E ; tx_buf[i] = data[startnum*2+i-7];
049E 242E mov R2,R20
04A0 3324 clr R3
04A2 E091AD00 lds R30,_startnum
04A6 FF27 clr R31
04A8 EE0F lsl R30
04AA FF1F rol R31
04AC E20D add R30,R2
04AE F31D adc R31,R3
04B0 80E0 ldi R24,<_data-7
04B2 90E0 ldi R25,>_data-7
04B4 E80F add R30,R24
04B6 F91F adc R31,R25
04B8 2080 ldd R2,z+0
04BA 80E0 ldi R24,<_tx_buf
04BC 90E0 ldi R25,>_tx_buf
04BE E42F mov R30,R20
04C0 FF27 clr R31
04C2 E80F add R30,R24
04C4 F91F adc R31,R25
04C6 2082 std z+0,R2
04C8 .dbline 450
04C8 ; }
04C8 L127:
04C8 .dbline 448
04C8 4395 inc R20
04CA L129:
04CA .dbline 448
04CA 80910100 lds R24,_num
04CE 880F lsl R24
04D0 895F subi R24,249 ; addi 7
04D2 4817 cp R20,R24
04D4 20F3 brlo L126
04D6 X30:
04D6 .dbline 451
04D6 ; tx_buf[7+num*2] = GetLPC(tx_buf,7+num*2);
04D6 20900100 lds R2,_num
04DA 3324 clr R3
04DC 220C lsl R2
04DE 331C rol R3
04E0 9101 movw R18,R2
04E2 295F subi R18,249 ; offset = 7
04E4 3F4F sbci R19,255
04E6 00E0 ldi R16,<_tx_buf
04E8 10E0 ldi R17,>_tx_buf
04EA 2F92 push R2
04EC 3F92 push R3
04EE 85DF rcall _GetLPC
04F0 3F90 pop R3
04F2 2F90 pop R2
04F4 80E0 ldi R24,<_tx_buf+7
04F6 90E0 ldi R25,>_tx_buf+7
04F8 F101 movw R30,R2
04FA E80F add R30,R24
04FC F91F adc R31,R25
04FE 0083 std z+0,R16
0500 .dbline 452
0500 ; tx_len = 8+num*2;
0500 80910100 lds R24,_num
0504 880F lsl R24
0506 885F subi R24,248 ; addi 8
0508 80931C00 sts _tx_len,R24
050C .dbline 454
050C ;
050C ; }
050C 69C0 rjmp L125
050E L124:
050E .dbline 455
050E ; else{
050E .dbline 456
050E ; if(startnum == 0){
050E 2090AD00 lds R2,_startnum
0512 2220 tst R2
0514 29F5 brne L132
0516 X31:
0516 .dbline 456
0516 .dbline 457
0516 ; for(i=7;i<15;i++){
0516 47E0 ldi R20,7
0518 16C0 rjmp L137
051A L134:
051A .dbline 457
051A .dbline 458
051A ; tx_buf[i] = data[startnum*2+i-7];
051A 242E mov R2,R20
051C 3324 clr R3
051E E091AD00 lds R30,_startnum
0522 FF27 clr R31
0524 EE0F lsl R30
0526 FF1F rol R31
0528 E20D add R30,R2
052A F31D adc R31,R3
052C 80E0 ldi R24,<_data-7
052E 90E0 ldi R25,>_data-7
0530 E80F add R30,R24
0532 F91F adc R31,R25
0534 2080 ldd R2,z+0
0536 80E0 ldi R24,<_tx_buf
0538 90E0 ldi R25,>_tx_buf
053A E42F mov R30,R20
053C FF27 clr R31
053E E80F add R30,R24
0540 F91F adc R31,R25
0542 2082 std z+0,R2
0544 .dbline 459
0544 ; }
0544 L135:
0544 .dbline 45
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -