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

📄 pid.lst

📁 用ICC-AVR编译器编译适用与AVR系列单片机的PID库.
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0238)   if (Ea>=Eb){Eg=Ea-Eb;}else{Eg=Eb-Ea;s_Eg=1;}
    026C 156E      CP	R22,R14
    026D 057F      CPC	R23,R15
    026E F028      BCS	0x0274
    026F 2EC6      MOV	R12,R22
    0270 2ED7      MOV	R13,R23
    0271 18CE      SUB	R12,R14
    0272 08DF      SBC	R13,R15
    0273 C022      RJMP	0x0296
    0274 2CCE      MOV	R12,R14
    0275 2CDF      MOV	R13,R15
    0276 1AC6      SUB	R12,R22
    0277 0AD7      SBC	R13,R23
    0278 2400      CLR	R0
    0279 9403      INC	R0
    027A 860D      STD	Y+13,R0
(0239)   }
(0240)  }
    027B C01A      RJMP	0x0296
(0241)  else
(0242)  {
(0243)   if (s_Eb==0)
    027C 840A      LDD	R0,Y+10
    027D 2000      TST	R0
    027E F481      BNE	0x028F
(0244)   {
(0245)   if (Ea>=Eb){Eg=Ea-Eb;s_Eg=1;}else{Eg=Eb-Ea;}
    027F 156E      CP	R22,R14
    0280 057F      CPC	R23,R15
    0281 F040      BCS	0x028A
    0282 2EC6      MOV	R12,R22
    0283 2ED7      MOV	R13,R23
    0284 18CE      SUB	R12,R14
    0285 08DF      SBC	R13,R15
    0286 2400      CLR	R0
    0287 9403      INC	R0
    0288 860D      STD	Y+13,R0
    0289 C00C      RJMP	0x0296
    028A 2CCE      MOV	R12,R14
    028B 2CDF      MOV	R13,R15
    028C 1AC6      SUB	R12,R22
    028D 0AD7      SBC	R13,R23
(0246)   }
    028E C007      RJMP	0x0296
(0247)   else
(0248)   {
(0249)   Eg=Ea+Eb;s_Eg=1;
    028F 2EC6      MOV	R12,R22
    0290 2ED7      MOV	R13,R23
    0291 0CCE      ADD	R12,R14
    0292 1CDF      ADC	R13,R15
    0293 2400      CLR	R0
    0294 9403      INC	R0
    0295 860D      STD	Y+13,R0
(0250)   }
(0251)  }
(0252) //Eh=Eg+Ef
(0253) if (s_Eg==0)
    0296 840D      LDD	R0,Y+13
    0297 2000      TST	R0
    0298 F4E1      BNE	0x02B5
(0254)  {
(0255)   if (s_Ef==0)
    0299 2088      TST	R8
    029A F439      BNE	0x02A2
(0256)   {
(0257)   Eh=Eg+Ef;
    029B 2C2C      MOV	R2,R12
    029C 2C3D      MOV	R3,R13
    029D 0C2A      ADD	R2,R10
    029E 1C3B      ADC	R3,R11
    029F 823D      STD	Y+5,R3
    02A0 822C      STD	Y+4,R2
(0258)   }
    02A1 C030      RJMP	0x02D2
(0259)   else
(0260)   {
(0261)   if (Eg>=Ef){Eh=Eg-Ef;}else{Eh=Ef-Eg;s_Eh=1;}
    02A2 14CA      CP	R12,R10
    02A3 04DB      CPC	R13,R11
    02A4 F038      BCS	0x02AC
    02A5 2C2C      MOV	R2,R12
    02A6 2C3D      MOV	R3,R13
    02A7 182A      SUB	R2,R10
    02A8 083B      SBC	R3,R11
    02A9 823D      STD	Y+5,R3
    02AA 822C      STD	Y+4,R2
    02AB C026      RJMP	0x02D2
    02AC 2C2A      MOV	R2,R10
    02AD 2C3B      MOV	R3,R11
    02AE 182C      SUB	R2,R12
    02AF 083D      SBC	R3,R13
    02B0 823D      STD	Y+5,R3
    02B1 822C      STD	Y+4,R2
    02B2 2466      CLR	R6
    02B3 9463      INC	R6
(0262)   }
(0263)  }
    02B4 C01D      RJMP	0x02D2
(0264)  else
(0265)  {
(0266)   if (s_Ef==0)
    02B5 2088      TST	R8
    02B6 F499      BNE	0x02CA
(0267)   {
(0268)   if (Eg>=Ef){Eh=Eg-Ef;s_Eh=1;}else{Eh=Ef-Eg;}
    02B7 14CA      CP	R12,R10
    02B8 04DB      CPC	R13,R11
    02B9 F048      BCS	0x02C3
    02BA 2C2C      MOV	R2,R12
    02BB 2C3D      MOV	R3,R13
    02BC 182A      SUB	R2,R10
    02BD 083B      SBC	R3,R11
    02BE 823D      STD	Y+5,R3
    02BF 822C      STD	Y+4,R2
    02C0 2466      CLR	R6
    02C1 9463      INC	R6
    02C2 C00F      RJMP	0x02D2
    02C3 2C2A      MOV	R2,R10
    02C4 2C3B      MOV	R3,R11
    02C5 182C      SUB	R2,R12
    02C6 083D      SBC	R3,R13
    02C7 823D      STD	Y+5,R3
    02C8 822C      STD	Y+4,R2
(0269)   }
    02C9 C008      RJMP	0x02D2
(0270)   else
(0271)   {
(0272)   Eh=Eg+Ef;s_Eh=1;
    02CA 2C2C      MOV	R2,R12
    02CB 2C3D      MOV	R3,R13
    02CC 0C2A      ADD	R2,R10
    02CD 1C3B      ADC	R3,R11
    02CE 823D      STD	Y+5,R3
    02CF 822C      STD	Y+4,R2
    02D0 2466      CLR	R6
    02D1 9463      INC	R6
(0273)   }
(0274)  }
(0275) //Ei=Kp*Eh
(0276) if (s_Eh==0)
    02D2 2066      TST	R6
    02D3 F449      BNE	0x02DD
(0277)  {
(0278)   	Ei=Kp*Eh;
    02D4 812C      LDD	R18,Y+4
    02D5 813D      LDD	R19,Y+5
    02D6 91000060  LDS	R16,0x60
    02D8 2711      CLR	R17
    02D9 D091      RCALL	mpy16s
    02DA 8319      STD	Y+1,R17
    02DB 8308      STD	Y+0,R16
(0279)  }
    02DC C009      RJMP	0x02E6
(0280)  else
(0281)  {
(0282)    Ei=Kp*Eh;
    02DD 812C      LDD	R18,Y+4
    02DE 813D      LDD	R19,Y+5
    02DF 91000060  LDS	R16,0x60
    02E1 2711      CLR	R17
    02E2 D088      RCALL	mpy16s
    02E3 8319      STD	Y+1,R17
    02E4 8308      STD	Y+0,R16
(0283)    s_Ei=1;
    02E5 E041      LDI	R20,1
(0284)  }
(0285) //PID_OutValue=PID_OutValue_1+Ei
(0286)  if (s_Ei==0) 
    02E6 2344      TST	R20
    02E7 F4F1      BNE	0x0306
(0287)  {
(0288)   Ej=PID_OutValue_1+Ei;
    02E8 8028      LDD	R2,Y+0
    02E9 8039      LDD	R3,Y+1
    02EA 9040006A  LDS	R4,0x6A
    02EC 9050006B  LDS	R5,0x6B
    02EE 0C42      ADD	R4,R2
    02EF 1C53      ADC	R5,R3
    02F0 825F      STD	Y+7,R5
    02F1 824E      STD	Y+6,R4
(0289)   if (Ej>=0x3ff){PID_OutValue=0x3ff;}else{PID_OutValue=Ej;}
    02F2 2D84      MOV	R24,R4
    02F3 2D95      MOV	R25,R5
    02F4 3F8F      CPI	R24,0xFF
    02F5 E0E3      LDI	R30,3
    02F6 079E      CPC	R25,R30
    02F7 F038      BCS	0x02FF
    02F8 EF8F      LDI	R24,0xFF
    02F9 E093      LDI	R25,3
    02FA 93900069  STS	0x69,R25
    02FC 93800068  STS	0x68,R24
    02FE C01D      RJMP	0x031C
    02FF 802E      LDD	R2,Y+6
    0300 803F      LDD	R3,Y+7
    0301 92300069  STS	0x69,R3
    0303 92200068  STS	0x68,R2
(0290)  }
    0305 C016      RJMP	0x031C
(0291)   else
(0292)  {
(0293)  if(PID_OutValue_1>=Ei){PID_OutValue=PID_OutValue_1-Ei;}else{PID_OutValue=0;}
    0306 8028      LDD	R2,Y+0
    0307 8039      LDD	R3,Y+1
    0308 9040006A  LDS	R4,0x6A
    030A 9050006B  LDS	R5,0x6B
    030C 1442      CP	R4,R2
    030D 0453      CPC	R5,R3
    030E F038      BCS	0x0316
    030F 1842      SUB	R4,R2
    0310 0853      SBC	R5,R3
    0311 92500069  STS	0x69,R5
    0313 92400068  STS	0x68,R4
    0315 C006      RJMP	0x031C
    0316 2422      CLR	R2
    0317 2433      CLR	R3
    0318 92300069  STS	0x69,R3
    031A 92200068  STS	0x68,R2
(0294)  } 
(0295) 
(0296) //
(0297)  PID_OutValue_1=PID_OutValue;
    031C 90200068  LDS	R2,0x68
    031E 90300069  LDS	R3,0x69
    0320 9230006B  STS	0x6B,R3
    0322 9220006A  STS	0x6A,R2
(0298)  e_2=e_1;
    0324 9020006E  LDS	R2,0x6E
    0326 9030006F  LDS	R3,0x6F
    0328 92300071  STS	0x71,R3
    032A 92200070  STS	0x70,R2
(0299)  s_e_2=s_e_1;
    032C 90200064  LDS	R2,0x64
    032E 92200065  STS	0x65,R2
(0300)  e_1=e_0;
    0330 9020006C  LDS	R2,0x6C
    0332 9030006D  LDS	R3,0x6D
    0334 9230006F  STS	0x6F,R3
    0336 9220006E  STS	0x6E,R2
(0301)  s_e_1=s_e_0;
    0338 90200063  LDS	R2,0x63
    033A 92200064  STS	0x64,R2
(0302) }							 
    033C 962E      ADIW	R28,0xE
    033D D008      RCALL	pop_gset5
    033E 9508      RET
(0303) void main(void)
(0304) {
(0305) read_PID_E2P_Value();
_main:
    033F DCF7      RCALL	_read_PID_E2P_Value
    0340 C001      RJMP	0x0342
(0306) while(1)
(0307) { 
(0308) PID_Count();
    0341 DD5D      RCALL	_PID_Count
    0342 CFFE      RJMP	0x0341
(0309) }
(0310) }
FILE: <library>
    0343 9508      RET
pop_gset4:
    0344 E0E8      LDI	R30,0x8
    0345 C006      RJMP	pop
pop_gset5:
    0346 27EE      CLR	R30
    0347 C004      RJMP	pop
push_gset1:
    0348 935A      ST	R21,-Y
    0349 934A      ST	R20,-Y
    034A 9508      RET
pop_gset1:
    034B E0E1      LDI	R30,1
pop:
    034C 9149      LD	R20,Y+
    034D 9159      LD	R21,Y+
    034E FDE0      SBRC	R30,0
    034F 9508      RET
    0350 9169      LD	R22,Y+
    0351 9179      LD	R23,Y+
    0352 FDE1      SBRC	R30,1
    0353 9508      RET
    0354 90A9      LD	R10,Y+
    0355 90B9      LD	R11,Y+
    0356 FDE2      SBRC	R30,2
    0357 9508      RET
    0358 90C9      LD	R12,Y+
    0359 90D9      LD	R13,Y+
    035A FDE3      SBRC	R30,3
    035B 9508      RET
    035C 90E9      LD	R14,Y+
    035D 90F9      LD	R15,Y+
    035E 9508      RET
push_gset2:
    035F 937A      ST	R23,-Y
    0360 936A      ST	R22,-Y
    0361 CFE6      RJMP	push_gset1
push_gset3:
    0362 92BA      ST	R11,-Y
    0363 92AA      ST	R10,-Y
    0364 CFFA      RJMP	push_gset2
push_gset4:
    0365 92DA      ST	R13,-Y
    0366 92CA      ST	R12,-Y
    0367 CFFA      RJMP	push_gset3
push_gset5:
    0368 92FA      ST	R15,-Y
    0369 92EA      ST	R14,-Y
    036A CFFA      RJMP	push_gset4
mpy16s:
    036B 920A      ST	R0,-Y
    036C 921A      ST	R1,-Y
    036D 2400      CLR	R0
    036E 2411      CLR	R1
    036F 3000      CPI	R16,0
    0370 0701      CPC	R16,R17
    0371 F041      BEQ	0x037A
    0372 9516      LSR	R17
    0373 9507      ROR	R16
    0374 F410      BCC	0x0377
    0375 0E02      ADD	R0,R18
    0376 1E13      ADC	R1,R19
    0377 0F22      LSL	R18
    0378 1F33      ROL	R19
    0379 CFF5      RJMP	0x036F
    037A 2D00      MOV	R16,R0
    037B 2D11      MOV	R17,R1
    037C 9019      LD	R1,Y+
    037D 9009      LD	R0,Y+
    037E 9508      RET
_EEPROMread:
    037F 99E1      SBIC	0x1C,1
    0380 CFFE      RJMP	_EEPROMread
    0381 BB1F      OUT	0x1F,R17
    0382 BB0E      OUT	0x1E,R16
    0383 9AE0      SBI	0x1C,0
    0384 B30D      IN	R16,0x1D
    0385 9508      RET
_EEPROMReadBytes:
    0386 DFDE      RCALL	push_gset4
    0387 2EC2      MOV	R12,R18
    0388 2ED3      MOV	R13,R19
    0389 2EA0      MOV	R10,R16
    038A 2EB1      MOV	R11,R17
    038B 8568      LDD	R22,Y+8
    038C 8579      LDD	R23,Y+9
    038D 2D4C      MOV	R20,R12
    038E 2D5D      MOV	R21,R13
    038F C00D      RJMP	0x039D
    0390 2D0A      MOV	R16,R10
    0391 2D1B      MOV	R17,R11
    0392 DFEC      RCALL	_EEPROMread
    0393 2FE4      MOV	R30,R20
    0394 2FF5      MOV	R31,R21
    0395 8300      STD	Z+0,R16
    0396 2D8A      MOV	R24,R10
    0397 2D9B      MOV	R25,R11
    0398 9601      ADIW	R24,1
    0399 2EA8      MOV	R10,R24
    039A 2EB9      MOV	R11,R25
    039B 5F4F      SUBI	R20,0xFF
    039C 4F5F      SBCI	R21,0xFF
    039D 2E26      MOV	R2,R22
    039E 2E37      MOV	R3,R23
    039F 5061      SUBI	R22,1
    03A0 4070      SBCI	R23,0
    03A1 2022      TST	R2
    03A2 F769      BNE	0x0390
    03A3 2033      TST	R3
    03A4 F759      BNE	0x0390
    03A5 DF9E      RCALL	pop_gset4
    03A6 9508      RET

⌨️ 快捷键说明

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