📄 motor.lis
字号:
039C 34C0 rjmp L47
039E L61:
039E 80910E00 lds R24,_adress
03A2 90910F00 lds R25,_adress+1
03A6 8830 cpi R24,8
03A8 E0E0 ldi R30,0
03AA 9E07 cpc R25,R30
03AC E9F0 breq L52
03AE 8830 cpi R24,8
03B0 E0E0 ldi R30,0
03B2 9E07 cpc R25,R30
03B4 44F1 brlt L47
03B6 L62:
03B6 80910E00 lds R24,_adress
03BA 90910F00 lds R25,_adress+1
03BE 8C30 cpi R24,12
03C0 E0E0 ldi R30,0
03C2 9E07 cpc R25,R30
03C4 A9F0 breq L54
03C6 8E30 cpi R24,14
03C8 E0E0 ldi R30,0
03CA 9E07 cpc R25,R30
03CC A9F0 breq L56
03CE 8031 cpi R24,16
03D0 E0E0 ldi R30,0
03D2 9E07 cpc R25,R30
03D4 A9F0 breq L58
03D6 17C0 rjmp L47
03D8 X2:
03D8 .dbline 112
03D8 L48:
03D8 .dbline 112
03D8 ; {case 0x0000:Data[3]=0xE4;break;
03D8 84EE ldi R24,228
03DA 80931300 sts _Data+3,R24
03DE .dbline 112
03DE 13C0 rjmp L47
03E0 L50:
03E0 .dbline 113
03E0 ; case 0x0004:Data[3]=0xE5;break;
03E0 85EE ldi R24,229
03E2 80931300 sts _Data+3,R24
03E6 .dbline 113
03E6 0FC0 rjmp L47
03E8 L52:
03E8 .dbline 114
03E8 ; case 0x0008:Data[3]=0xE6;break;
03E8 86EE ldi R24,230
03EA 80931300 sts _Data+3,R24
03EE .dbline 114
03EE 0BC0 rjmp L47
03F0 L54:
03F0 .dbline 115
03F0 ; case 0x000C:Data[3]=0xE7;break;
03F0 87EE ldi R24,231
03F2 80931300 sts _Data+3,R24
03F6 .dbline 115
03F6 07C0 rjmp L47
03F8 L56:
03F8 .dbline 116
03F8 ; case 0x000E:Data[3]=0xE8;break;
03F8 88EE ldi R24,232
03FA 80931300 sts _Data+3,R24
03FE .dbline 116
03FE 03C0 rjmp L47
0400 L58:
0400 .dbline 117
0400 89EE ldi R24,233
0402 80931300 sts _Data+3,R24
0406 .dbline 117
0406 .dbline 118
0406 L47:
0406 .dbline -2
0406 .dbline 119
0406 ; case 0x0010:Data[3]=0xE9;break;
0406 ; default :break;}
0406 ; }
0406 L39:
0406 2296 adiw R28,2
0408 .dbline 0 ; func end
0408 0895 ret
040A .dbend
040A .dbfunc e readdata _readdata fV
040A ; tempdata -> R22
040A ; trandata -> R20,R21
040A ; data -> R20
.even
040A _readdata::
040A 00D0 rcall push_gset2
040C 402F mov R20,R16
040E .dbline -1
040E .dbline 123
040E ;
040E ; //***************************读数据函数****************************//
040E ; void readdata(char data)
040E ; {int trandata;
040E .dbline 125
040E ; char tempdata;
040E ; if(data==0xE)
040E 4E30 cpi R20,14
0410 11F4 brne L64
0412 .dbline 126
0412 ; Eepromdata();
0412 7FDF rcall _Eepromdata
0414 23C0 rjmp L65
0416 L64:
0416 .dbline 128
0416 ; else
0416 ; {switch(data)
0416 .dbline 128
0416 5527 clr R21
0418 4130 cpi R20,1
041A E0E0 ldi R30,0
041C 5E07 cpc R21,R30
041E 49F0 breq L69
0420 4230 cpi R20,2
0422 E0E0 ldi R30,0
0424 5E07 cpc R21,R30
0426 41F0 breq L70
0428 4330 cpi R20,3
042A E0E0 ldi R30,0
042C 5E07 cpc R21,R30
042E 49F0 breq L71
0430 0BC0 rjmp L67
0432 X3:
0432 .dbline 129
0432 L69:
0432 .dbline 129
0432 ; {case 1:trandata=TCNT1;break; //读TCNT1
0432 4CB5 in R20,0x2c
0434 5DB5 in R21,0x2d
0436 .dbline 129
0436 08C0 rjmp L67
0438 L70:
0438 .dbline 130
0438 ; case 2:trandata=(int)(tempdata=TCNT0);break;//读TCNT0
0438 22B6 in R2,0x32
043A 622D mov R22,R2
043C 422D mov R20,R2
043E 5527 clr R21
0440 .dbline 130
0440 03C0 rjmp L67
0442 L71:
0442 .dbline 131
0442 ; case 3:trandata=GetOutputADC();break;//读A/D转换结果
0442 F2DD rcall _GetOutputADC
0444 402F mov R20,R16
0446 512F mov R21,R17
0448 .dbline 131
0448 .dbline 132
0448 ; default :break;}
0448 L67:
0448 .dbline 133
0448 ; Data[6]=(char)trandata;//数据低八位
0448 40931600 sts _Data+6,R20
044C .dbline 134
044C ; Data[7]=(char)(trandata>>8);//数据高八位
044C 242E mov R2,R20
044E 352E mov R3,R21
0450 232C mov R2,R3
0452 3324 clr R3
0454 27FC sbrc R2,7
0456 3094 com R3
0458 20921700 sts _Data+7,R2
045C .dbline 135
045C ; }
045C L65:
045C .dbline 136
045C ; Putdata(Data);
045C 00E0 ldi R16,<_Data
045E 10E0 ldi R17,>_Data
0460 CFDD rcall _Putdata
0462 .dbline -2
0462 .dbline 137
0462 ; }
0462 L63:
0462 00D0 rcall pop_gset2
0464 .dbline 0 ; func end
0464 0895 ret
0466 .dbsym r tempdata 22 c
0466 .dbsym r trandata 20 I
0466 .dbsym r data 20 c
0466 .dbend
0466 .dbfunc e order _order fV
.even
0466 _order::
0466 00D0 rcall push_gset1
0468 .dbline -1
0468 .dbline 141
0468 ;
0468 ; //***************************命令函数******************************//
0468 ; void order(void)
0468 ; {switch (Data[4])
0468 .dbline 141
0468 40911400 lds R20,_Data+4
046C 5527 clr R21
046E 403C cpi R20,192
0470 E0E0 ldi R30,0
0472 5E07 cpc R21,R30
0474 09F1 breq L79
0476 413C cpi R20,193
0478 E0E0 ldi R30,0
047A 5E07 cpc R21,R30
047C F9F0 breq L80
047E 423C cpi R20,194
0480 E0E0 ldi R30,0
0482 5E07 cpc R21,R30
0484 F9F0 breq L81
0486 433C cpi R20,195
0488 E0E0 ldi R30,0
048A 5E07 cpc R21,R30
048C 21F1 breq L82
048E 443C cpi R20,196
0490 E0E0 ldi R30,0
0492 5E07 cpc R21,R30
0494 49F1 breq L83
0496 453C cpi R20,197
0498 E0E0 ldi R30,0
049A 5E07 cpc R21,R30
049C 39F1 breq L84
049E 463C cpi R20,198
04A0 E0E0 ldi R30,0
04A2 5E07 cpc R21,R30
04A4 29F1 breq L85
04A6 483C cpi R20,200
04A8 E0E0 ldi R30,0
04AA 5E07 cpc R21,R30
04AC 41F1 breq L86
04AE 493C cpi R20,201
04B0 E0E0 ldi R30,0
04B2 5E07 cpc R21,R30
04B4 41F1 breq L87
04B6 2AC0 rjmp L76
04B8 X4:
04B8 .dbline 142
04B8 L79:
04B8 .dbline 142
04B8 ; {case 0xC0:PORTB=PORTB|0x04;break; //停止
04B8 C29A sbi 0x18,2
04BA .dbline 142
04BA 28C0 rjmp L76
04BC L80:
04BC .dbline 143
04BC ; case 0xC1:PORTB=PORTB&0xFB;break; //启动
04BC 88B3 in R24,0x18
04BE 8B7F andi R24,251
04C0 88BB out 0x18,R24
04C2 .dbline 143
04C2 24C0 rjmp L76
04C4 L81:
04C4 .dbline 145
04C4 ; case 0xC2: //正转
04C4 ; {PORTB=PORTB&0xFC|0x02;
04C4 .dbline 145
04C4 88B3 in R24,0x18
04C6 8C7F andi R24,252
04C8 8260 ori R24,2
04CA 88BB out 0x18,R24
04CC .dbline 146
04CC ; PORTD=PORTD&0x3F|0x40;
04CC 82B3 in R24,0x12
04CE 8F73 andi R24,63
04D0 8064 ori R24,64
04D2 82BB out 0x12,R24
04D4 .dbline 147
04D4 ; break;}
04D4 1BC0 rjmp L76
04D6 L82:
04D6 .dbline 149
04D6 ; case 0xC3: //反转
04D6 ; {PORTB=PORTB&0xFC|0x01;
04D6 .dbline 149
04D6 88B3 in R24,0x18
04D8 8C7F andi R24,252
04DA 8160 ori R24,1
04DC 88BB out 0x18,R24
04DE .dbline 150
04DE ; PORTD=PORTD&0x3F|0x80;
04DE 82B3 in R24,0x12
04E0 8F73 andi R24,63
04E2 8068 ori R24,128
04E4 82BB out 0x12,R24
04E6 .dbline 151
04E6 ; break;}
04E6 12C0 rjmp L76
04E8 L83:
04E8 .dbline 152
04E8 ; case 0xC4:Upspeed();break; //加速
04E8 A8DD rcall _Upspeed
04EA .dbline 152
04EA 10C0 rjmp L76
04EC L84:
04EC .dbline 153
04EC ; case 0xC5:Downspeed();break; //减速
04EC C9DD rcall _Downspeed
04EE .dbline 153
04EE 0EC0 rjmp L76
04F0 L85:
04F0 .dbline 155
04F0 ; case 0xC6: //制动
04F0 ; {PORTB=PORTB|0x03;
04F0 .dbline 155
04F0 88B3 in R24,0x18
04F2 8360 ori R24,3
04F4 88BB out 0x18,R24
04F6 .dbline 156
04F6 ; PORTD=PORTD&0x3F;
04F6 82B3 in R24,0x12
04F8 8F73 andi R24,63
04FA 82BB out 0x12,R24
04FC .dbline 157
04FC ; break;}
04FC 07C0 rjmp L76
04FE L86:
04FE .dbline 158
04FE ; case 0xC8:flage=1;break; //监控
04FE 81E0 ldi R24,1
0500 80930600 sts _flage,R24
0504 .dbline 158
0504 03C0 rjmp L76
0506 L87:
0506 .dbline 159
0506 2224 clr R2
0508 20920600 sts _flage,R2
050C .dbline 159
050C .dbline 160
050C L76:
050C .dbline -2
050C .dbline 162
050C ; case 0xC9:flage=0;break; //退出监控
050C ; default :break;
050C ; }
050C ; }
050C L74:
050C 00D0 rcall pop_gset1
050E .dbline 0 ; func end
050E 0895 ret
0510 .dbend
0510 .dbfunc e Datadisposal _Datadisposal fV
0510 ; operation -> R20
0510 ; temp -> R22,R23
.even
0510 _Datadisposal::
0510 00D0 rcall push_gset2
0512 2297 sbiw R28,2
0514 .dbline -1
0514 .dbline 167
0514 ;
0514 ;
0514 ; //***************************数据处理函数**************************//
0514 ; void Datadisposal(void)
0514 ; {char operation;
0514 .dbline 169
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -