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

📄 robbot.lis

📁 寻迹机器人设计开发环境为ICC,可以编译成汇编,直接下栽到嵌入式avr单片机进行控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0048 0CC0              rjmp L10
 004A           L7:
 004A                   .dbline 89
 004A                   .dbline 89
 004A 6627              clr R22
 004C 7727              clr R23
 004E 02C0              rjmp L14
 0050           L11:
 0050                   .dbline 89
 0050           L12:
 0050                   .dbline 89
 0050 6F5F              subi R22,255  ; offset = 1
 0052 7F4F              sbci R23,255
 0054           L14:
 0054                   .dbline 89
 0054 8EEF              ldi R24,65534
 0056 9FEF              ldi R25,255
 0058 8617              cp R24,R22
 005A 9707              cpc R25,R23
 005C C8F7              brsh L11
 005E                   .dbline 89
 005E           L8:
 005E                   .dbline 88
 005E 4F5F              subi R20,255  ; offset = 1
 0060 5F4F              sbci R21,255
 0062           L10:
 0062                   .dbline 88
 0062 0417              cp R16,R20
 0064 1507              cpc R17,R21
 0066 8CF7              brge L7
 0068                   .dbline -2
 0068                   .dbline 90
 0068           ;   {for (j=0;j<=0xFFFE;j++) ;} 
 0068           ; }
 0068           L6:
 0068 00D0              rcall pop_gset2
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbsym r i 20 I
 006C                   .dbsym r j 22 I
 006C                   .dbsym r delaytime 16 I
 006C                   .dbend
 006C                   .dbfunc e delay _delay fV
 006C           ;              j -> R20,R21
 006C           ;              i -> R16,R17
                        .even
 006C           _delay::
 006C 00D0              rcall push_gset1
 006E                   .dbline -1
 006E                   .dbline 94
 006E           ; 
 006E           ; //******************************短延时函数***************************//
 006E           ; void delay(int i)
 006E           ; {int j;
 006E                   .dbline 95
 006E 4427              clr R20
 0070 5527              clr R21
 0072 02C0              rjmp L19
 0074           L16:
 0074                   .dbline 95
 0074           L17:
 0074                   .dbline 95
 0074 4F5F              subi R20,255  ; offset = 1
 0076 5F4F              sbci R21,255
 0078           L19:
 0078                   .dbline 95
 0078           ;  for(j=0;j<=i;j++)  ;
 0078 0417              cp R16,R20
 007A 1507              cpc R17,R21
 007C DCF7              brge L16
 007E                   .dbline -2
 007E                   .dbline 96
 007E           ; }
 007E           L15:
 007E 00D0              rcall pop_gset1
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbsym r j 20 I
 0082                   .dbsym r i 16 I
 0082                   .dbend
 0082                   .dbfunc e PIDA _PIDA fV
 0082           ;              z -> R12,R13
 0082           ;              u -> y+0
 0082           ;              y -> R10
 0082           ;          temp1 -> R10,R11
                        .even
 0082           _PIDA::
 0082 00D0              rcall push_gset4
 0084 2497              sbiw R28,4
 0086                   .dbline -1
 0086                   .dbline 100
 0086           ; 
 0086           ; //******************************PID调节:左电机***********************//
 0086           ; void PIDA()                  
 0086           ; {char  y;                    //本次采样速度值
 0086                   .dbline 104
 0086           ;  float u;                    //电压差值
 0086           ;  int   z;                    //本次输出增量
 0086           ;  int temp1;                  //临时记录值
 0086           ;  y = TCNT1;
 0086 ACB4              in R10,0x2c
 0088                   .dbline 105
 0088           ;  EkA=y-desireV;
 0088 20901600          lds R2,_desireV
 008C 30901700          lds R3,_desireV+1
 0090 0A2D              mov R16,R10
 0092 1127              clr R17
 0094 0219              sub R16,R2
 0096 1309              sbc R17,R3
 0098 00D0              rcall int2fp
 009A 10930500          sts _EkA+1,R17
 009E 00930400          sts _EkA,R16
 00A2 30930700          sts _EkA+2+1,R19
 00A6 20930600          sts _EkA+2,R18
 00AA                   .dbline 106
 00AA           ;  if (EkA==(0-desireV))       //当Ek大于某一值时直接加最大
 00AA 3A93              st -y,R19
 00AC 2A93              st -y,R18
 00AE 1A93              st -y,R17
 00B0 0A93              st -y,R16
 00B2 20901600          lds R2,_desireV
 00B6 30901700          lds R3,_desireV+1
 00BA 0027              clr R16
 00BC 1127              clr R17
 00BE 0219              sub R16,R2
 00C0 1309              sbc R17,R3
 00C2 00D0              rcall int2fp
 00C4 3A93              st -y,R19
 00C6 2A93              st -y,R18
 00C8 1A93              st -y,R17
 00CA 0A93              st -y,R16
 00CC 00D0              rcall cmp32f
 00CE 31F4              brne L21
 00D0                   .dbline 107
 00D0           ;   {temp1=0x0000;
 00D0                   .dbline 107
 00D0 AA24              clr R10
 00D2 BB24              clr R11
 00D4                   .dbline 108
 00D4           ;    SetOutputComReg1A(temp1);}
 00D4 0A2D              mov R16,R10
 00D6 1B2D              mov R17,R11
 00D8 9EDF              rcall _SetOutputComReg1A
 00DA                   .dbline 108
 00DA C5C0              rjmp L22
 00DC           L21:
 00DC                   .dbline 110
 00DC           ;  else
 00DC           ;   {EkA=Aa*EkA;
 00DC                   .dbline 110
 00DC 00E0              ldi R16,<L23
 00DE 10E0              ldi R17,>L23
 00E0 00D0              rcall lpm32
 00E2 3A93              st -y,R19
 00E4 2A93              st -y,R18
 00E6 1A93              st -y,R17
 00E8 0A93              st -y,R16
 00EA 40900600          lds R4,_EkA+2
 00EE 50900700          lds R5,_EkA+2+1
 00F2 20900400          lds R2,_EkA
 00F6 30900500          lds R3,_EkA+1
 00FA 5A92              st -y,R5
 00FC 4A92              st -y,R4
 00FE 3A92              st -y,R3
 0100 2A92              st -y,R2
 0102 00D0              rcall mpy32f
 0104 10930500          sts _EkA+1,R17
 0108 00930400          sts _EkA,R16
 010C 30930700          sts _EkA+2+1,R19
 0110 20930600          sts _EkA+2,R18
 0114                   .dbline 111
 0114           ;    EkA_1=Ba*EkA_1;
 0114 00E0              ldi R16,<L24
 0116 10E0              ldi R17,>L24
 0118 00D0              rcall lpm32
 011A 3A93              st -y,R19
 011C 2A93              st -y,R18
 011E 1A93              st -y,R17
 0120 0A93              st -y,R16
 0122 40900500          lds R4,_EkA_1+2
 0126 50900600          lds R5,_EkA_1+2+1
 012A 20900300          lds R2,_EkA_1
 012E 30900400          lds R3,_EkA_1+1
 0132 5A92              st -y,R5
 0134 4A92              st -y,R4
 0136 3A92              st -y,R3
 0138 2A92              st -y,R2
 013A 00D0              rcall mpy32f
 013C 10930400          sts _EkA_1+1,R17
 0140 00930300          sts _EkA_1,R16
 0144 30930600          sts _EkA_1+2+1,R19
 0148 20930500          sts _EkA_1+2,R18
 014C                   .dbline 112
 014C           ;    EkA_2=Ca*EkA_2;
 014C 00E0              ldi R16,<L25
 014E 10E0              ldi R17,>L25
 0150 00D0              rcall lpm32
 0152 3A93              st -y,R19
 0154 2A93              st -y,R18
 0156 1A93              st -y,R17
 0158 0A93              st -y,R16
 015A 40900900          lds R4,_EkA_2+2
 015E 50900A00          lds R5,_EkA_2+2+1
 0162 20900700          lds R2,_EkA_2
 0166 30900800          lds R3,_EkA_2+1
 016A 5A92              st -y,R5
 016C 4A92              st -y,R4
 016E 3A92              st -y,R3
 0170 2A92              st -y,R2
 0172 00D0              rcall mpy32f
 0174 10930800          sts _EkA_2+1,R17
 0178 00930700          sts _EkA_2,R16
 017C 30930A00          sts _EkA_2+2+1,R19
 0180 20930900          sts _EkA_2+2,R18
 0184                   .dbline 113
 0184           ;    u=EkA+EkA_1+EkA_2;
 0184 40900600          lds R4,_EkA+2
 0188 50900700          lds R5,_EkA+2+1
 018C 20900400          lds R2,_EkA
 0190 30900500          lds R3,_EkA+1
 0194 5A92              st -y,R5
 0196 4A92              st -y,R4
 0198 3A92              st -y,R3
 019A 2A92              st -y,R2
 019C 40900500          lds R4,_EkA_1+2
 01A0 50900600          lds R5,_EkA_1+2+1
 01A4 20900300          lds R2,_EkA_1
 01A8 30900400          lds R3,_EkA_1+1
 01AC 5A92              st -y,R5
 01AE 4A92              st -y,R4
 01B0 3A92              st -y,R3
 01B2 2A92              st -y,R2
 01B4 00D0              rcall add32fs
 01B6 40900900          lds R4,_EkA_2+2
 01BA 50900A00          lds R5,_EkA_2+2+1
 01BE 20900700          lds R2,_EkA_2
 01C2 30900800          lds R3,_EkA_2+1
 01C6 5A92              st -y,R5
 01C8 4A92              st -y,R4
 01CA 3A92              st -y,R3
 01CC 2A92              st -y,R2
 01CE 00D0              rcall add32f
 01D0 EC2F              mov R30,R28
 01D2 FD2F              mov R31,R29
 01D4 0083              std z+0,R16
 01D6 1183              std z+1,R17
 01D8 2283              std z+2,R18
 01DA 3383              std z+3,R19
 01DC                   .dbline 114
 01DC           ;    z=u/U1*0x03FF;
 01DC 00E0              ldi R16,<L26
 01DE 10E0              ldi R17,>L26
 01E0 00D0              rcall lpm32
 01E2 3A93              st -y,R19
 01E4 2A93              st -y,R18
 01E6 1A93              st -y,R17
 01E8 0A93              st -y,R16
 01EA EC2F              mov R30,R28
 01EC FD2F              mov R31,R29
 01EE            ; stack offset 4
 01EE 2480              ldd R2,z+4
 01F0 3580              ldd R3,z+5
 01F2 4680              ldd R4,z+6
 01F4 5780              ldd R5,z+7
 01F6 5A92              st -y,R5
 01F8 4A92              st -y,R4
 01FA 3A92              st -y,R3
 01FC 2A92              st -y,R2
 01FE 00E0              ldi R16,<L27
 0200 10E0              ldi R17,>L27
 0202 00D0              rcall lpm32
 0204 3A93              st -y,R19
 0206 2A93              st -y,R18
 0208 1A93              st -y,R17
 020A 0A93              st -y,R16
 020C 00D0              rcall div32fs
 020E 00D0              rcall mpy32f
 0210 00D0              rcall fp2int
 0212 C02E              mov R12,R16
 0214 D12E              mov R13,R17
 0216                   .dbline 115
 0216           ;    temp1=GetOutputComReg1A();
 0216 0FDF              rcall _GetOutputComReg1A
 0218 A02E              mov R10,R16
 021A B12E              mov R11,R17
 021C                   .dbline 116
 021C           ;    temp1=temp1+z;
 021C AC0C              add R10,R12
 021E BD1C              adc R11,R13
 0220                   .dbline 117
 0220           ;    SetOutputComReg1A(temp1);
 0220 0A2D              mov R16,R10
 0222 1B2D              mov R17,R11
 0224 F8DE              rcall _SetOutputComReg1A
 0226                   .dbline 118
 0226           ;    EkA_2=EkA_1;
 0226 40900500          lds R4,_EkA_1+2
 022A 50900600          lds R5,_EkA_1+2+1
 022E 20900300          lds R2,_EkA_1
 0232 30900400          lds R3,_EkA_1+1
 0236 30920800          sts _EkA_2+1,R3
 023A 20920700          sts _EkA_2,R2
 023E 50920A00          sts _EkA_2+2+1,R5
 0242 40920900          sts _EkA_2+2,R4
 0246                   .dbline 119
 0246           ;    EkA_1=EkA;}
 0246 40900600          lds R4,_EkA+2
 024A 50900700          lds R5,_EkA+2+1
 024E 20900400          lds R2,_EkA
 0252 30900500          lds R3,_EkA+1
 0256 30920400          sts _EkA_1+1,R3
 025A 20920300          sts _EkA_1,R2
 025E 50920600          sts _EkA_1+2+1,R5
 0262 40920500          sts _EkA_1+2,R4
 0266                   .dbline 119
 0266           L22:
 0266                   .dbline 120
 0266           ;  TCNT1=0x00;
 0266 2224              clr R2
 0268 3324              clr R3
 026A 3DBC              out 0x2d,R3
 026C 2CBC              out 0x2c,R2
 026E                   .dbline -2
 026E                   .dbline 121
 026E           ; }
 026E           L20:
 026E 2496              adiw R28,4
 0270 00D0              rcall pop_gset4
 0272                   .dbline 0 ; func end
 0272 0895              ret
 0274                   .dbsym r z 12 I
 0274                   .dbsym l u 0 D
 0274                   .dbsym r y 10 c
 0274                   .dbsym r temp1 10 I
 0274                   .dbend
 0274                   .dbfunc e PIDB _PIDB fV
 0274           ;              z -> R12,R13
 0274           ;              u -> y+0

⌨️ 快捷键说明

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