⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 robbot.lis

📁 寻迹机器人设计开发环境为ICC,可以编译成汇编,直接下栽到嵌入式avr单片机进行控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0274           ;              y -> R10
 0274           ;          temp1 -> R10,R11
                        .even
 0274           _PIDB::
 0274 00D0              rcall push_gset4
 0276 2497              sbiw R28,4
 0278                   .dbline -1
 0278                   .dbline 125
 0278           ; 
 0278           ; //******************************PID调节:右电机***********************//
 0278           ; void PIDB()
 0278           ; {char  y;
 0278                   .dbline 129
 0278           ;  float u;                    //电压差值
 0278           ;  int   z;
 0278           ;  int temp1;
 0278           ;  y = TCNT2;
 0278 A4B4              in R10,0x24
 027A                   .dbline 130
 027A           ;  EkB=y-desireV;
 027A 20901600          lds R2,_desireV
 027E 30901700          lds R3,_desireV+1
 0282 0A2D              mov R16,R10
 0284 1127              clr R17
 0286 0219              sub R16,R2
 0288 1309              sbc R17,R3
 028A 00D0              rcall int2fp
 028C 10930100          sts _EkB+1,R17
 0290 00930000          sts _EkB,R16
 0294 30930300          sts _EkB+2+1,R19
 0298 20930200          sts _EkB+2,R18
 029C                   .dbline 131
 029C           ;  if(EkB==(0-desireV))      //当Ek大于某一值时直接加最大//
 029C 3A93              st -y,R19
 029E 2A93              st -y,R18
 02A0 1A93              st -y,R17
 02A2 0A93              st -y,R16
 02A4 20901600          lds R2,_desireV
 02A8 30901700          lds R3,_desireV+1
 02AC 0027              clr R16
 02AE 1127              clr R17
 02B0 0219              sub R16,R2
 02B2 1309              sbc R17,R3
 02B4 00D0              rcall int2fp
 02B6 3A93              st -y,R19
 02B8 2A93              st -y,R18
 02BA 1A93              st -y,R17
 02BC 0A93              st -y,R16
 02BE 00D0              rcall cmp32f
 02C0 31F4              brne L29
 02C2                   .dbline 132
 02C2           ;   {temp1=0x0000;
 02C2                   .dbline 132
 02C2 AA24              clr R10
 02C4 BB24              clr R11
 02C6                   .dbline 133
 02C6           ;    SetOutputComReg1B(temp1);}
 02C6 0A2D              mov R16,R10
 02C8 1B2D              mov R17,R11
 02CA ADDE              rcall _SetOutputComReg1B
 02CC                   .dbline 133
 02CC C5C0              rjmp L30
 02CE           L29:
 02CE                   .dbline 135
 02CE           ;  else
 02CE           ;   {EkB =Ab*EkB;
 02CE                   .dbline 135
 02CE 00E0              ldi R16,<L31
 02D0 10E0              ldi R17,>L31
 02D2 00D0              rcall lpm32
 02D4 3A93              st -y,R19
 02D6 2A93              st -y,R18
 02D8 1A93              st -y,R17
 02DA 0A93              st -y,R16
 02DC 40900200          lds R4,_EkB+2
 02E0 50900300          lds R5,_EkB+2+1
 02E4 20900000          lds R2,_EkB
 02E8 30900100          lds R3,_EkB+1
 02EC 5A92              st -y,R5
 02EE 4A92              st -y,R4
 02F0 3A92              st -y,R3
 02F2 2A92              st -y,R2
 02F4 00D0              rcall mpy32f
 02F6 10930100          sts _EkB+1,R17
 02FA 00930000          sts _EkB,R16
 02FE 30930300          sts _EkB+2+1,R19
 0302 20930200          sts _EkB+2,R18
 0306                   .dbline 136
 0306           ;    EkB_1=Bb*EkB_1;
 0306 00E0              ldi R16,<L32
 0308 10E0              ldi R17,>L32
 030A 00D0              rcall lpm32
 030C 3A93              st -y,R19
 030E 2A93              st -y,R18
 0310 1A93              st -y,R17
 0312 0A93              st -y,R16
 0314 40900D00          lds R4,_EkB_1+2
 0318 50900E00          lds R5,_EkB_1+2+1
 031C 20900B00          lds R2,_EkB_1
 0320 30900C00          lds R3,_EkB_1+1
 0324 5A92              st -y,R5
 0326 4A92              st -y,R4
 0328 3A92              st -y,R3
 032A 2A92              st -y,R2
 032C 00D0              rcall mpy32f
 032E 10930C00          sts _EkB_1+1,R17
 0332 00930B00          sts _EkB_1,R16
 0336 30930E00          sts _EkB_1+2+1,R19
 033A 20930D00          sts _EkB_1+2,R18
 033E                   .dbline 137
 033E           ;    EkB_2=Cb*EkB_2;
 033E 00E0              ldi R16,<L25
 0340 10E0              ldi R17,>L25
 0342 00D0              rcall lpm32
 0344 3A93              st -y,R19
 0346 2A93              st -y,R18
 0348 1A93              st -y,R17
 034A 0A93              st -y,R16
 034C 40901100          lds R4,_EkB_2+2
 0350 50901200          lds R5,_EkB_2+2+1
 0354 20900F00          lds R2,_EkB_2
 0358 30901000          lds R3,_EkB_2+1
 035C 5A92              st -y,R5
 035E 4A92              st -y,R4
 0360 3A92              st -y,R3
 0362 2A92              st -y,R2
 0364 00D0              rcall mpy32f
 0366 10931000          sts _EkB_2+1,R17
 036A 00930F00          sts _EkB_2,R16
 036E 30931200          sts _EkB_2+2+1,R19
 0372 20931100          sts _EkB_2+2,R18
 0376                   .dbline 138
 0376           ;    u=EkB+EkB_1+EkB_2;
 0376 40900200          lds R4,_EkB+2
 037A 50900300          lds R5,_EkB+2+1
 037E 20900000          lds R2,_EkB
 0382 30900100          lds R3,_EkB+1
 0386 5A92              st -y,R5
 0388 4A92              st -y,R4
 038A 3A92              st -y,R3
 038C 2A92              st -y,R2
 038E 40900D00          lds R4,_EkB_1+2
 0392 50900E00          lds R5,_EkB_1+2+1
 0396 20900B00          lds R2,_EkB_1
 039A 30900C00          lds R3,_EkB_1+1
 039E 5A92              st -y,R5
 03A0 4A92              st -y,R4
 03A2 3A92              st -y,R3
 03A4 2A92              st -y,R2
 03A6 00D0              rcall add32fs
 03A8 40901100          lds R4,_EkB_2+2
 03AC 50901200          lds R5,_EkB_2+2+1
 03B0 20900F00          lds R2,_EkB_2
 03B4 30901000          lds R3,_EkB_2+1
 03B8 5A92              st -y,R5
 03BA 4A92              st -y,R4
 03BC 3A92              st -y,R3
 03BE 2A92              st -y,R2
 03C0 00D0              rcall add32f
 03C2 EC2F              mov R30,R28
 03C4 FD2F              mov R31,R29
 03C6 0083              std z+0,R16
 03C8 1183              std z+1,R17
 03CA 2283              std z+2,R18
 03CC 3383              std z+3,R19
 03CE                   .dbline 139
 03CE           ;    z=u/U1*0x03FF;
 03CE 00E0              ldi R16,<L26
 03D0 10E0              ldi R17,>L26
 03D2 00D0              rcall lpm32
 03D4 3A93              st -y,R19
 03D6 2A93              st -y,R18
 03D8 1A93              st -y,R17
 03DA 0A93              st -y,R16
 03DC EC2F              mov R30,R28
 03DE FD2F              mov R31,R29
 03E0            ; stack offset 4
 03E0 2480              ldd R2,z+4
 03E2 3580              ldd R3,z+5
 03E4 4680              ldd R4,z+6
 03E6 5780              ldd R5,z+7
 03E8 5A92              st -y,R5
 03EA 4A92              st -y,R4
 03EC 3A92              st -y,R3
 03EE 2A92              st -y,R2
 03F0 00E0              ldi R16,<L27
 03F2 10E0              ldi R17,>L27
 03F4 00D0              rcall lpm32
 03F6 3A93              st -y,R19
 03F8 2A93              st -y,R18
 03FA 1A93              st -y,R17
 03FC 0A93              st -y,R16
 03FE 00D0              rcall div32fs
 0400 00D0              rcall mpy32f
 0402 00D0              rcall fp2int
 0404 C02E              mov R12,R16
 0406 D12E              mov R13,R17
 0408                   .dbline 140
 0408           ;    temp1=GetOutputComReg1B();
 0408 19DE              rcall _GetOutputComReg1B
 040A A02E              mov R10,R16
 040C B12E              mov R11,R17
 040E                   .dbline 141
 040E           ;    temp1=temp1+z;
 040E AC0C              add R10,R12
 0410 BD1C              adc R11,R13
 0412                   .dbline 142
 0412           ;    SetOutputComReg1B(temp1);
 0412 0A2D              mov R16,R10
 0414 1B2D              mov R17,R11
 0416 07DE              rcall _SetOutputComReg1B
 0418                   .dbline 143
 0418           ;    EkB_2=EkB_1;
 0418 40900D00          lds R4,_EkB_1+2
 041C 50900E00          lds R5,_EkB_1+2+1
 0420 20900B00          lds R2,_EkB_1
 0424 30900C00          lds R3,_EkB_1+1
 0428 30921000          sts _EkB_2+1,R3
 042C 20920F00          sts _EkB_2,R2
 0430 50921200          sts _EkB_2+2+1,R5
 0434 40921100          sts _EkB_2+2,R4
 0438                   .dbline 144
 0438           ;    EkB_1=EkB;}
 0438 40900200          lds R4,_EkB+2
 043C 50900300          lds R5,_EkB+2+1
 0440 20900000          lds R2,_EkB
 0444 30900100          lds R3,_EkB+1
 0448 30920C00          sts _EkB_1+1,R3
 044C 20920B00          sts _EkB_1,R2
 0450 50920E00          sts _EkB_1+2+1,R5
 0454 40920D00          sts _EkB_1+2,R4
 0458                   .dbline 144
 0458           L30:
 0458                   .dbline 145
 0458           ;  TCNT2=0x00;
 0458 2224              clr R2
 045A 24BC              out 0x24,R2
 045C                   .dbline -2
 045C                   .dbline 146
 045C           ; }
 045C           L28:
 045C 2496              adiw R28,4
 045E 00D0              rcall pop_gset4
 0460                   .dbline 0 ; func end
 0460 0895              ret
 0462                   .dbsym r z 12 I
 0462                   .dbsym l u 0 D
 0462                   .dbsym r y 10 c
 0462                   .dbsym r temp1 10 I
 0462                   .dbend
 0462                   .dbfunc e Talone _Talone fc
                        .even
 0462           _Talone::
 0462                   .dbline -1
 0462                   .dbline 150
 0462           ; 
 0462           ; //***************************寻线处理函数1***************************//
 0462           ; char Talone()              
 0462           ; {if ((forlight&0x09)==0)     //3单独亮
 0462                   .dbline 150
 0462 80910800          lds R24,_forlight
 0466 8970              andi R24,9
 0468 11F4              brne L34
 046A                   .dbline 151
 046A           ;     return(0);
 046A 0027              clr R16
 046C 01C0              rjmp L33
 046E           L34:
 046E                   .dbline 153
 046E           ;  else
 046E           ;     return(1);               //返回为校偏状态值 
 046E 01E0              ldi R16,1
 0470                   .dbline -2
 0470           L33:
 0470                   .dbline 0 ; func end
 0470 0895              ret
 0472                   .dbend
 0472                   .dbfunc e FUalone _FUalone fc
                        .even
 0472           _FUalone::
 0472                   .dbline -1
 0472                   .dbline 158
 0472           ; }
 0472           ; 
 0472           ; //***************************寻线处理函数2***************************//
 0472           ; char FUalone()               //4单独亮
 0472           ; {if ((forlight&0x05)==0)
 0472                   .dbline 158
 0472 80910800          lds R24,_forlight
 0476 8570              andi R24,5
 0478 11F4              brne L37
 047A                   .dbline 159
 047A           ;     return(0);
 047A 0027              clr R16
 047C 01C0              rjmp L36
 047E           L37:
 047E                   .dbline 161
 047E           ;  else
 047E           ;     return(2);
 047E 02E0              ldi R16,2
 0480                   .dbline -2
 0480           L36:
 0480                   .dbline 0 ; func end
 0480 0895              ret
 0482                   .dbend
 0482                   .dbfunc e FIalone _FIalone fc
                        .even
 0482           _FIalone::
 0482                   .dbline -1
 0482                   .dbline 166
 0482           ; }
 0482           ; 
 0482           ; //***************************寻线处理函数3***************************//
 0482           ; char FIalone()               //5单独亮
 0482           ; {if ((forlight&0x22)==0)
 0482                   .dbline 166
 0482 80910800          lds R24,_forlight
 0486 8272              andi R24,34
 0488 11F4              brne L40
 048A                   .dbline 167
 048A           ;     return(0);
 048A 0027              clr R16
 048C 01C0              rjmp L39
 048E           L40:
 048E                   .dbline 169
 048E           ;  else
 048E           ;     return(1);
 048E 01E0              ldi R16,1
 0490                   .dbline -2
 0490           L39:
 0490                   .dbline 0 ; func end
 0490 0895              ret
 0492                   .dbend
 0492                   .dbfunc e Salone _Salone fc
                        .even
 0492           _Salone::
 0492                   .dbline -1
 0492                   .dbline 174

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -