?? pid.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 + -