📄 motor2.lis
字号:
00A6 BCF4 brge L16
00A8 .dbline 105
00A8 ; {
00A8 .dbline 106
00A8 ; set_bit(PORTA,3);
00A8 DB9A sbi 0x1b,3
00AA .dbline 107
00AA ; clr_bit(PORTA,2);
00AA DA98 cbi 0x1b,2
00AC .dbline 108
00AC ; OCR1A=(-1)*speed*255/100*speedrp/100;
00AC 0FEF ldi R16,-1
00AE 1FEF ldi R17,-1
00B0 9A01 movw R18,R20
00B2 00D0 rcall empy16s
00B4 9801 movw R18,R16
00B6 0FEF ldi R16,255
00B8 10E0 ldi R17,0
00BA 00D0 rcall empy16s
00BC 24E6 ldi R18,100
00BE 30E0 ldi R19,0
00C0 00D0 rcall div16s
00C2 9801 movw R18,R16
00C4 04E6 ldi R16,100
00C6 10E0 ldi R17,0
00C8 00D0 rcall empy16s
00CA 24E6 ldi R18,100
00CC 30E0 ldi R19,0
00CE 00D0 rcall div16s
00D0 1BBD out 0x2b,R17
00D2 0ABD out 0x2a,R16
00D4 .dbline 109
00D4 ; }
00D4 28C0 rjmp L17
00D6 L16:
00D6 .dbline 110
00D6 ; else if(speed==0)
00D6 4030 cpi R20,0
00D8 4507 cpc R20,R21
00DA 99F4 brne L18
00DC X2:
00DC .dbline 111
00DC ; {
00DC .dbline 112
00DC ; clr_bit(PORTA,2);
00DC DA98 cbi 0x1b,2
00DE .dbline 113
00DE ; clr_bit(PORTA,3);
00DE DB98 cbi 0x1b,3
00E0 .dbline 114
00E0 ; OCR1A=speed*255/100*speedrp/100;
00E0 0FEF ldi R16,255
00E2 10E0 ldi R17,0
00E4 9A01 movw R18,R20
00E6 00D0 rcall empy16s
00E8 24E6 ldi R18,100
00EA 30E0 ldi R19,0
00EC 00D0 rcall div16s
00EE 9801 movw R18,R16
00F0 04E6 ldi R16,100
00F2 10E0 ldi R17,0
00F4 00D0 rcall empy16s
00F6 24E6 ldi R18,100
00F8 30E0 ldi R19,0
00FA 00D0 rcall div16s
00FC 1BBD out 0x2b,R17
00FE 0ABD out 0x2a,R16
0100 .dbline 115
0100 ; }
0100 12C0 rjmp L19
0102 L18:
0102 .dbline 117
0102 ; else
0102 ; {
0102 .dbline 118
0102 ; set_bit(PORTA,2);
0102 DA9A sbi 0x1b,2
0104 .dbline 119
0104 ; clr_bit(PORTA,3);
0104 DB98 cbi 0x1b,3
0106 .dbline 120
0106 ; OCR1A=speed*255/100*speedrp/100;
0106 0FEF ldi R16,255
0108 10E0 ldi R17,0
010A 9A01 movw R18,R20
010C 00D0 rcall empy16s
010E 24E6 ldi R18,100
0110 30E0 ldi R19,0
0112 00D0 rcall div16s
0114 9801 movw R18,R16
0116 04E6 ldi R16,100
0118 10E0 ldi R17,0
011A 00D0 rcall empy16s
011C 24E6 ldi R18,100
011E 30E0 ldi R19,0
0120 00D0 rcall div16s
0122 1BBD out 0x2b,R17
0124 0ABD out 0x2a,R16
0126 .dbline 121
0126 ; }
0126 L19:
0126 L17:
0126 .dbline -2
0126 L15:
0126 00D0 rcall pop_gset1
0128 .dbline 0 ; func end
0128 0895 ret
012A .dbsym r speed 20 I
012A .dbend
012A .dbfunc e motor_L _motor_L fV
012A ; speed -> R20,R21
.even
012A _motor_L::
012A 00D0 rcall push_gset1
012C A801 movw R20,R16
012E .dbline -1
012E .dbline 125
012E ; }
012E ; //左电机驱动函数
012E ; void motor_L(int speed)
012E ; {
012E .dbline 126
012E ; if(speed<0)
012E 4030 cpi R20,0
0130 E0E0 ldi R30,0
0132 5E07 cpc R21,R30
0134 BCF4 brge L21
0136 .dbline 127
0136 ; {
0136 .dbline 128
0136 ; set_bit(PORTA,1);
0136 D99A sbi 0x1b,1
0138 .dbline 129
0138 ; clr_bit(PORTA,0);
0138 D898 cbi 0x1b,0
013A .dbline 130
013A ; OCR1B=(-1)*speed*255/100*speedlp/100;
013A 0FEF ldi R16,-1
013C 1FEF ldi R17,-1
013E 9A01 movw R18,R20
0140 00D0 rcall empy16s
0142 9801 movw R18,R16
0144 0FEF ldi R16,255
0146 10E0 ldi R17,0
0148 00D0 rcall empy16s
014A 24E6 ldi R18,100
014C 30E0 ldi R19,0
014E 00D0 rcall div16s
0150 9801 movw R18,R16
0152 04E6 ldi R16,100
0154 10E0 ldi R17,0
0156 00D0 rcall empy16s
0158 24E6 ldi R18,100
015A 30E0 ldi R19,0
015C 00D0 rcall div16s
015E 19BD out 0x29,R17
0160 08BD out 0x28,R16
0162 .dbline 131
0162 ; }
0162 28C0 rjmp L22
0164 L21:
0164 .dbline 132
0164 ; else if(speed==0)
0164 4030 cpi R20,0
0166 4507 cpc R20,R21
0168 99F4 brne L23
016A X3:
016A .dbline 133
016A ; {
016A .dbline 134
016A ; clr_bit(PORTA,0);
016A D898 cbi 0x1b,0
016C .dbline 135
016C ; clr_bit(PORTA,1);
016C D998 cbi 0x1b,1
016E .dbline 136
016E ; OCR1B=speed*255/100*speedlp/100;
016E 0FEF ldi R16,255
0170 10E0 ldi R17,0
0172 9A01 movw R18,R20
0174 00D0 rcall empy16s
0176 24E6 ldi R18,100
0178 30E0 ldi R19,0
017A 00D0 rcall div16s
017C 9801 movw R18,R16
017E 04E6 ldi R16,100
0180 10E0 ldi R17,0
0182 00D0 rcall empy16s
0184 24E6 ldi R18,100
0186 30E0 ldi R19,0
0188 00D0 rcall div16s
018A 19BD out 0x29,R17
018C 08BD out 0x28,R16
018E .dbline 137
018E ; }
018E 12C0 rjmp L24
0190 L23:
0190 .dbline 139
0190 ; else
0190 ; {
0190 .dbline 140
0190 ; set_bit(PORTA,0);
0190 D89A sbi 0x1b,0
0192 .dbline 141
0192 ; clr_bit(PORTA,1);
0192 D998 cbi 0x1b,1
0194 .dbline 142
0194 ; OCR1B=speed*255/100*speedlp/100;
0194 0FEF ldi R16,255
0196 10E0 ldi R17,0
0198 9A01 movw R18,R20
019A 00D0 rcall empy16s
019C 24E6 ldi R18,100
019E 30E0 ldi R19,0
01A0 00D0 rcall div16s
01A2 9801 movw R18,R16
01A4 04E6 ldi R16,100
01A6 10E0 ldi R17,0
01A8 00D0 rcall empy16s
01AA 24E6 ldi R18,100
01AC 30E0 ldi R19,0
01AE 00D0 rcall div16s
01B0 19BD out 0x29,R17
01B2 08BD out 0x28,R16
01B4 .dbline 143
01B4 ; }
01B4 L24:
01B4 L22:
01B4 .dbline -2
01B4 L20:
01B4 00D0 rcall pop_gset1
01B6 .dbline 0 ; func end
01B6 0895 ret
01B8 .dbsym r speed 20 I
01B8 .dbend
01B8 .dbfunc e forward _forward fV
.even
01B8 _forward::
01B8 .dbline -1
01B8 .dbline 145
01B8 ; }
01B8 ; void forward() {motor_L(90);motor_R(90);} //0011 1010 车头向前
01B8 .dbline 145
01B8 0AE5 ldi R16,90
01BA 10E0 ldi R17,0
01BC B6DF rcall _motor_L
01BE .dbline 145
01BE 0AE5 ldi R16,90
01C0 10E0 ldi R17,0
01C2 6CDF rcall _motor_R
01C4 .dbline -2
01C4 L25:
01C4 .dbline 0 ; func end
01C4 0895 ret
01C6 .dbend
01C6 .dbfunc e backward _backward fV
.even
01C6 _backward::
01C6 .dbline -1
01C6 .dbline 146
01C6 ; void backward() {motor_L(-90);motor_R(-90);} //0011 0101 车尾向前
01C6 .dbline 146
01C6 06EA ldi R16,-90
01C8 1FEF ldi R17,-1
01CA AFDF rcall _motor_L
01CC .dbline 146
01CC 06EA ldi R16,-90
01CE 1FEF ldi R17,-1
01D0 65DF rcall _motor_R
01D2 .dbline -2
01D2 L26:
01D2 .dbline 0 ; func end
01D2 0895 ret
01D4 .dbend
01D4 .dbfunc e stop _stop fV
.even
01D4 _stop::
01D4 .dbline -1
01D4 .dbline 147
01D4 ; void stop() {motor_L(0);motor_R(0);} //0000 0000 停止
01D4 .dbline 147
01D4 0027 clr R16
01D6 1127 clr R17
01D8 A8DF rcall _motor_L
01DA .dbline 147
01DA 0027 clr R16
01DC 1127 clr R17
01DE 5EDF rcall _motor_R
01E0 .dbline -2
01E0 L27:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -