⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf905_temperature.lis

📁 ADC采集温度数据通过nrf905发送出去
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -