📄 send_485.lis
字号:
010E ; case 0x1e: //节点1
010E ; while(RS_j<6){
010E .dbline 78
010E ; get[0+RS_j]=getchar[RS_j];
010E 80E0 ldi R24,<_getchar
0110 90E0 ldi R25,>_getchar
0112 E02F mov R30,R16
0114 FF27 clr R31
0116 E80F add R30,R24
0118 F91F adc R31,R25
011A 2080 ldd R2,z+0
011C 80E0 ldi R24,<_get
011E 90E0 ldi R25,>_get
0120 E02F mov R30,R16
0122 FF27 clr R31
0124 E80F add R30,R24
0126 F91F adc R31,R25
0128 2082 std z+0,R2
012A .dbline 79
012A ; RS_j++;
012A 0395 inc R16
012C .dbline 80
012C ; }
012C L26:
012C .dbline 77
012C 0630 cpi R16,6
012E 78F3 brlo L25
0130 X11:
0130 .dbline 81
0130 ; break;
0130 35C0 rjmp L21
0132 L29:
0132 .dbline 83
0132 ; case 0x2d: //节点2
0132 ; while(RS_j<6){
0132 .dbline 84
0132 ; get[6+RS_j]=getchar[RS_j];
0132 80E0 ldi R24,<_getchar
0134 90E0 ldi R25,>_getchar
0136 E02F mov R30,R16
0138 FF27 clr R31
013A E80F add R30,R24
013C F91F adc R31,R25
013E 2080 ldd R2,z+0
0140 80E0 ldi R24,<_get+6
0142 90E0 ldi R25,>_get+6
0144 E02F mov R30,R16
0146 FF27 clr R31
0148 E80F add R30,R24
014A F91F adc R31,R25
014C 2082 std z+0,R2
014E .dbline 85
014E ; RS_j++;
014E 0395 inc R16
0150 .dbline 86
0150 ; }
0150 L30:
0150 .dbline 83
0150 0630 cpi R16,6
0152 78F3 brlo L29
0154 X12:
0154 .dbline 87
0154 ; break;
0154 23C0 rjmp L21
0156 L34:
0156 .dbline 89
0156 ; case 0x3c: //节点3
0156 ; while(RS_j<6){
0156 .dbline 90
0156 ; get[12+RS_j]=getchar[RS_j];
0156 80E0 ldi R24,<_getchar
0158 90E0 ldi R25,>_getchar
015A E02F mov R30,R16
015C FF27 clr R31
015E E80F add R30,R24
0160 F91F adc R31,R25
0162 2080 ldd R2,z+0
0164 80E0 ldi R24,<_get+12
0166 90E0 ldi R25,>_get+12
0168 E02F mov R30,R16
016A FF27 clr R31
016C E80F add R30,R24
016E F91F adc R31,R25
0170 2082 std z+0,R2
0172 .dbline 91
0172 ; RS_j++;
0172 0395 inc R16
0174 .dbline 92
0174 ; }
0174 L35:
0174 .dbline 89
0174 0630 cpi R16,6
0176 78F3 brlo L34
0178 X13:
0178 .dbline 93
0178 ; break;
0178 11C0 rjmp L21
017A L39:
017A .dbline 95
017A ; case 0x4b: //节点4
017A ; while(RS_j<6){
017A .dbline 96
017A ; get[18+RS_j]=getchar[RS_j];
017A 80E0 ldi R24,<_getchar
017C 90E0 ldi R25,>_getchar
017E E02F mov R30,R16
0180 FF27 clr R31
0182 E80F add R30,R24
0184 F91F adc R31,R25
0186 2080 ldd R2,z+0
0188 80E0 ldi R24,<_get+18
018A 90E0 ldi R25,>_get+18
018C E02F mov R30,R16
018E FF27 clr R31
0190 E80F add R30,R24
0192 F91F adc R31,R25
0194 2082 std z+0,R2
0196 .dbline 97
0196 ; RS_j++;
0196 0395 inc R16
0198 .dbline 98
0198 ; }//end while
0198 L40:
0198 .dbline 95
0198 0630 cpi R16,6
019A 78F3 brlo L39
019C X14:
019C .dbline 99
019C ; break;
019C L20:
019C L21:
019C .dbline 101
019C ; }//end switch
019C ; }//end if
019C L18:
019C .dbline -2
019C L17:
019C .dbline 0 ; func end
019C 0895 ret
019E .dbsym r RS_j 16 c
019E .dbend
019E .dbfunc e moto_stop _moto_stop fV
.even
019E _moto_stop::
019E .dbline -1
019E .dbline 106
019E ; }
019E ;
019E ; /***************************各电机停止函数,相关变量清零***********/
019E ; void moto_stop(void)
019E ; {
019E .dbline 107
019E ; moto1[2]=0xb4; //向各节点停止命令
019E 84EB ldi R24,180
01A0 80930200 sts _moto1+2,R24
01A4 .dbline 108
01A4 ; moto2[2]=0xb4;
01A4 80930200 sts _moto2+2,R24
01A8 .dbline 109
01A8 ; moto3[2]=0xb4;
01A8 80930200 sts _moto3+2,R24
01AC .dbline 110
01AC ; moto4[2]=0xb4;
01AC 80930200 sts _moto4+2,R24
01B0 .dbline 112
01B0 ;
01B0 ; get[2]=0x00; //接收控制指令数组清零
01B0 2224 clr R2
01B2 20920200 sts _get+2,R2
01B6 .dbline 113
01B6 ; get[8]=0x00;
01B6 20920800 sts _get+8,R2
01BA .dbline 114
01BA ; get[14]=0x00;
01BA 20920E00 sts _get+14,R2
01BE .dbline 115
01BE ; get[20]=0x00;
01BE 20921400 sts _get+20,R2
01C2 .dbline 117
01C2 ;
01C2 ; status[2]=0; //状态数组之时间清0
01C2 3324 clr R3
01C4 30920500 sts _status+4+1,R3
01C8 20920400 sts _status+4,R2
01CC .dbline 118
01CC ; TIMSK=0x00; //定时器关闭
01CC 29BE out 0x39,R2
01CE .dbline 119
01CE ; page=4; //显示第四页停止页面
01CE 84E0 ldi R24,4
01D0 80930000 sts _page,R24
01D4 .dbline 120
01D4 ; flag=2; //flag标志清零
01D4 82E0 ldi R24,2
01D6 80930000 sts _flag,R24
01DA .dbline -2
01DA L46:
01DA .dbline 0 ; func end
01DA 0895 ret
01DC .dbend
01DC .dbfunc e step_for _step_for fV
.even
01DC _step_for::
01DC .dbline -1
01DC .dbline 124
01DC ; }
01DC ; /**************运动到达指定循环步数之前***********/
01DC ; void step_for(void)
01DC ; {
01DC .dbline 125
01DC ; moto1[4]=p[++i]; //存储各节点的运动速度(时间)
01DC 80910000 lds R24,_i
01E0 8F5F subi R24,255 ; addi 1
01E2 482E mov R4,R24
01E4 40920000 sts _i,R4
01E8 20900000 lds R2,_p
01EC 30900100 lds R3,_p+1
01F0 E82F mov R30,R24
01F2 FF27 clr R31
01F4 E20D add R30,R2
01F6 F31D adc R31,R3
01F8 2080 ldd R2,z+0
01FA 20920400 sts _moto1+4,R2
01FE .dbline 126
01FE ; moto2[4]=p[i];
01FE 20900000 lds R2,_p
0202 30900100 lds R3,_p+1
0206 E82F mov R30,R24
0208 FF27 clr R31
020A E20D add R30,R2
020C F31D adc R31,R3
020E 2080 ldd R2,z+0
0210 20920400 sts _moto2+4,R2
0214 .dbline 127
0214 ; moto3[4]=p[i];
0214 20900000 lds R2,_p
0218 30900100 lds R3,_p+1
021C E82F mov R30,R24
021E FF27 clr R31
0220 E20D add R30,R2
0222 F31D adc R31,R3
0224 2080 ldd R2,z+0
0226 20920400 sts _moto3+4,R2
022A .dbline 128
022A ; moto4[4]=p[i];
022A 20900000 lds R2,_p
022E 30900100 lds R3,_p+1
0232 E82F mov R30,R24
0234 FF27 clr R31
0236 E20D add R30,R2
0238 F31D adc R31,R3
023A 2080 ldd R2,z+0
023C 20920400 sts _moto4+4,R2
0240 .dbline 129
0240 ; i++;
0240 8F5F subi R24,255 ; addi 1
0242 80930000 sts _i,R24
0246 .dbline 130
0246 ; moto1[3]=p[i++]; //存储各节点的运动位置
0246 282E mov R2,R24
0248 3324 clr R3
024A 2101 movw R4,R2
024C 8F5F subi R24,255 ; addi 1
024E 80930000 sts _i,R24
0252 20900000 lds R2,_p
0256 30900100 lds R3,_p+1
025A E42D mov R30,R4
025C FF27 clr R31
025E E20D add R30,R2
0260 F31D adc R31,R3
0262 2080 ldd R2,z+0
0264 20920300 sts _moto1+3,R2
0268 .dbline 131
0268 ; moto2[3]=p[i++];
0268 082F mov R16,R24
026A 1127 clr R17
026C 8F5F subi R24,255 ; addi 1
026E 80930000 sts _i,R24
0272 20900000 lds R2,_p
0276 30900100 lds R3,_p+1
027A E02F mov R30,R16
027C FF27 clr R31
027E E20D add R30,R2
0280 F31D adc R31,R3
0282 2080 ldd R2,z+0
0284 20920300 sts _moto2+3,R2
0288 .dbline 132
0288 ; moto3[3]=p[i++];
0288 082F mov R16,R24
028A 1127 clr R17
028C 8F5F subi R24,255 ; addi 1
028E 80930000 sts _i,R24
0292 20900000 lds R2,_p
0296 30900100 lds R3,_p+1
029A E02F mov R30,R16
029C FF27 clr R31
029E E20D add R30,R2
02A0 F31D adc R31,R3
02A2 2080 ldd R2,z+0
02A4 20920300 sts _moto3+3,R2
02A8 .dbline 133
02A8 ; moto4[3]=p[i];
02A8 20900000 lds R2,_p
02AC 30900100 lds R3,_p+1
02B0 E82F mov R30,R24
02B2 FF27 clr R31
02B4 E20D add R30,R2
02B6 F31D adc R31,R3
02B8 2080 ldd R2,z+0
02BA 20920300 sts _moto4+3,R2
02BE .dbline 134
02BE ; flag=2; //主函数flag标志置数
02BE 82E0 ldi R24,2
02C0 80930000 sts _flag,R24
02C4 .dbline -2
02C4 L56:
02C4 .dbline 0 ; func end
02C4 0895 ret
02C6 .dbend
02C6 .dbfunc e step_back _step_back fV
.even
02C6 _step_back::
02C6 4A93 st -y,R20
02C8 5A93 st -y,R21
02CA .dbline -1
02CA .dbline 138
02CA ; }
02CA ; /***************运动到达指定循环步数之后***********/
02CA ; void step_back(void)
02CA ; {
02CA .dbline 139
02CA ; moto1[4]=p[i]; //存储各节点运动速度(时间)
02CA 20900000 lds R2,_p
02CE 30900100 lds R3,_p+1
02D2 E0910000 lds R30,_i
02D6 FF27 clr R31
02D8 E20D add R30,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -