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

📄 pid.lis

📁 本设计以ATMEL公司生产的AT90S8515作为控制核心
💻 LIS
字号:
                        .module PID.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\hujie\PID.c
 0000                   .dbfunc e PID _PID fV
 0000           ;           flag -> R12,R13
 0000           ;         newDAC -> y+0
 0000           ;             ee -> R10,R11
                        .even
 0000           _PID::
 0000 00D0              rcall push_gset4
 0002 A02E              mov R10,R16
 0004 B12E              mov R11,R17
 0006 2497              sbiw R28,4
 0008                   .dbline -1
 0008                   .dbline 11
 0008           ; // PID.c
 0008           ; // 8/7/2005 written by MrLiu
 0008           ; //
 0008           ; 
 0008           ; #include <io8515v.h>
 0008           ; #include "PID.h"
 0008           ; #include "main.h" 
 0008           ; #define PID_EE_VALUE_MAX   100
 0008           ; 
 0008           ; void PID(int ee)
 0008           ; {
 0008                   .dbline 13
 0008           ;       long    newDAC;
 0008           ;       int             flag=1;
 0008 81E0              ldi R24,1
 000A 90E0              ldi R25,0
 000C C82E              mov R12,R24
 000E D92E              mov R13,R25
 0010                   .dbline 15
 0010           ;       
 0010           ;       if(ee>PID_EE_VALUE_MAX) ee=PID_EE_VALUE_MAX;
 0010 84E6              ldi R24,100
 0012 8A15              cp R24,R10
 0014 9B05              cpc R25,R11
 0016 14F4              brge L2
 0018                   .dbline 15
 0018 A82E              mov R10,R24
 001A B92E              mov R11,R25
 001C           L2:
 001C                   .dbline 16
 001C           ;       if(ee<-PID_EE_VALUE_MAX) ee=-PID_EE_VALUE_MAX;
 001C 8A2D              mov R24,R10
 001E 9B2D              mov R25,R11
 0020 8C39              cpi R24,156
 0022 EFEF              ldi R30,255
 0024 9E07              cpc R25,R30
 0026 24F4              brge L4
 0028                   .dbline 16
 0028 8CE9              ldi R24,-100
 002A 9FEF              ldi R25,-1
 002C A82E              mov R10,R24
 002E B92E              mov R11,R25
 0030           L4:
 0030                   .dbline 17
 0030           ;       newDAC=(long)DAC-((long)ee<<2);
 0030 82E0              ldi R24,2
 0032 90E0              ldi R25,0
 0034 2A2C              mov R2,R10
 0036 3B2C              mov R3,R11
 0038 4424              clr R4
 003A 37FC              sbrc R3,7
 003C 4094              com R4
 003E 5524              clr R5
 0040 47FC              sbrc R4,7
 0042 5094              com R5
 0044 8A93              st -y,R24
 0046 022D              mov R16,R2
 0048 132D              mov R17,R3
 004A 242D              mov R18,R4
 004C 352D              mov R19,R5
 004E 00D0              rcall lsl32
 0050 20900000          lds R2,_DAC
 0054 30900100          lds R3,_DAC+1
 0058 4424              clr R4
 005A 5524              clr R5
 005C 201A              sub R2,R16
 005E 310A              sbc R3,R17
 0060 420A              sbc R4,R18
 0062 530A              sbc R5,R19
 0064 EC2F              mov R30,R28
 0066 FD2F              mov R31,R29
 0068 2082              std z+0,R2
 006A 3182              std z+1,R3
 006C 4282              std z+2,R4
 006E 5382              std z+3,R5
 0070                   .dbline 18
 0070           ;       if (newDAC>65535) DAC=65535;
 0070 4FEF              ldi R20,255
 0072 5FEF              ldi R21,255
 0074 60E0              ldi R22,0
 0076 70E0              ldi R23,0
 0078 EC2F              mov R30,R28
 007A FD2F              mov R31,R29
 007C 2080              ldd R2,z+0
 007E 3180              ldd R3,z+1
 0080 4280              ldd R4,z+2
 0082 5380              ldd R5,z+3
 0084 4215              cp R20,R2
 0086 5305              cpc R21,R3
 0088 6405              cpc R22,R4
 008A 7505              cpc R23,R5
 008C 3CF4              brge L6
 008E                   .dbline 18
 008E 8FEF              ldi R24,65535
 0090 9FEF              ldi R25,255
 0092 90930100          sts _DAC+1,R25
 0096 80930000          sts _DAC,R24
 009A 28C0              rjmp L7
 009C           L6:
 009C                   .dbline 19
 009C           ;       else if (newDAC<0) DAC=0;
 009C 40E0              ldi R20,0
 009E 50E0              ldi R21,0
 00A0 60E0              ldi R22,0
 00A2 70E0              ldi R23,0
 00A4 EC2F              mov R30,R28
 00A6 FD2F              mov R31,R29
 00A8 2080              ldd R2,z+0
 00AA 3180              ldd R3,z+1
 00AC 4280              ldd R4,z+2
 00AE 5380              ldd R5,z+3
 00B0 2416              cp R2,R20
 00B2 3506              cpc R3,R21
 00B4 4606              cpc R4,R22
 00B6 5706              cpc R5,R23
 00B8 3CF4              brge L8
 00BA                   .dbline 19
 00BA 2224              clr R2
 00BC 3324              clr R3
 00BE 30920100          sts _DAC+1,R3
 00C2 20920000          sts _DAC,R2
 00C6 12C0              rjmp L9
 00C8           L8:
 00C8                   .dbline 20
 00C8           ;       else DAC=newDAC&0x0ffff;
 00C8 4FEF              ldi R20,255
 00CA 5FEF              ldi R21,255
 00CC 60E0              ldi R22,0
 00CE 70E0              ldi R23,0
 00D0 EC2F              mov R30,R28
 00D2 FD2F              mov R31,R29
 00D4 2080              ldd R2,z+0
 00D6 3180              ldd R3,z+1
 00D8 4280              ldd R4,z+2
 00DA 5380              ldd R5,z+3
 00DC 2422              and R2,R20
 00DE 3522              and R3,R21
 00E0 4622              and R4,R22
 00E2 5722              and R5,R23
 00E4 30920100          sts _DAC+1,R3
 00E8 20920000          sts _DAC,R2
 00EC           L9:
 00EC           L7:
 00EC                   .dbline -2
 00EC                   .dbline 21
 00EC           ; }
 00EC           L1:
 00EC 2496              adiw R28,4
 00EE 00D0              rcall pop_gset4
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym r flag 12 I
 00F2                   .dbsym l newDAC 0 L
 00F2                   .dbsym r ee 10 I
 00F2                   .dbend

⌨️ 快捷键说明

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