📄 test_pc10_main.lis
字号:
02C4 01E9 ldi R16,657
02C6 12E0 ldi R17,2
02C8 D0DF xcall _inp
02CA 202E mov R2,R16
02CC 3324 clr R3
02CE 4424 clr R4
02D0 5524 clr R5
02D2 FE01 movw R30,R28
02D4 2282 std z+2,R2
02D6 3382 std z+3,R3
02D8 4482 std z+4,R4
02DA 5582 std z+5,R5
02DC .dbline 317
02DC ; printf("%d ",high_byte);
02DC 4882 std y+0,R4
02DE 5982 std y+1,R5
02E0 222D mov R18,R2
02E2 332D mov R19,R3
02E4 00E0 ldi R16,<L65
02E6 10E0 ldi R17,>L65
02E8 0E940000 xcall _printf
02EC .dbline 318
02EC ; mid_byte=inp(GYRO_BASE+2);
02EC 02E9 ldi R16,658
02EE 12E0 ldi R17,2
02F0 BCDF xcall _inp
02F2 C02E mov R12,R16
02F4 DD24 clr R13
02F6 .dbline 319
02F6 ; printf("%d ",mid_byte);
02F6 9601 movw R18,R12
02F8 00E0 ldi R16,<L65
02FA 10E0 ldi R17,>L65
02FC 0E940000 xcall _printf
0300 .dbline 320
0300 ; low_byte=inp(GYRO_BASE+3);
0300 03E9 ldi R16,659
0302 12E0 ldi R17,2
0304 B2DF xcall _inp
0306 A02E mov R10,R16
0308 BB24 clr R11
030A .dbline 321
030A ; printf("%d ",low_byte);
030A 9501 movw R18,R10
030C 00E0 ldi R16,<L65
030E 10E0 ldi R17,>L65
0310 0E940000 xcall _printf
0314 .dbline 322
0314 ; outp(GYRO_BASE+4,0x00);
0314 2227 clr R18
0316 04E9 ldi R16,660
0318 12E0 ldi R17,2
031A 9DDF xcall _outp
031C .dbline 323
031C ; if(high_byte>=0x80)
031C 40E8 ldi R20,128
031E 50E0 ldi R21,0
0320 60E0 ldi R22,0
0322 70E0 ldi R23,0
0324 FE01 movw R30,R28
0326 2280 ldd R2,z+2
0328 3380 ldd R3,z+3
032A 4480 ldd R4,z+4
032C 5580 ldd R5,z+5
032E 2416 cp R2,R20
0330 3506 cpc R3,R21
0332 4606 cpc R4,R22
0334 5706 cpc R5,R23
0336 60F0 brlo L66
0338 .dbline 324
0338 ; high_byte |= 0xffffff00;
0338 40E0 ldi R20,0
033A 5FEF ldi R21,255
033C 6FEF ldi R22,255
033E 7FEF ldi R23,255
0340 242A or R2,R20
0342 352A or R3,R21
0344 462A or R4,R22
0346 572A or R5,R23
0348 2282 std z+2,R2
034A 3382 std z+3,R3
034C 4482 std z+4,R4
034E 5582 std z+5,R5
0350 L66:
0350 .dbline 325
0350 ; angle=(long)(((high_byte)<<16)+((mid_byte&0x00ff)<<8)+(low_byte&0x00ff));
0350 C601 movw R24,R12
0352 9070 andi R25,0
0354 982F mov R25,R24
0356 8827 clr R24
0358 1C01 movw R2,R24
035A 4424 clr R4
035C 5524 clr R5
035E FE01 movw R30,R28
0360 6280 ldd R6,z+2
0362 7380 ldd R7,z+3
0364 8480 ldd R8,z+4
0366 9580 ldd R9,z+5
0368 862C mov R8,R6
036A 972C mov R9,R7
036C 6624 clr R6
036E 7724 clr R7
0370 620C add R6,R2
0372 731C adc R7,R3
0374 841C adc R8,R4
0376 951C adc R9,R5
0378 C501 movw R24,R10
037A 9070 andi R25,0
037C 1C01 movw R2,R24
037E 4424 clr R4
0380 5524 clr R5
0382 620C add R6,R2
0384 731C adc R7,R3
0386 841C adc R8,R4
0388 951C adc R9,R5
038A 6682 std z+6,R6
038C 7782 std z+7,R7
038E 8086 std z+8,R8
0390 9186 std z+9,R9
0392 .dbline 326
0392 ; rob_angle=angle/2742.9797399;
0392 0681 ldd R16,z+6
0394 1781 ldd R17,z+7
0396 2085 ldd R18,z+8
0398 3185 ldd R19,z+9
039A 0E940000 xcall long2fp
039E 3A93 st -y,R19
03A0 2A93 st -y,R18
03A2 1A93 st -y,R17
03A4 0A93 st -y,R16
03A6 00E0 ldi R16,<L68
03A8 10E0 ldi R17,>L68
03AA 0E940000 xcall lpm32
03AE 3A93 st -y,R19
03B0 2A93 st -y,R18
03B2 1A93 st -y,R17
03B4 0A93 st -y,R16
03B6 0E940000 xcall div32f
03BA 10930200 sts _rob_angle+1,R17
03BE 00930100 sts _rob_angle,R16
03C2 30930400 sts _rob_angle+2+1,R19
03C6 20930300 sts _rob_angle+2,R18
03CA .dbline 327
03CA ; return 1;
03CA 01E0 ldi R16,1
03CC 10E0 ldi R17,0
03CE .dbline -2
03CE L62:
03CE 2A96 adiw R28,10
03D0 0E940000 xcall pop_gset4
03D4 .dbline 0 ; func end
03D4 0895 ret
03D6 .dbsym l angle 6 L
03D6 .dbsym r cmplt 10 I
03D6 .dbsym r low_byte 10 i
03D6 .dbsym r mid_byte 12 i
03D6 .dbsym l high_byte 2 l
03D6 .dbend
03D6 .dbfunc e relay_write _relay_write fV
03D6 ; p -> R20,R21
03D6 ; data -> R16
.even
03D6 _relay_write::
03D6 0E940000 xcall push_gset1
03DA .dbline -1
03DA .dbline 332
03DA ;
03DA ; }
03DA ; ///////////////////////////////////////////////////////////////////////////////
03DA ; void relay_write(unsigned char data)
03DA ; {
03DA .dbline 334
03DA ; unsigned char *p;
03DA ; p = (unsigned char *) 0x2250;
03DA 40E5 ldi R20,8784
03DC 52E2 ldi R21,34
03DE .dbline 336
03DE ;
03DE ; *p=data;
03DE FA01 movw R30,R20
03E0 0083 std z+0,R16
03E2 .dbline -2
03E2 .dbline 338
03E2 ;
03E2 ; }
03E2 L69:
03E2 0E940000 xcall pop_gset1
03E6 .dbline 0 ; func end
03E6 0895 ret
03E8 .dbsym r p 20 pc
03E8 .dbsym r data 16 c
03E8 .dbend
03E8 .dbfunc e relay_read _relay_read fc
03E8 ; p -> R16,R17
.even
03E8 _relay_read::
03E8 .dbline -1
03E8 .dbline 342
03E8 ;
03E8 ;
03E8 ; unsigned char relay_read(void)
03E8 ; {
03E8 .dbline 345
03E8 ;
03E8 ; unsigned char *p;
03E8 ; p = (unsigned char *) 0x2250;
03E8 00E5 ldi R16,8784
03EA 12E2 ldi R17,34
03EC .dbline 346
03EC ; return *p;
03EC F801 movw R30,R16
03EE 0081 ldd R16,z+0
03F0 .dbline -2
03F0 L70:
03F0 .dbline 0 ; func end
03F0 0895 ret
03F2 .dbsym r p 16 pc
03F2 .dbend
03F2 .dbfunc e motor_pwm _motor_pwm fV
03F2 ; right -> R18,R19
03F2 ; left -> R16,R17
.even
03F2 _motor_pwm::
03F2 .dbline -1
03F2 .dbline 355
03F2 ;
03F2 ; }
03F2 ; ////////////////////////////////////////////////////////////////////////////
03F2 ; /////////////
03F2 ; ///////// pwm
03F2 ; ///////
03F2 ; /////////////////////////////////////////////////////////////////////////////
03F2 ; void motor_pwm ( int left,int right )
03F2 ; {
03F2 .dbline 357
03F2 ;
03F2 ; DDRB|=0XE0;
03F2 87B3 in R24,0x17
03F4 806E ori R24,224
03F6 87BB out 0x17,R24
03F8 .dbline 358
03F8 ; TCCR1A=0xA8;
03F8 88EA ldi R24,168
03FA 8FBD out 0x2f,R24
03FC .dbline 359
03FC ; TCCR1B=0x11;
03FC 81E1 ldi R24,17
03FE 8EBD out 0x2e,R24
0400 .dbline 360
0400 ; ICR1 = 0x6000;
0400 80E0 ldi R24,24576
0402 90E6 ldi R25,96
0404 90934700 sts 70+1,R25
0408 80934600 sts 70,R24
040C .dbline 361
040C ; OCR1A = left; /////12288 is stop
040C 10934B00 sts 74+1,R17
0410 00934A00 sts 74,R16
0414 .dbline 362
0414 ; OCR1B = right; //// range is from 0 to 24576
0414 30934900 sts 72+1,R19
0418 20934800 sts 72,R18
041C .dbline -2
041C .dbline 365
041C ;
041C ; //OCR1C = 0x3000 + mid;
041C ; }
041C L71:
041C .dbline 0 ; func end
041C 0895 ret
041E .dbsym r right 18 I
041E .dbsym r left 16 I
041E .dbend
041E .dbfunc e mainboard_pwm _mainboard_pwm fV
041E ; pwm3 -> y+0
041E ; pwm2 -> R18,R19
041E ; pwm1 -> R16,R17
.even
041E _mainboard_pwm::
041E .dbline -1
041E .dbline 368
041E ;
041E ; void mainboard_pwm(int pwm1, int pwm2, int pwm3)
041E ; {
041E .dbline 369
041E ; DDRE |= 0x38;
041E 82B1 in R24,0x2
0420 8863 ori R24,56
0422 82B9 out 0x2,R24
0424 .dbline 370
0424 ; TCCR3A = 0xA8;
0424 88EA ldi R24,168
0426 80938B00 sts 139,R24
042A .dbline 371
042A ; TCCR3B = 0x12;
042A 82E1 ldi R24,18
042C 80938A00 sts 138,R24
0430 .dbline 372
0430 ; ICR3 = 0x4E20;
0430 80E2 ldi R24,20000
0432 9EE4 ldi R25,78
0434 90938100 sts 128+1,R25
0438 80938000 sts 128,R24
043C .dbline 373
043C ; OCR3A = pwm1;
043C 10938700 sts 134+1,R17
0440 00938600 sts 134,R16
0444 .dbline 374
0444 ; OCR3B = pwm2;
0444 30938500 sts 132+1,R19
0448 20938400 sts 132,R18
044C .dbline 375
044C ; OCR3C = pwm3;
044C 0880 ldd R0,y+0
044E 1980 ldd R1,y+1
0450 10928300 sts 130+1,R1
0454 00928200 sts 130,R0
0458 .dbline -2
0458 .dbline 377
0458 ;
0458 ; }
0458 L72:
0458 .dbline 0 ; func end
0458 0895 ret
045A .dbsym l pwm3 0 I
045A .dbsym r pwm2 18 I
045A .dbsym r pwm1 16 I
045A .dbend
045A .dbfunc e mainboard_pwm1 _mainboard_pwm1 fV
045A ; frequ -> R20,R21
.even
045A _mainboard_pwm1::
045A 0E940000 xcall push_gset1
045E A801 movw R20,R16
0460 .dbline -1
0460 .dbline 380
0460 ;
0460 ; void mainboard_pwm1( int frequ)
0460 ; {
0460 .dbline 381
0460 ; DDRE |= 0x38;
0460 82B1 in R24,0x2
0462 8863 ori R24,56
0464 82B9 out 0x2,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -