dataprotask.lst
来自「cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表」· LST 代码 · 共 556 行 · 第 1/2 页
LST
556 行
1 .file "DataProTask.c"
2 .arch atmega8
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
101 .global ReadAD
102 .data
105 ReadAD:
106 0000 00 .byte 0
107 0001 6400 .word 100
108 .global Ps_Neg
109 .global Ps_Neg
110 .section .bss
113 Ps_Neg:
114 0000 00 .skip 1,0
115 .global Detect_T1
116 .global Detect_T1
119 Detect_T1:
120 0001 0000 .skip 2,0
121 .global Detect_T0
122 .global Detect_T0
125 Detect_T0:
126 0003 0000 .skip 2,0
127 .global Detect_B0
128 .global Detect_B0
131 Detect_B0:
132 0005 0000 .skip 2,0
133 .global Detect_B1
134 .global Detect_B1
137 Detect_B1:
138 0007 0000 .skip 2,0
139 .global Detect_A0
140 .global Detect_A0
143 Detect_A0:
144 0009 0000 .skip 2,0
145 .global Detect_A1
146 .global Detect_A1
149 Detect_A1:
150 000b 0000 .skip 2,0
151 .lcomm Step.0,1
152 .text
154 .global DealDataMainLoop
156 DealDataMainLoop:
1:driver/DataProTask.c **** /**********************************************
2:driver/DataProTask.c **** 公司名称:
3:driver/DataProTask.c **** 文 件 名:CS5460A.c
4:driver/DataProTask.c **** 版 本 号:
5:driver/DataProTask.c **** 程序设计:
6:driver/DataProTask.c **** 说 明:
7:driver/DataProTask.c **** 完成日期:
8:driver/DataProTask.c **** 修改日期:
9:driver/DataProTask.c **** 功能摘要:
10:driver/DataProTask.c **** ***********************************************/
11:driver/DataProTask.c **** #define _DealData
12:driver/DataProTask.c **** #include "includes.h"
13:driver/DataProTask.c ****
14:driver/DataProTask.c **** uint8 fAdRunning_A; //AD是否运行良好
15:driver/DataProTask.c **** uint8 fAdRunning_B; //AD是否运行良好
16:driver/DataProTask.c ****
17:driver/DataProTask.c **** uint8 V_sign_A;
18:driver/DataProTask.c **** uint8 I_sign_A;
19:driver/DataProTask.c **** uint8 V_sign_B;
20:driver/DataProTask.c **** uint8 I_sign_B;
21:driver/DataProTask.c ****
22:driver/DataProTask.c **** uint16 Detect_A1 =0 ; //测试时用。A状态寄存器的最高位是1
23:driver/DataProTask.c **** uint16 Detect_A0 =0; //A状态寄存器的最高位是0
24:driver/DataProTask.c **** uint16 Detect_B1 =0; //B状态寄存器的最高位是1
25:driver/DataProTask.c **** uint16 Detect_B0 =0; //B状态寄存器的最高位是0
26:driver/DataProTask.c **** uint16 Detect_T0 =0; //不用加载校验值
27:driver/DataProTask.c **** uint16 Detect_T1 =0; //加载校验值
28:driver/DataProTask.c ****
29:driver/DataProTask.c ****
30:driver/DataProTask.c **** uint32 Ps; //三相总功率
31:driver/DataProTask.c **** uint8 Ps_Neg = 0; //功率为负标志
32:driver/DataProTask.c **** WAIT_TIME_STRUCT ReadAD = {0,_1S};
33:driver/DataProTask.c ****
34:driver/DataProTask.c **** void DealDataMainLoop (void);
35:driver/DataProTask.c **** void Date_cs5460(void);
36:driver/DataProTask.c ****
37:driver/DataProTask.c **** //---------------------------
38:driver/DataProTask.c ****
39:driver/DataProTask.c **** /*void DealDataMainLoop (void)
40:driver/DataProTask.c **** {
41:driver/DataProTask.c **** uint8 AD_Buf[4];
42:driver/DataProTask.c ****
43:driver/DataProTask.c **** if(ReadAD.fGetTime)
44:driver/DataProTask.c **** {
45:driver/DataProTask.c **** ReadAD.fGetTime = 0;
46:driver/DataProTask.c **** ReadAD.WaitTime = _1S;
47:driver/DataProTask.c **** if (Rest5460A_Time != 0x00)
48:driver/DataProTask.c **** {
49:driver/DataProTask.c **** Rest5460A_Time--; //屏蔽前两次AD转换
50:driver/DataProTask.c **** fAdRunning_A = 1;
51:driver/DataProTask.c **** }
52:driver/DataProTask.c **** else
53:driver/DataProTask.c **** {
54:driver/DataProTask.c **** CS_AD_A = 0;
55:driver/DataProTask.c **** Rd5460A(AD_Buf,0x1e);
56:driver/DataProTask.c **** CS_AD_A = 1;
57:driver/DataProTask.c **** if ((AD_Buf[0] & 0x80) == 0x80)
58:driver/DataProTask.c **** {
59:driver/DataProTask.c **** CS_AD_B = 0;
60:driver/DataProTask.c **** Rd5460A(AD_Buf,0x1e);
61:driver/DataProTask.c **** CS_AD_B = 1;
62:driver/DataProTask.c **** if ((AD_Buf[0] & 0x80) == 0x80)
63:driver/DataProTask.c **** {
64:driver/DataProTask.c **** fAdRunning_A = 1;
65:driver/DataProTask.c **** Date_cs5460() ;
66:driver/DataProTask.c **** }
67:driver/DataProTask.c **** }
68:driver/DataProTask.c **** }
69:driver/DataProTask.c **** }
70:driver/DataProTask.c **** }
71:driver/DataProTask.c **** //==================================================
72:driver/DataProTask.c **** void Date_cs5460(void)
73:driver/DataProTask.c **** {
74:driver/DataProTask.c **** uint16 temp1 = 0;
75:driver/DataProTask.c **** uint16 temp2 = 0;
76:driver/DataProTask.c **** uint8 AD_Buf[4];
77:driver/DataProTask.c ****
78:driver/DataProTask.c **** Sync_5460A();
79:driver/DataProTask.c **** Clear5460A();
80:driver/DataProTask.c ****
81:driver/DataProTask.c ****
82:driver/DataProTask.c **** CS_AD_A = 0;
83:driver/DataProTask.c **** Rd5460A(AD_Buf,0x14);
84:driver/DataProTask.c **** CS_AD_A = 1;
85:driver/DataProTask.c **** temp1 = AD_Buf[0] << 8;
86:driver/DataProTask.c **** temp1 += AD_Buf[1];
87:driver/DataProTask.c ****
88:driver/DataProTask.c **** CS_AD_B = 0;
89:driver/DataProTask.c **** Rd5460A(AD_Buf,0x14);
90:driver/DataProTask.c **** CS_AD_B = 1;
91:driver/DataProTask.c **** temp2 = AD_Buf[0] << 8;
92:driver/DataProTask.c **** temp2 += AD_Buf[1];
93:driver/DataProTask.c ****
94:driver/DataProTask.c **** //--------------------------------------------
95:driver/DataProTask.c **** CS_AD_A = 0;
96:driver/DataProTask.c **** Rd5460A(AD_Buf,0x10);
97:driver/DataProTask.c **** CS_AD_A = 1;
98:driver/DataProTask.c **** V_sign_A = AD_Buf[0];
99:driver/DataProTask.c **** V_sign_A >>=7;
100:driver/DataProTask.c **** CS_AD_A = 0;
101:driver/DataProTask.c **** Rd5460A(AD_Buf,0x0e);
102:driver/DataProTask.c **** CS_AD_A = 1;
103:driver/DataProTask.c **** I_sign_A = AD_Buf[0];
104:driver/DataProTask.c **** I_sign_A >>=7;
105:driver/DataProTask.c ****
106:driver/DataProTask.c **** CS_AD_B = 0;
107:driver/DataProTask.c **** Rd5460A(AD_Buf,0x10);
108:driver/DataProTask.c **** CS_AD_B = 1;
109:driver/DataProTask.c **** V_sign_B = AD_Buf[0];
110:driver/DataProTask.c **** V_sign_B >>=7;
111:driver/DataProTask.c **** CS_AD_B = 0;
112:driver/DataProTask.c **** Rd5460A(AD_Buf,0x0e);
113:driver/DataProTask.c **** CS_AD_B = 1;
114:driver/DataProTask.c **** I_sign_B = AD_Buf[0];
115:driver/DataProTask.c **** I_sign_B >>=7;
116:driver/DataProTask.c ****
117:driver/DataProTask.c **** //--------------------------------------------
118:driver/DataProTask.c ****
119:driver/DataProTask.c **** temp1 += temp2;
120:driver/DataProTask.c **** Ps_Neg = 0;
121:driver/DataProTask.c **** if (temp1 > 0x8000)
122:driver/DataProTask.c **** {
123:driver/DataProTask.c **** temp1 = 0 - temp1; // 功率为负
124:driver/DataProTask.c **** Ps_Neg = 1;
125:driver/DataProTask.c **** }
126:driver/DataProTask.c **** AD_Buf[0] = temp1 >> 8;
127:driver/DataProTask.c **** AD_Buf[1] = (uint8)temp1;
128:driver/DataProTask.c **** temp2 = DealRms(AD_Buf,0x6f20);
129:driver/DataProTask.c **** Ps =(uint32)temp2* PtVal * CtVal; //计算一次值功率
130:driver/DataProTask.c ****
131:driver/DataProTask.c ****
132:driver/DataProTask.c **** }
133:driver/DataProTask.c **** //================================================================= */
134:driver/DataProTask.c ****
135:driver/DataProTask.c **** void DealDataMainLoop (void)
136:driver/DataProTask.c **** {
158 .LM1:
159 /* prologue: frame size=4 */
160 0000 EF92 push r14
161 0002 FF92 push r15
162 0004 0F93 push r16
163 0006 1F93 push r17
164 0008 CF93 push r28
165 000a DF93 push r29
166 000c CDB7 in r28,__SP_L__
167 000e DEB7 in r29,__SP_H__
168 0010 2497 sbiw r28,4
169 0012 0FB6 in __tmp_reg__,__SREG__
170 0014 F894 cli
171 0016 DEBF out __SP_H__,r29
172 0018 0FBE out __SREG__,__tmp_reg__
173 001a CDBF out __SP_L__,r28
174 /* prologue end (size=14) */
137:driver/DataProTask.c **** uint8 AD_Buf[4];
138:driver/DataProTask.c **** uint16 temp1 = 0;
139:driver/DataProTask.c **** uint16 temp2 = 0;
140:driver/DataProTask.c **** static uint8 Step = 0;
141:driver/DataProTask.c ****
142:driver/DataProTask.c **** if (ReadAD.fGetTime) {
176 .LM2:
177 001c 8091 0000 lds r24,ReadAD
178 0020 8823 tst r24
179 0022 09F4 brne .+2
180 0024 C4C0 rjmp .L1
143:driver/DataProTask.c **** switch (Step) {
182 .LM3:
183 0026 8091 0000 lds r24,Step.0
184 002a 9927 clr r25
185 002c 0097 sbiw r24,0
186 002e 21F0 breq .L4
187 0030 0197 sbiw r24,1
188 0032 09F4 brne .+2
189 0034 55C0 rjmp .L11
190 0036 BBC0 rjmp .L1
191 .L4:
144:driver/DataProTask.c **** case 0:
145:driver/DataProTask.c **** if (Rest5460A_Time == 0x00)
193 .LM4:
194 0038 8091 0000 lds r24,Rest5460A_Time
195 003c 8823 tst r24
196 003e 09F0 breq .+2
197 0040 47C0 rjmp .L5
146:driver/DataProTask.c **** {
147:driver/DataProTask.c **** CS_AD_A = 0;
199 .LM5:
200 0042 AD98 cbi 53-0x20,5
148:driver/DataProTask.c **** Rd5460A(AD_Buf,0x1e);
202 .LM6:
203 0044 6EE1 ldi r22,lo8(30)
204 0046 CE01 movw r24,r28
205 0048 0196 adiw r24,1
206 004a 00D0 rcall Rd5460A
149:driver/DataProTask.c **** CS_AD_A = 1;
208 .LM7:
209 004c AD9A sbi 53-0x20,5
150:driver/DataProTask.c ****
151:driver/DataProTask.c **** //fAdRunning_A = 0;
152:driver/DataProTask.c **** if((AD_Buf[0] & 0x80) == 0x80)
211 .LM8:
212 004e 8981 ldd r24,Y+1
213 0050 87FF sbrs r24,7
214 0052 0DC0 rjmp .L6
153:driver/DataProTask.c **** { fAdRunning_A = 1;Detect_A1++;}
216 .LM9:
217 0054 81E0 ldi r24,lo8(1)
218 0056 8093 0000 sts fAdRunning_A,r24
219 005a 8091 0000 lds r24,Detect_A1
220 005e 9091 0000 lds r25,(Detect_A1)+1
221 0062 0196 adiw r24,1
222 0064 9093 0000 sts (Detect_A1)+1,r25
223 0068 8093 0000 sts Detect_A1,r24
224 006c 09C0 rjmp .L7
225 .L6:
154:driver/DataProTask.c **** else
155:driver/DataProTask.c **** {Detect_A0++;}
227 .LM10:
228 006e 8091 0000 lds r24,Detect_A0
229 0072 9091 0000 lds r25,(Detect_A0)+1
230 0076 0196 adiw r24,1
231 0078 9093 0000 sts (Detect_A0)+1,r25
232 007c 8093 0000 sts Detect_A0,r24
233 .L7:
156:driver/DataProTask.c **** CS_AD_B = 0;
235 .LM11:
236 0080 A898 cbi 53-0x20,0
157:driver/DataProTask.c **** Rd5460A(AD_Buf,0x1e);
238 .LM12:
239 0082 6EE1 ldi r22,lo8(30)
240 0084 CE01 movw r24,r28
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?