📄 pidtext.lis
字号:
.module PIDTEXT.C
.area data(ram, con, rel)
0000 _Kp::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0001 .dbsym e Kp _Kp c
0001 _Ki::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0002 .dbsym e Ki _Ki c
0002 _Kd::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0003 .dbsym e Kd _Kd c
0003 _s_e_0::
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0004 .dbsym e s_e_0 _s_e_0 c
0004 _s_e_1::
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0005 .dbsym e s_e_1 _s_e_1 c
0005 _s_e_2::
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0006 .dbsym e s_e_2 _s_e_2 c
0006 _Set_Target_Value::
0006 .blkb 2
.area idata
0006 0000 .word 0
.area data(ram, con, rel)
0008 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0008 .dbsym e Set_Target_Value _Set_Target_Value i
0008 _PID_OutValue::
0008 .blkb 2
.area idata
0008 0000 .word 0
.area data(ram, con, rel)
000A .dbfile D:\软件\PIDLIB\PIDTEXT.C
000A .dbsym e PID_OutValue _PID_OutValue i
000A _PID_OutValue_1::
000A .blkb 2
.area idata
000A 0000 .word 0
.area data(ram, con, rel)
000C .dbfile D:\软件\PIDLIB\PIDTEXT.C
000C .dbsym e PID_OutValue_1 _PID_OutValue_1 i
000C _e_0::
000C .blkb 2
.area idata
000C 0000 .word 0
.area data(ram, con, rel)
000E .dbfile D:\软件\PIDLIB\PIDTEXT.C
000E .dbsym e e_0 _e_0 i
000E _e_1::
000E .blkb 2
.area idata
000E 0000 .word 0
.area data(ram, con, rel)
0010 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0010 .dbsym e e_1 _e_1 i
0010 _e_2::
0010 .blkb 2
.area idata
0010 0000 .word 0
.area data(ram, con, rel)
0012 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0012 .dbsym e e_2 _e_2 i
0012 _Check_Value::
0012 .blkb 2
.area idata
0012 0700 .word 7
.area data(ram, con, rel)
0014 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0014 .dbsym e Check_Value _Check_Value i
.area text(rom, con, rel)
0000 .dbfile D:\软件\PIDLIB\PIDTEXT.C
0000 .dbfunc e read_PID_E2P_Value _read_PID_E2P_Value fV
0000 ; set_Target_value_l -> y+6
0000 ; set_Target_value_h -> y+5
0000 ; Kd_1 -> y+4
0000 ; Ki_1 -> y+3
0000 ; Kp_1 -> y+2
.even
0000 _read_PID_E2P_Value::
0000 2797 sbiw R28,7
0002 .dbline -1
0002 .dbline 33
0002 ; /*------------------------------------------------------------
0002 ; ;------------------------------------------------------------
0002 ; ; PID LIB
0002 ; ; V0.1c
0002 ; ; zhongwh
0002 ; ; Copyright 2003-2005
0002 ; ; Email: hfkj01@163.com
0002 ; ; mtel : 13708004895
0002 ; ; 2005-9-28 15:38:52
0002 ; ; ICC-AVR application builder
0002 ; ;-------------------------------------------------------------
0002 ; ;-------------------------------------------------------------
0002 ; ; Target : ALL AVR
0002 ; ; Crystal: 8Mhz
0002 ; ;-------------------------------------------------------------
0002 ; ;-------------------------------------------------------------*/
0002 ;
0002 ; #include <io8515v.h>
0002 ; #include <macros.h>
0002 ; #include <eeprom.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ; //
0002 ; #define Kp_E2P_Addr 0x40
0002 ; #define Ki_E2P_Addr 0x41
0002 ; #define Kd_E2P_Addr 0x42
0002 ; #define Set_E2P_TargetV_Addr_h 0x43
0002 ; #define Set_E2P_TargetV_Addr_l 0x44
0002 ; uchar Kp=0,Ki=0,Kd=0 ,s_e_0=0,s_e_1=0,s_e_2=0;//状态=1为负数
0002 ; uint Set_Target_Value=0,PID_OutValue=0,PID_OutValue_1=0,e_0=0,e_1=0,e_2=0,Check_Value=7;
0002 ; //v=v0+Kp[(e_0-e_1)+Ki*e_0+Kd(e_0-2*e_1+e_2)]
0002 ; void read_PID_E2P_Value(void)
0002 ; {
0002 .dbline 35
0002 ; uchar set_Target_value_h,set_Target_value_l ,Kp_1,Ki_1,Kd_1;
0002 ; EEPROM_READ(Kp_E2P_Addr,Kp_1);
0002 81E0 ldi R24,1
0004 90E0 ldi R25,0
0006 9983 std y+1,R25
0008 8883 std y+0,R24
000A 2C2F mov R18,R28
000C 3D2F mov R19,R29
000E 2E5F subi R18,254 ; offset = 2
0010 3F4F sbci R19,255
0012 00E4 ldi R16,64
0014 10E0 ldi R17,0
0016 00D0 rcall _EEPROMReadBytes
0018 .dbline 36
0018 8A81 ldd R24,y+2
001A 8436 cpi R24,100
001C 20F0 brlo L2
001E .dbline 36
001E .dbline 36
001E 84E6 ldi R24,100
0020 80930000 sts _Kp,R24
0024 .dbline 36
0024 03C0 rjmp L3
0026 L2:
0026 .dbline 36
0026 ; if (Kp_1>=100){Kp=100;}else{Kp=Kp_1;}
0026 .dbline 36
0026 2A80 ldd R2,y+2
0028 20920000 sts _Kp,R2
002C .dbline 36
002C L3:
002C .dbline 37
002C ; EEPROM_READ(Ki_E2P_Addr,Ki_1);
002C 81E0 ldi R24,1
002E 90E0 ldi R25,0
0030 9983 std y+1,R25
0032 8883 std y+0,R24
0034 2C2F mov R18,R28
0036 3D2F mov R19,R29
0038 2D5F subi R18,253 ; offset = 3
003A 3F4F sbci R19,255
003C 01E4 ldi R16,65
003E 10E0 ldi R17,0
0040 00D0 rcall _EEPROMReadBytes
0042 .dbline 38
0042 8B81 ldd R24,y+3
0044 8436 cpi R24,100
0046 20F0 brlo L4
0048 .dbline 38
0048 .dbline 38
0048 84E6 ldi R24,100
004A 80930100 sts _Ki,R24
004E .dbline 38
004E 03C0 rjmp L5
0050 L4:
0050 .dbline 38
0050 ; if (Ki_1>=100){Ki=100;}else{Ki=Ki_1;}
0050 .dbline 38
0050 2B80 ldd R2,y+3
0052 20920100 sts _Ki,R2
0056 .dbline 38
0056 L5:
0056 .dbline 39
0056 ; EEPROM_READ(Kd_E2P_Addr,Kd_1);
0056 81E0 ldi R24,1
0058 90E0 ldi R25,0
005A 9983 std y+1,R25
005C 8883 std y+0,R24
005E 2C2F mov R18,R28
0060 3D2F mov R19,R29
0062 2C5F subi R18,252 ; offset = 4
0064 3F4F sbci R19,255
0066 02E4 ldi R16,66
0068 10E0 ldi R17,0
006A 00D0 rcall _EEPROMReadBytes
006C .dbline 40
006C 8C81 ldd R24,y+4
006E 8436 cpi R24,100
0070 20F0 brlo L6
0072 .dbline 40
0072 .dbline 40
0072 84E6 ldi R24,100
0074 80930200 sts _Kd,R24
0078 .dbline 40
0078 03C0 rjmp L7
007A L6:
007A .dbline 40
007A ; if (Kd_1>=100){Kd=100;}else{Kd=Kd_1;}
007A .dbline 40
007A 2C80 ldd R2,y+4
007C 20920200 sts _Kd,R2
0080 .dbline 40
0080 L7:
0080 .dbline 41
0080 ; EEPROM_READ(Set_E2P_TargetV_Addr_h,set_Target_value_h);
0080 81E0 ldi R24,1
0082 90E0 ldi R25,0
0084 9983 std y+1,R25
0086 8883 std y+0,R24
0088 2C2F mov R18,R28
008A 3D2F mov R19,R29
008C 2B5F subi R18,251 ; offset = 5
008E 3F4F sbci R19,255
0090 03E4 ldi R16,67
0092 10E0 ldi R17,0
0094 00D0 rcall _EEPROMReadBytes
0096 .dbline 42
0096 ; EEPROM_READ(Set_E2P_TargetV_Addr_l,set_Target_value_l);
0096 81E0 ldi R24,1
0098 90E0 ldi R25,0
009A 9983 std y+1,R25
009C 8883 std y+0,R24
009E 2C2F mov R18,R28
00A0 3D2F mov R19,R29
00A2 2A5F subi R18,250 ; offset = 6
00A4 3F4F sbci R19,255
00A6 04E4 ldi R16,68
00A8 10E0 ldi R17,0
00AA 00D0 rcall _EEPROMReadBytes
00AC .dbline 43
00AC ; Set_Target_Value=set_Target_value_h;
00AC 2D80 ldd R2,y+5
00AE 3324 clr R3
00B0 30920700 sts _Set_Target_Value+1,R3
00B4 20920600 sts _Set_Target_Value,R2
00B8 .dbline 44
00B8 ; Set_Target_Value=(Set_Target_Value<<8)+set_Target_value_l;
00B8 2E80 ldd R2,y+6
00BA 40900600 lds R4,_Set_Target_Value
00BE 50900700 lds R5,_Set_Target_Value+1
00C2 342C mov R3,R4
00C4 30920700 sts _Set_Target_Value+1,R3
00C8 20920600 sts _Set_Target_Value,R2
00CC .dbline -2
00CC .dbline 47
00CC ;
00CC ;
00CC ; }
00CC L1:
00CC 2796 adiw R28,7
00CE .dbline 0 ; func end
00CE 0895 ret
00D0 .dbsym l set_Target_value_l 6 c
00D0 .dbsym l set_Target_value_h 5 c
00D0 .dbsym l Kd_1 4 c
00D0 .dbsym l Ki_1 3 c
00D0 .dbsym l Kp_1 2 c
00D0 .dbend
00D0 .dbfunc e PID_Count _PID_Count fV
00D0 ; Ej -> y+6
00D0 ; Eh -> y+4
00D0 ; Ee -> y+2
00D0 ; Ei -> y+0
00D0 ; s_Ei -> R20
00D0 ; s_Eh -> R6
00D0 ; s_Eg -> y+13
00D0 ; s_Ef -> R8
00D0 ; s_Ee -> y+12
00D0 ; s_Ec -> y+11
00D0 ; s_Eb -> y+10
00D0 ; Eg -> R12,R13
00D0 ; Ef -> R10,R11
00D0 ; Ed -> R12,R13
00D0 ; Eb -> R14,R15
00D0 ; Ea -> R22,R23
00D0 ; s_Ed -> y+9
00D0 ; s_Ea -> y+8
00D0 ; Ec -> R10,R11
.even
00D0 _PID_Count::
00D0 00D0 rcall push_gset5
00D2 2E97 sbiw R28,14
00D4 .dbline -1
00D4 .dbline 49
00D4 ; void PID_Count(void)
00D4 ; { uint Ea,Eb,Ec,Ed,Ee,Ef,Eg,Eh,Ei,Ej;
00D4 .dbline 50
00D4 ; uchar s_Ea=0,s_Eb=0,s_Ec=0,s_Ed=0,s_Ee=0,s_Ef=0,s_Eg=0,s_Eh=0,s_Ei=0;
00D4 0024 clr R0
00D6 0886 std y+8,R0
00D8 .dbline 50
00D8 0A86 std y+10,R0
00DA .dbline 50
00DA 0B86 std y+11,R0
00DC .dbline 50
00DC 0986 std y+9,R0
00DE .dbline 50
00DE 0C86 std y+12,R0
00E0 .dbline 50
00E0 8824 clr R8
00E2 .dbline 50
00E2 0D86 std y+13,R0
00E4 .dbline 50
00E4 6624 clr R6
00E6 .dbline 50
00E6 4427 clr R20
00E8 .dbline 52
00E8 ; //e_0
00E8 ; if (Set_Target_Value>=Check_Value)
00E8 20901200 lds R2,_Check_Value
00EC 30901300 lds R3,_Check_Value+1
00F0 40900600 lds R4,_Set_Target_Value
00F4 50900700 lds R5,_Set_Target_Value+1
00F8 4214 cp R4,R2
00FA 5304 cpc R5,R3
00FC 50F0 brlo L9
00FE .dbline 53
00FE ; {
00FE .dbline 54
00FE ; e_0=Set_Target_Value-Check_Value;
00FE 4218 sub R4,R2
0100 5308 sbc R5,R3
0102 50920D00 sts _e_0+1,R5
0106 40920C00 sts _e_0,R4
010A .dbline 55
010A ; s_e_0=0;
010A 2224 clr R2
010C 20920300 sts _s_e_0,R2
0110 .dbline 56
0110 ; }
0110 11C0 rjmp L10
0112 L9:
0112 .dbline 58
0112 ; else
0112 ; {
0112 .dbline 59
0112 ; e_0=Check_Value-Set_Target_Value;
0112 20900600 lds R2,_Set_Target_Value
0116 30900700 lds R3,_Set_Target_Value+1
011A 40901200 lds R4,_Check_Value
011E 50901300 lds R5,_Check_Value+1
0122 4218 sub R4,R2
0124 5308 sbc R5,R3
0126 50920D00 sts _e_0+1,R5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -