📄 motor2.lst
字号:
(0133) {
(0134) clr_bit(PORTA,0);
00E6 98D8 CBI 0x1B,0
(0135) clr_bit(PORTA,1);
00E7 98D9 CBI 0x1B,1
(0136) OCR1B=speed*255/100*speedlp/100;
00E8 EF0F LDI R16,0xFF
00E9 E010 LDI R17,0
00EA 019A MOVW R18,R20
00EB D0CC RCALL empy16s
00EC E624 LDI R18,0x64
00ED E030 LDI R19,0
00EE D094 RCALL div16s
00EF 0198 MOVW R18,R16
00F0 E604 LDI R16,0x64
00F1 E010 LDI R17,0
00F2 D0C5 RCALL empy16s
00F3 E624 LDI R18,0x64
00F4 E030 LDI R19,0
00F5 D08D RCALL div16s
00F6 BD19 OUT 0x29,R17
00F7 BD08 OUT 0x28,R16
(0137) }
00F8 C012 RJMP 0x010B
(0138) else
(0139) {
(0140) set_bit(PORTA,0);
00F9 9AD8 SBI 0x1B,0
(0141) clr_bit(PORTA,1);
00FA 98D9 CBI 0x1B,1
(0142) OCR1B=speed*255/100*speedlp/100;
00FB EF0F LDI R16,0xFF
00FC E010 LDI R17,0
00FD 019A MOVW R18,R20
00FE D0B9 RCALL empy16s
00FF E624 LDI R18,0x64
0100 E030 LDI R19,0
0101 D081 RCALL div16s
0102 0198 MOVW R18,R16
0103 E604 LDI R16,0x64
0104 E010 LDI R17,0
0105 D0B2 RCALL empy16s
0106 E624 LDI R18,0x64
0107 E030 LDI R19,0
0108 D07A RCALL div16s
0109 BD19 OUT 0x29,R17
010A BD08 OUT 0x28,R16
(0143) }
010B D0C7 RCALL pop_gset1
010C 9508 RET
(0144) }
(0145) void forward() {motor_L(90);motor_R(90);} //0011 1010 车头向前
_forward:
010D E50A LDI R16,0x5A
010E E010 LDI R17,0
010F DFB6 RCALL _motor_L
0110 E50A LDI R16,0x5A
0111 E010 LDI R17,0
0112 DF6C RCALL _motor_R
0113 9508 RET
(0146) void backward() {motor_L(-90);motor_R(-90);} //0011 0101 车尾向前
_backward:
0114 EA06 LDI R16,0xA6
0115 EF1F LDI R17,0xFF
0116 DFAF RCALL _motor_L
0117 EA06 LDI R16,0xA6
0118 EF1F LDI R17,0xFF
0119 DF65 RCALL _motor_R
011A 9508 RET
(0147) void stop() {motor_L(0);motor_R(0);} //0000 0000 停止
_stop:
011B 2700 CLR R16
011C 2711 CLR R17
011D DFA8 RCALL _motor_L
011E 2700 CLR R16
011F 2711 CLR R17
0120 DF5E RCALL _motor_R
0121 9508 RET
(0148) void pause() {set_bit(PORTA,0);set_bit(PORTA,1);
_pause:
0122 9AD8 SBI 0x1B,0
0123 9AD9 SBI 0x1B,1
(0149) set_bit(PORTA,2);set_bit(PORTA,3);} //0011 1111 制动
0124 9ADA SBI 0x1B,2
0125 9ADB SBI 0x1B,3
0126 9508 RET
(0150) void forleft() {motor_L(1);motor_R(70);} //0011 1000 车头向前左拐
_forleft:
0127 E001 LDI R16,1
0128 E010 LDI R17,0
0129 DF9C RCALL _motor_L
012A E406 LDI R16,0x46
012B E010 LDI R17,0
012C DF52 RCALL _motor_R
012D 9508 RET
(0151) void foright() {motor_L(70);motor_R(1);} //0011 0010 车头向前右拐
_foright:
012E E406 LDI R16,0x46
012F E010 LDI R17,0
0130 DF95 RCALL _motor_L
0131 E001 LDI R16,1
0132 E010 LDI R17,0
0133 DF4B RCALL _motor_R
0134 9508 RET
(0152) void backleft() {motor_L(-70);motor_R(-1);} //0011 0001 车尾向前左拐
_backleft:
0135 EB0A LDI R16,0xBA
0136 EF1F LDI R17,0xFF
0137 DF8E RCALL _motor_L
0138 EF0F LDI R16,0xFF
0139 EF1F LDI R17,0xFF
013A DF44 RCALL _motor_R
013B 9508 RET
(0153) void backright() {motor_L(-1);motor_R(-70);} //0011 0100 车尾向前右拐
_backright:
013C EF0F LDI R16,0xFF
013D EF1F LDI R17,0xFF
013E DF87 RCALL _motor_L
013F EB0A LDI R16,0xBA
0140 EF1F LDI R17,0xFF
0141 DF3D RCALL _motor_R
0142 9508 RET
(0154) void cycleft() {motor_L(-40);motor_R(50);} //0011 1001 逆时针旋转
_cycleft:
0143 ED08 LDI R16,0xD8
0144 EF1F LDI R17,0xFF
0145 DF80 RCALL _motor_L
0146 E302 LDI R16,0x32
0147 E010 LDI R17,0
0148 DF36 RCALL _motor_R
0149 9508 RET
(0155) void cycright() {motor_L(50);motor_R(-40);} //0011 0110 顺时针旋转
_cycright:
014A E302 LDI R16,0x32
014B E010 LDI R17,0
014C DF79 RCALL _motor_L
014D ED08 LDI R16,0xD8
014E EF1F LDI R17,0xFF
014F DF2F RCALL _motor_R
0150 9508 RET
(0156)
(0157) //收集包裹函数
(0158) void getpacket()
(0159) {set_bit(PORTD,0);
_getpacket:
0151 9A90 SBI 0x12,0
(0160) clr_bit(PORTD,1);}//10,启动收集装置
0152 9891 CBI 0x12,1
0153 9508 RET
_stopget:
0154 D07B RCALL push_gset1
(0161) void stopget()
(0162) {
0155 C001 RJMP 0x0157
(0163) while(SJ==1) getpacket();
0156 DFFA RCALL _getpacket
0157 9B84 SBIS 0x10,4
0158 C003 RJMP 0x015C
0159 E041 LDI R20,1
015A E050 LDI R21,0
015B C002 RJMP 0x015E
015C 2744 CLR R20
015D 2755 CLR R21
015E 3041 CPI R20,1
015F E0E0 LDI R30,0
0160 075E CPC R21,R30
0161 F3A1 BEQ 0x0156
(0164) set_bit(PORTD,1);
0162 9A91 SBI 0x12,1
(0165) clr_bit(PORTD,0);
0163 9890 CBI 0x12,0
(0166) delay_ms(50);
0164 E302 LDI R16,0x32
0165 E010 LDI R17,0
0166 DEE4 RCALL _delay_ms
(0167) set_bit(PORTD,1);
0167 9A91 SBI 0x12,1
(0168) set_bit(PORTD,0);
0168 9A90 SBI 0x12,0
0169 D069 RCALL pop_gset1
016A 9508 RET
(0169) }
(0170)
(0171) void main()
(0172) {
(0173) CLI();
_main:
016B 94F8 BCLR 7
(0174) InitPorts();
016C DEC4 RCALL _InitPorts
(0175) pwm_init();
016D DEF7 RCALL _pwm_init
(0176) SEI();
016E 9478 BSET 7
(0177) delay_ms(200);
016F EC08 LDI R16,0xC8
0170 E010 LDI R17,0
0171 DED9 RCALL _delay_ms
(0178)
(0179) /*forward();//同时正转
(0180) delay_s(3);
(0181) pause();
(0182) delay_s(3);
(0183) backward();//同时反转
(0184) delay_s(3);
(0185) pause();
(0186) delay_s(3);
(0187) forleft();//左停右正
(0188) delay_s(3);
(0189) pause();
(0190) delay_s(3);
(0191) foright();//左正右停
(0192) delay_s(3);
(0193) pause();
(0194) delay_s(3);
(0195) backleft();//左反右停
(0196) delay_s(3);
(0197) pause();
(0198) delay_s(3);
(0199) backright();//左停右反
(0200) delay_s(3);
(0201) pause();
(0202) delay_s(3);*/
(0203) cycleft();//左反右正
0172 DFD0 RCALL _cycleft
(0204) delay_s(3);
0173 E003 LDI R16,3
0174 E010 LDI R17,0
0175 DEE2 RCALL _delay_s
(0205) pause();
0176 DFAB RCALL _pause
(0206) delay_s(3);
0177 E003 LDI R16,3
0178 E010 LDI R17,0
0179 DEDE RCALL _delay_s
(0207) cycright();//左正右反
017A DFCF RCALL _cycright
(0208) delay_s(3);
FILE: <library>
017B E003 LDI R16,3
017C E010 LDI R17,0
017D DEDA RCALL _delay_s
017E 9508 RET
mod16s:
017F 9468 BSET 6
0180 92DA ST R13,-Y
0181 2ED1 MOV R13,R17
0182 C004 RJMP 0x0187
div16s:
0183 94E8 BCLR 6
0184 92DA ST R13,-Y
0185 2ED1 MOV R13,R17
0186 26D3 EOR R13,R19
0187 FF17 SBRS R17,7
0188 C004 RJMP 0x018D
0189 9510 COM R17
018A 9500 COM R16
018B 5F0F SUBI R16,0xFF
018C 4F1F SBCI R17,0xFF
018D FF37 SBRS R19,7
018E C004 RJMP 0x0193
018F 9530 COM R19
0190 9520 COM R18
0191 5F2F SUBI R18,0xFF
0192 4F3F SBCI R19,0xFF
0193 D00B RCALL xdiv16u
0194 FED7 SBRS R13,7
0195 C004 RJMP 0x019A
0196 9510 COM R17
0197 9500 COM R16
0198 5F0F SUBI R16,0xFF
0199 4F1F SBCI R17,0xFF
019A 90D9 LD R13,Y+
019B 9508 RET
mod16u:
019C 9468 BSET 6
019D C001 RJMP xdiv16u
div16u:
019E 94E8 BCLR 6
xdiv16u:
019F 92EA ST R14,-Y
01A0 92FA ST R15,-Y
01A1 938A ST R24,-Y
01A2 24EE CLR R14
01A3 24FF CLR R15
01A4 E180 LDI R24,0x10
01A5 0F00 LSL R16
01A6 1F11 ROL R17
01A7 1CEE ROL R14
01A8 1CFF ROL R15
01A9 16E2 CP R14,R18
01AA 06F3 CPC R15,R19
01AB F018 BCS 0x01AF
01AC 1AE2 SUB R14,R18
01AD 0AF3 SBC R15,R19
01AE 9503 INC R16
01AF 958A DEC R24
01B0 F7A1 BNE 0x01A5
01B1 F416 BRTC 0x01B4
01B2 2D0E MOV R16,R14
01B3 2D1F MOV R17,R15
01B4 9189 LD R24,Y+
01B5 90F9 LD R15,Y+
01B6 90E9 LD R14,Y+
01B7 9508 RET
empy16s:
01B8 920A ST R0,-Y
01B9 921A ST R1,-Y
01BA 938A ST R24,-Y
01BB 939A ST R25,-Y
01BC 9F02 MUL R16,R18
01BD 01C0 MOVW R24,R0
01BE 9F12 MUL R17,R18
01BF 0D90 ADD R25,R0
01C0 9F03 MUL R16,R19
01C1 0D90 ADD R25,R0
01C2 018C MOVW R16,R24
01C3 9199 LD R25,Y+
01C4 9189 LD R24,Y+
01C5 9019 LD R1,Y+
01C6 9009 LD R0,Y+
01C7 9508 RET
push_gset5:
01C8 92FA ST R15,-Y
01C9 92EA ST R14,-Y
push_gset4:
01CA 92DA ST R13,-Y
01CB 92CA ST R12,-Y
push_gset3:
01CC 92BA ST R11,-Y
01CD 92AA ST R10,-Y
push_gset2:
01CE 937A ST R23,-Y
01CF 936A ST R22,-Y
push_gset1:
01D0 935A ST R21,-Y
01D1 934A ST R20,-Y
01D2 9508 RET
pop_gset1:
01D3 E0E1 LDI R30,1
pop:
01D4 9149 LD R20,Y+
01D5 9159 LD R21,Y+
01D6 FDE0 SBRC R30,0
01D7 9508 RET
01D8 9169 LD R22,Y+
01D9 9179 LD R23,Y+
01DA FDE1 SBRC R30,1
01DB 9508 RET
01DC 90A9 LD R10,Y+
01DD 90B9 LD R11,Y+
01DE FDE2 SBRC R30,2
01DF 9508 RET
01E0 90C9 LD R12,Y+
01E1 90D9 LD R13,Y+
01E2 FDE3 SBRC R30,3
01E3 9508 RET
01E4 90E9 LD R14,Y+
01E5 90F9 LD R15,Y+
01E6 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -