📄 xunxiandongzuo8.lis
字号:
0190 ; unsigned int temp_int = 0x0000;
0190 FE01 movw R30,R28
0192 2480 ldd R2,z+4
0194 3580 ldd R3,z+5
0196 F501 movw R30,R10
0198 3786 std z+15,R3
019A 2686 std z+14,R2
019C .dbline 108
019C ; unsigned char temp_char = 0x00;
019C ;
019C 48E0 ldi R20,8
019E 50E0 ldi R21,0
01A0 60E0 ldi R22,0
01A2 70E0 ldi R23,0
01A4 FE01 movw R30,R28
01A6 2080 ldd R2,z+0
01A8 3180 ldd R3,z+1
01AA 4280 ldd R4,z+2
01AC 5380 ldd R5,z+3
01AE 2416 cp R2,R20
01B0 3506 cpc R3,R21
01B2 4606 cpc R4,R22
01B4 5706 cpc R5,R23
01B6 7CF4 brge L19
01B8 48EF ldi R20,248
01BA 5FEF ldi R21,255
01BC 6FEF ldi R22,255
01BE 7FEF ldi R23,255
01C0 FE01 movw R30,R28
01C2 2080 ldd R2,z+0
01C4 3180 ldd R3,z+1
01C6 4280 ldd R4,z+2
01C8 5380 ldd R5,z+3
01CA 4215 cp R20,R2
01CC 5305 cpc R21,R3
01CE 6405 cpc R22,R4
01D0 7505 cpc R23,R5
01D2 0CF4 brge L19
01D4 .dbline 109
01D4 ; temp_char = TCNT0; //读取脉冲计数低字节
01D4 .dbline 110
01D4 ; TCNT0=0;
01D4 5BC0 rjmp L20
01D6 L19:
01D6 .dbline 112
01D6 ;
01D6 ; temp_int = num_H; //读取脉冲计数高字节
01D6 C501 movw R24,R10
01D8 8896 adiw R24,40
01DA 1C01 movw R2,R24
01DC FE01 movw R30,R28
01DE 4080 ldd R4,z+0
01E0 5180 ldd R5,z+1
01E2 6280 ldd R6,z+2
01E4 7380 ldd R7,z+3
01E6 F501 movw R30,R10
01E8 428D ldd R20,z+26
01EA 538D ldd R21,z+27
01EC 6627 clr R22
01EE 57FD sbrc R21,7
01F0 6095 com R22
01F2 7727 clr R23
01F4 67FD sbrc R22,7
01F6 7095 com R23
01F8 7A92 st -y,R7
01FA 6A92 st -y,R6
01FC 5A92 st -y,R5
01FE 4A92 st -y,R4
0200 8A01 movw R16,R20
0202 9B01 movw R18,R22
0204 00D0 rcall empy32s
0206 2801 movw R4,R16
0208 3901 movw R6,R18
020A FE01 movw R30,R28
020C 4481 ldd R20,z+4
020E 5581 ldd R21,z+5
0210 6681 ldd R22,z+6
0212 7781 ldd R23,z+7
0214 F501 movw R30,R10
0216 808D ldd R24,z+24
0218 918D ldd R25,z+25
021A AA27 clr R26
021C 97FD sbrc R25,7
021E A095 com R26
0220 BB27 clr R27
0222 A7FD sbrc R26,7
0224 B095 com R27
0226 7A93 st -y,R23
0228 6A93 st -y,R22
022A 5A93 st -y,R21
022C 4A93 st -y,R20
022E 8C01 movw R16,R24
0230 9D01 movw R18,R26
0232 00D0 rcall empy32s
0234 A801 movw R20,R16
0236 B901 movw R22,R18
0238 440D add R20,R4
023A 551D adc R21,R5
023C 661D adc R22,R6
023E 771D adc R23,R7
0240 FE01 movw R30,R28
0242 4084 ldd R4,z+8
0244 5184 ldd R5,z+9
0246 6284 ldd R6,z+10
0248 7384 ldd R7,z+11
024A F501 movw R30,R10
024C 848D ldd R24,z+28
024E 958D ldd R25,z+29
0250 AA27 clr R26
0252 97FD sbrc R25,7
0254 A095 com R26
0256 BB27 clr R27
0258 A7FD sbrc R26,7
025A B095 com R27
025C 7A92 st -y,R7
025E 6A92 st -y,R6
0260 5A92 st -y,R5
0262 4A92 st -y,R4
0264 8C01 movw R16,R24
0266 9D01 movw R18,R26
0268 00D0 rcall empy32s
026A 400F add R20,R16
026C 511F adc R21,R17
026E 621F adc R22,R18
0270 731F adc R23,R19
0272 F101 movw R30,R2
0274 4080 ldd R4,z+0
0276 5180 ldd R5,z+1
0278 6280 ldd R6,z+2
027A 7380 ldd R7,z+3
027C 440E add R4,R20
027E 551E adc R5,R21
0280 661E adc R6,R22
0282 771E adc R7,R23
0284 4082 std z+0,R4
0286 5182 std z+1,R5
0288 6282 std z+2,R6
028A 7382 std z+3,R7
028C L20:
028C .dbline 114
028C ; num_H = 0;
028C ;
028C 40E0 ldi R20,0
028E 5CEF ldi R21,252
0290 6FE0 ldi R22,15
0292 70E0 ldi R23,0
0294 F501 movw R30,R10
0296 20A4 ldd R2,z+40
0298 31A4 ldd R3,z+41
029A 42A4 ldd R4,z+42
029C 53A4 ldd R5,z+43
029E 2416 cp R2,R20
02A0 3506 cpc R3,R21
02A2 4606 cpc R4,R22
02A4 5706 cpc R5,R23
02A6 54F0 brlt L21
02A8 .dbline 115
02A8 ; temp_int <<=8; //计算脉冲数
02A8 40E0 ldi R20,0
02AA 5CEF ldi R21,252
02AC 6FE0 ldi R22,15
02AE 70E0 ldi R23,0
02B0 F501 movw R30,R10
02B2 40A7 std z+40,R20
02B4 51A7 std z+41,R21
02B6 62A7 std z+42,R22
02B8 73A7 std z+43,R23
02BA 17C0 rjmp L22
02BC L21:
02BC .dbline 117
02BC ; temp_int += temp_char;
02BC ;
02BC 40E0 ldi R20,0
02BE 54E0 ldi R21,4
02C0 60EF ldi R22,240
02C2 7FEF ldi R23,255
02C4 F501 movw R30,R10
02C6 20A4 ldd R2,z+40
02C8 31A4 ldd R3,z+41
02CA 42A4 ldd R4,z+42
02CC 53A4 ldd R5,z+43
02CE 4215 cp R20,R2
02D0 5305 cpc R21,R3
02D2 6405 cpc R22,R4
02D4 7505 cpc R23,R5
02D6 4CF0 brlt L23
02D8 .dbline 118
02D8 ; Num_Speed -= temp_int; //累计脉冲数
02D8 40E0 ldi R20,0
02DA 54E0 ldi R21,4
02DC 60EF ldi R22,240
02DE 7FEF ldi R23,255
02E0 F501 movw R30,R10
02E2 40A7 std z+40,R20
02E4 51A7 std z+41,R21
02E6 62A7 std z+42,R22
02E8 73A7 std z+43,R23
02EA L23:
02EA L22:
02EA .dbline 120
02EA ; }
02EA ;
02EA 8AE0 ldi R24,10
02EC 90E0 ldi R25,0
02EE F501 movw R30,R10
02F0 20A4 ldd R2,z+40
02F2 31A4 ldd R3,z+41
02F4 42A4 ldd R4,z+42
02F6 53A4 ldd R5,z+43
02F8 8A93 st -y,R24
02FA 8101 movw R16,R2
02FC 9201 movw R18,R4
02FE 00D0 rcall asr32
0300 .dbline -2
0300 L18:
0300 2C96 adiw R28,12
0302 00D0 rcall pop_gset3
0304 .dbline 0 ; func end
0304 0895 ret
0306 .dbsym l dd_error 8 L
0306 .dbsym l d_error 4 L
0306 .dbsym l error 0 L
0306 .dbsym r pp 10 pX
0306 .dbend
.area data(ram, con, rel)
0006 .dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
0006 L26:
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
.area text(rom, con, rel)
0306 .dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
0306 .dbfunc e s_PIDCalc _s_PIDCalc fI
0306 .dbsym s flag L26 c
0306 ; temp_comp -> y+8
0306 ; d_error -> y+4
0306 ; error -> y+0
0306 ; pp -> R10,R11
.even
0306 _s_PIDCalc::
0306 00D0 rcall push_gset3
0308 5801 movw R10,R16
030A 2C97 sbiw R28,12
030C .dbline -1
030C .dbline 128
030C ;
030C ; //TIMER2 initialize - prescale:1024
030C ; // WGM: Normal
030C ; // desired value: 20mSec
030C ; // actual value: 19.968mSec (0.2%)
030C ; void timer2_init(void)
030C ; {
030C ; TCCR2 = 0x00; //stop
030C .dbline 133
030C ; TCNT2 = 0x64; //setup
030C ;
030C ; TCCR2 = 0x07; //start
030C ; }
030C ;
030C C501 movw R24,R10
030E 0896 adiw R24,8
0310 F501 movw R30,R10
0312 4280 ldd R4,z+2
0314 5380 ldd R5,z+3
0316 6624 clr R6
0318 57FC sbrc R5,7
031A 6094 com R6
031C 7724 clr R7
031E 67FC sbrc R6,7
0320 7094 com R7
0322 FC01 movw R30,R24
0324 4081 ldd R20,z+0
0326 5181 ldd R21,z+1
0328 6281 ldd R22,z+2
032A 7381 ldd R23,z+3
032C 440D add R20,R4
032E 551D adc R21,R5
0330 661D adc R22,R6
0332 771D adc R23,R7
0334 4083 std z+0,R20
0336 5183 std z+1,R21
0338 6283 std z+2,R22
033A 7383 std z+3,R23
033C .dbline 134
033C ; /* 定时进行PID运算 */
033C .dbline 136
033C ; #define Dir ( (PIND)&(1<<2) ) //方向输入,“非零”为GO_AHEAD,“0”为GO_BACK
033C ;
033C F501 movw R30,R10
033E 2084 ldd R2,z+8
0340 3184 ldd R3,z+9
0342 4284 ldd R4,z+10
0344 5384 ldd R5,z+11
0346 F501 movw R30,R10
0348 6480 ldd R6,z+4
034A 7580 ldd R7,z+5
034C 8680 ldd R8,z+6
034E 9780 ldd R9,z+7
0350 6218 sub R6,R2
0352 7308 sbc R7,R3
0354 8408 sbc R8,R4
0356 9508 sbc R9,R5
0358 FE01 movw R30,R28
035A 6082 std z+0,R6
035C 7182 std z+1,R7
035E 8282 std z+2,R8
0360 9382 std z+3,R9
0362 40E0 ldi R20,0
0364 50E0 ldi R21,0
0366 60E0 ldi R22,0
0368 70E0 ldi R23,0
036A FE01 movw R30,R28
036C 2080 ldd R2,z+0
036E 3180 ldd R3,z+1
0370 4280 ldd R4,z+2
0372 5380 ldd R5,z+3
0374 2416 cp R2,R20
0376 3506 cpc R3,R21
0378 4606 cpc R4,R22
037A 5706 cpc R5,R23
037C 7CF4 brge L27
037E 40E0 ldi R20,0
0380 50E0 ldi R21,0
0382 60E0 ldi R22,0
0384 70E0 ldi R23,0
0386 FE01 movw R30,R28
0388 2080 ldd R2,z+0
038A 3180 ldd R3,z+1
038C 4280 ldd R4,z+2
038E 5380 ldd R5,z+3
0390 4215 cp R20,R2
0392 5305 cpc R21,R3
0394 6405 cpc R22,R4
0396 7505 cpc R23,R5
0398 0CF4 brge L27
039A .dbline 137
039A ; #pragma interrupt_handler timer2_ovf_isr:5
039A .dbline 139
039A ; void timer2_ovf_isr(void)
039A ; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -