📄 pid.lst
字号:
(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 + -