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

📄 send_485.lis

📁 基于ATmega8开发的关于医疗康复的机器人
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 02DA F31D              adc R31,R3
 02DC 2080              ldd R2,z+0
 02DE 20920400          sts _moto1+4,R2
 02E2                   .dbline 140
 02E2           ;       moto2[4]=p[i];
 02E2 20900000          lds R2,_p
 02E6 30900100          lds R3,_p+1
 02EA E0910000          lds R30,_i
 02EE FF27              clr R31
 02F0 E20D              add R30,R2
 02F2 F31D              adc R31,R3
 02F4 2080              ldd R2,z+0
 02F6 20920400          sts _moto2+4,R2
 02FA                   .dbline 141
 02FA           ;       moto3[4]=p[i];
 02FA 20900000          lds R2,_p
 02FE 30900100          lds R3,_p+1
 0302 E0910000          lds R30,_i
 0306 FF27              clr R31
 0308 E20D              add R30,R2
 030A F31D              adc R31,R3
 030C 2080              ldd R2,z+0
 030E 20920400          sts _moto3+4,R2
 0312                   .dbline 142
 0312           ;       moto4[4]=p[i]; 
 0312 20900000          lds R2,_p
 0316 30900100          lds R3,_p+1
 031A E0910000          lds R30,_i
 031E FF27              clr R31
 0320 E20D              add R30,R2
 0322 F31D              adc R31,R3
 0324 2080              ldd R2,z+0
 0326 20920400          sts _moto4+4,R2
 032A                   .dbline 144
 032A           ;   
 032A           ;       i++;                                                    //变量加1,准备执行下一步
 032A 80910000          lds R24,_i
 032E 8F5F              subi R24,255    ; addi 1
 0330 80930000          sts _i,R24
 0334                   .dbline 146
 0334           ;   
 0334           ;       moto1[3]=p[i++]*status[1]/0x64; //运动位置转换后存储
 0334 282E              mov R2,R24
 0336 3324              clr R3
 0338 2101              movw R4,R2
 033A 8F5F              subi R24,255    ; addi 1
 033C 80930000          sts _i,R24
 0340 20900000          lds R2,_p
 0344 30900100          lds R3,_p+1
 0348 E42D              mov R30,R4
 034A FF27              clr R31
 034C E20D              add R30,R2
 034E F31D              adc R31,R3
 0350 0081              ldd R16,z+0
 0352 1127              clr R17
 0354 20910200          lds R18,_status+2
 0358 30910300          lds R19,_status+2+1
 035C 00D0              rcall empy16s
 035E 24E6              ldi R18,100
 0360 30E0              ldi R19,0
 0362 00D0              rcall div16u
 0364 00930300          sts _moto1+3,R16
 0368                   .dbline 147
 0368           ;       moto2[3]=p[i++]*status[1]/0x64;  
 0368 20900000          lds R2,_i
 036C 3324              clr R3
 036E 2101              movw R4,R2
 0370 822D              mov R24,R2
 0372 8F5F              subi R24,255    ; addi 1
 0374 80930000          sts _i,R24
 0378 20900000          lds R2,_p
 037C 30900100          lds R3,_p+1
 0380 E42D              mov R30,R4
 0382 FF27              clr R31
 0384 E20D              add R30,R2
 0386 F31D              adc R31,R3
 0388 0081              ldd R16,z+0
 038A 1127              clr R17
 038C 20910200          lds R18,_status+2
 0390 30910300          lds R19,_status+2+1
 0394 00D0              rcall empy16s
 0396 24E6              ldi R18,100
 0398 30E0              ldi R19,0
 039A 00D0              rcall div16u
 039C 00930300          sts _moto2+3,R16
 03A0                   .dbline 148
 03A0           ;       moto3[3]=p[i++]*status[1]/0x64; 
 03A0 40910000          lds R20,_i
 03A4 5527              clr R21
 03A6 842F              mov R24,R20
 03A8 8F5F              subi R24,255    ; addi 1
 03AA 80930000          sts _i,R24
 03AE 20900000          lds R2,_p
 03B2 30900100          lds R3,_p+1
 03B6 E42F              mov R30,R20
 03B8 FF27              clr R31
 03BA E20D              add R30,R2
 03BC F31D              adc R31,R3
 03BE 0081              ldd R16,z+0
 03C0 1127              clr R17
 03C2 20910200          lds R18,_status+2
 03C6 30910300          lds R19,_status+2+1
 03CA 00D0              rcall empy16s
 03CC 24E6              ldi R18,100
 03CE 30E0              ldi R19,0
 03D0 00D0              rcall div16u
 03D2 00930300          sts _moto3+3,R16
 03D6                   .dbline 149
 03D6           ;       moto4[3]=p[i++]*status[1]/0x64; 
 03D6 40910000          lds R20,_i
 03DA 5527              clr R21
 03DC 842F              mov R24,R20
 03DE 8F5F              subi R24,255    ; addi 1
 03E0 80930000          sts _i,R24
 03E4 20900000          lds R2,_p
 03E8 30900100          lds R3,_p+1
 03EC E42F              mov R30,R20
 03EE FF27              clr R31
 03F0 E20D              add R30,R2
 03F2 F31D              adc R31,R3
 03F4 0081              ldd R16,z+0
 03F6 1127              clr R17
 03F8 20910200          lds R18,_status+2
 03FC 30910300          lds R19,_status+2+1
 0400 00D0              rcall empy16s
 0402 24E6              ldi R18,100
 0404 30E0              ldi R19,0
 0406 00D0              rcall div16u
 0408 00930300          sts _moto4+3,R16
 040C                   .dbline 151
 040C           ;     
 040C           ;       flag=2;                                                 //主函数flag标志置数
 040C 82E0              ldi R24,2
 040E 80930000          sts _flag,R24
 0412                   .dbline -2
 0412           L65:
 0412                   .dbline 0 ; func end
 0412 5991              ld R21,y+
 0414 4991              ld R20,y+
 0416 0895              ret
 0418                   .dbend
 0418                   .dbfunc e RS485_getchar _RS485_getchar fV
                        .even
 0418           _RS485_getchar::
 0418                   .dbline -1
 0418                   .dbline 155
 0418           ; }
 0418           ; /***************************接收数据决断子程序*******************/
 0418           ; void RS485_getchar(void)
 0418           ; {
 0418                   .dbline 157
 0418           ;       
 0418           ;       data_decide();                                  //接收数组判断存储子程序
 0418 52DE              rcall _data_decide
 041A 74C0              rjmp L80
 041C           L79:
 041C                   .dbline 159
 041C           ;    
 041C           ;       while(1){
 041C                   .dbline 160
 041C           ;               if(second==status[2]){          //运动时间到  
 041C 20900400          lds R2,_status+4
 0420 30900500          lds R3,_status+4+1
 0424 40900000          lds R4,_second
 0428 50900100          lds R5,_second+1
 042C 4214              cp R4,R2
 042E 5304              cpc R5,R3
 0430 11F4              brne L82
 0432           X20:
 0432                   .dbline 160
 0432                   .dbline 161
 0432           ;               moto_stop();                    //电机停止函数
 0432 B5DE              rcall _moto_stop
 0434                   .dbline 162
 0434           ;                       break;
 0434 68C0              rjmp L81
 0436           L82:
 0436                   .dbline 164
 0436           ;               }//end if
 0436           ;               if((get[2]==0xff)&&(get[8]==0xff)&&     //各节点电机都已停止
 0436 80910200          lds R24,_get+2
 043A 8F3F              cpi R24,255
 043C 09F0              breq X29
 043E 62C0              rjmp L85
 0440           X29:
 0440           X21:
 0440 80910800          lds R24,_get+8
 0444 8F3F              cpi R24,255
 0446 09F0              breq X30
 0448 5DC0              rjmp L85
 044A           X30:
 044A           X22:
 044A 80910E00          lds R24,_get+14
 044E 8F3F              cpi R24,255
 0450 09F0              breq X31
 0452 58C0              rjmp L85
 0454           X31:
 0454           X23:
 0454 80911400          lds R24,_get+20
 0458 8F3F              cpi R24,255
 045A 09F0              breq X32
 045C 53C0              rjmp L85
 045E           X32:
 045E           X24:
 045E                   .dbline 165
 045E           ;                       (get[14]==0xff)&&(get[20]==0xff)){
 045E                   .dbline 167
 045E           ;               
 045E           ;                       get[2]=0x00;                                    //各节点控制指令清零
 045E 2224              clr R2
 0460 20920200          sts _get+2,R2
 0464                   .dbline 168
 0464           ;               get[8]=0x00;
 0464 20920800          sts _get+8,R2
 0468                   .dbline 169
 0468           ;               get[14]=0x00;
 0468 20920E00          sts _get+14,R2
 046C                   .dbline 170
 046C           ;               get[20]=0x00;           
 046C 20921400          sts _get+20,R2
 0470                   .dbline 172
 0470           ;                       
 0470           ;                       if(i<((p[1]-1)*5+1)){                   //未到达设定的循环开始步数
 0470 E0910000          lds R30,_p
 0474 F0910100          lds R31,_p+1
 0478 2180              ldd R2,z+1
 047A 85E0              ldi R24,5
 047C 829D              mul R24,R2
 047E 802D              mov R24,R0
 0480 8550              subi R24,5
 0482 8F5F              subi R24,255    ; addi 1
 0484 20900000          lds R2,_i
 0488 2816              cp R2,R24
 048A 10F4              brsh L95
 048C           X25:
 048C                   .dbline 172
 048C                   .dbline 173
 048C           ;                               step_for();                                     //相应处理函数
 048C A7DE              rcall _step_for
 048E                   .dbline 174
 048E           ;                       }//end if       
 048E 25C0              rjmp L96
 0490           L95:
 0490                   .dbline 175
 0490           ;                       else if((i>(p[1]-1)*5+1)&&(j==1)){      //已经到达设定的运动步数
 0490 E0910000          lds R30,_p
 0494 F0910100          lds R31,_p+1
 0498 2180              ldd R2,z+1
 049A 85E0              ldi R24,5
 049C 829D              mul R24,R2
 049E C001              movw R24,R0
 04A0 0597              sbiw R24,5
 04A2 0196              adiw R24,1
 04A4 20900000          lds R2,_i
 04A8 3324              clr R3
 04AA 8215              cp R24,R2
 04AC 9305              cpc R25,R3
 04AE 34F4              brge L97
 04B0           X26:
 04B0 80910000          lds R24,_j
 04B4 8130              cpi R24,1
 04B6 11F4              brne L97
 04B8           X27:
 04B8                   .dbline 175
 04B8                   .dbline 176
 04B8           ;                               step_back();                            //相应处理函数
 04B8 06DF              rcall _step_back
 04BA                   .dbline 177
 04BA           ;                       }//end else if
 04BA 0FC0              rjmp L98
 04BC           L97:
 04BC                   .dbline 178
 04BC           ;                       else{                                                   //是否到达运动循环开始的第一步
 04BC                   .dbline 179
 04BC           ;                               j=1;                                                    
 04BC 81E0              ldi R24,1
 04BE 80930000          sts _j,R24
 04C2                   .dbline 180
 04C2           ;                               i=((p[1]-1)*5+2);                       //准备执行下一步
 04C2 E0910000          lds R30,_p
 04C6 F0910100          lds R31,_p+1
 04CA 2180              ldd R2,z+1
 04CC 85E0              ldi R24,5
 04CE 829D              mul R24,R2
 04D0 802D              mov R24,R0
 04D2 8550              subi R24,5
 04D4 8E5F              subi R24,254    ; addi 2
 04D6 80930000          sts _i,R24
 04DA                   .dbline 181
 04DA           ;                       }//end else
 04DA           L98:
 04DA           L96:
 04DA                   .dbline 182
 04DA           ;                       if(i==(p[0]*5+2)){                              //是否到达最后一步
 04DA E0910000          lds R30,_p
 04DE F0910100          lds R31,_p+1
 04E2 2080              ldd R2,z+0
 04E4 85E0              ldi R24,5
 04E6 829D              mul R24,R2
 04E8 802D              mov R24,R0
 04EA 8E5F              subi R24,254    ; addi 2
 04EC 20900000          lds R2,_i
 04F0 2816              cp R2,R24
 04F2 41F4              brne L99
 04F4           X28:
 04F4                   .dbline 182
 04F4                   .dbline 183
 04F4           ;                               i=(p[1]-1)*5+2;                         //重新从第一条指令开始执行
 04F4 2180              ldd R2,z+1
 04F6 85E0              ldi R24,5
 04F8 829D              mul R24,R2
 04FA 802D              mov R24,R0
 04FC 8550              subi R24,5
 04FE 8E5F              subi R24,254    ; addi 2
 0500 80930000          sts _i,R24
 0504                   .dbline 184
 0504           ;                       }//end if
 0504           L99:
 0504                   .dbline 185
 0504           ;               }//end if                
 0504           L85:
 0504                   .dbline 186
 0504           ;       }//end while
 0504           L80:
 0504                   .dbline 159
 0504 8BCF              rjmp L79
 0506           L81:
 0506                   .dbline -2
 0506           L78:
 0506                   .dbline 0 ; func end
 0506 0895              ret
 0508                   .dbend
 0508           ; }
 0508           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -