📄 kesair_pid.lst
字号:
C:\tic2xx\c2000\cgtools\bin\dspa.exe KesaiR_PID.asm KesaiR_PID.obj -gls -v2xx
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
KesaiR_PID.asm PAGE 1
1 ;====================================================================
2 ; Filename : KesaiR_PID.asm
3 ; Module names: KesaiR_PID
4 ; Initialization routines: KesaiR_PID_INIT
5 ; Description: KesaiR的PID调节器
6 ;------------------------------------------------------------
7 ; USM0 = USM1 + KesaiR_PID_K0 * KesaiRE0 + KesaiR_PID_K1 * KesaiRE1 + KesaiR_PID_K2 * KesaiRE2
8 ;
9 ; |~~~~~~~~~~~|
10 ; KesaiR0,1 o------> | |
11 ; KesaiR_ref o------> | PID | ----->o USM0
12 ; USM1 o------> | |
13 ; KesaiRE0,1,2 o------> | |
14 ; KesaiR_PID_K0,K1,K2 o------> |___________|
15 ;
16 ; Modify: 2004.6.17
17 ;=====================================================================
18 .include "f2407.h"
19 .global KesaiR_PID,KesaiR_PID_INIT ; function call
20
21 .global KesaiR0,KesaiR_ref ; Inputs
22 .global KesaiR_PID_K0,KesaiR_PID_K1,KesaiR_PID_K2;Inputs
23 .global KesaiRE0,KesaiRE1,KesaiRE2 ; Inputs
24 .global USM1,USM_TEMP ; Input
25 .global USM0 ; Outputs
26 .global USMmax,USMmin
27 ;=====================================================================
28 0000 KesaiR_PID_INIT:
29 ;=====================================================================
30 0000 bc04 LDP #DP_DATA
31 0001 ae00! SPLK #14000,USMmax ;设定最值输出
0002 36b0
32 0003 ae00! SPLK #-14000,USMmin
0004 c950
33
34 0005 ae00! SPLK #0,USM1 ;给初值
0006 0000
35 0007 ae00! SPLK #0,KesaiRE0
0008 0000
36 0009 ae00! SPLK #0,KesaiRE1
000a 0000
37 000b ae00! SPLK #0,KesaiRE2
000c 0000
38
39 000d ae00! SPLK #13780,KesaiR_PID_K0
000e 35d4
40 ;SPLK #8780,KesaiR_PID_K0 ;根据实际来设定,现在先胡乱设。
41 000f ae00! SPLK #-13700,KesaiR_PID_K1
0010 ca7c
42 0011 ae00! SPLK #0,KesaiR_PID_K2
0012 0000
43
44 0013 ef00 RET
45 ;=====================================================================
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
KesaiR_PID.asm PAGE 2
46 0014 KesaiR_PID:
47 ;=====================================================================
48 0014 be47 SETC SXM
49 0015 bf01 SPM 1 ;符号数相乘
50 ;------------------------------------------------------------
51 0016 bc04 LDP #DP_DATA
52 0017 1000! LACC USM0
53 0018 9000! SACL USM1 ;USM0->USM1
54 0019 1000! LACC KesaiRE1
55 001a 9000! SACL KesaiRE2 ;KesaiRE1->KesaiRE2
56 001b 1000! LACC KesaiRE0
57 001c 9000! SACL KesaiRE1 ;KesaiRE0->KesaiRE1
58 ; SPLK #2100,KesaiR0
59 ; calculate USM0
60 ; USM0 = USM1 + KesaiR_PID_K0 * KesaiRE0 + KesaiR_PID_K1 * KesaiRE1 + KesaiR_PID_K2 * KesaiRE2
61 001d 1000! LACC KesaiR_ref
62 001e 3000! SUB KesaiR0
63 ;数据处理
64 001f 9000! SACL KesaiRE0 ;新的KesaiRE0
65
66 0020 6a00! LACC USM1,16
67 0021 2000! ADD USM_TEMP ;ACC为上一次的计算结果
68 0022 7300! LT KesaiRE0
69 0023 5400! MPY KesaiR_PID_K0
70 0024 7000! LTA KesaiRE1
71 0025 5400! MPY KesaiR_PID_K1
72 0026 7000! LTA KesaiRE2
73 0027 5400! MPY KesaiR_PID_K2
74 0028 be04 APAC
75 ;数据处理
76 0029 9800! SACH USM0 ;存PID计算结果
77 002a 9000! SACL USM_TEMP ;存PID计算结果的低16位。
78 ;------------------------------------------------------------
79 ; 判断 USM0 是否饱和
80 002b 1000! LACC USM0
81 002c 3000! SUB USMmin
82 002d e38c BCND KesaiR_PID_MIN,GEQ
002e 0032'
83 002f 1000! LACC USMmin
84 0030 7980 B KesaiR_PID_RESULT
0031 003c'
85 0032 KesaiR_PID_MIN:
86 0032 1000! LACC USM0
87 0033 3000! SUB USMmax
88 0034 e3cc BCND KesaiR_PID_MAX,LEQ
0035 0039'
89 0036 1000! LACC USMmax
90 0037 7980 B KesaiR_PID_RESULT
0038 003c'
91 0039 KesaiR_PID_MAX:
92 0039 1000! LACC USM0
93 003a 7980 B KesaiR_PID_RESULT
003b 003c'
94 003c KesaiR_PID_RESULT:
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
KesaiR_PID.asm PAGE 3
95 003c 9000! SACL USM0 ; 最终结果
96 ;------------------------------------------------------------
97 003d bf00 SPM 0
98 003e ef00 RET
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -