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

📄 pidtext.lis

📁 用ICC-AVR编译器编译适用与AVR系列单片机的PID库.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .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 + -