📄 pl_dn_c.c
字号:
#include "PL3200.h"
#include<absacc.h>
#include<math.h>
#include<FD130.h>
#define xl_j DBYTE[xl_j0]
#define xl_j_s DBYTE[xl_j_s1]
#define wr_buf0 DBYTE[wr_buf01]
#define wr_buf1 DBYTE[wr_buf11]
#define wr_buf2 DBYTE[wr_buf21]
#define wr_buf3 DBYTE[wr_buf31]
#define wr_buf4 DBYTE[wr_buf41]
#define wr_buf5 DBYTE[wr_buf51]
#define wr_buf6 DBYTE[wr_buf61]
#define xl_pls0_y DBYTE[xl_pls0_y0]
#define xl_pls1_y DBYTE[xl_pls0_y1]
#define xl_pls2_y DBYTE[xl_pls0_y2]
#define fl_num DBYTE[xl_pls0_y3]
#define v_sam0 DBYTE[0X6E] // 电流计量器采样值
#define v_sam1 DBYTE[0X6F]
#define v_sam2 DBYTE[0X70]
#define v_sam3 DBYTE[0X71]
#define i_sam0 DBYTE[0X72] // 电压计量器采样值
#define i_sam1 DBYTE[0X73]
#define i_sam2 DBYTE[0X74]
#define i_sam3 DBYTE[0X75]
#define z_cir0 DBYTE[0X76] // 采样周波
#define z_cir1 DBYTE[0X77]
#define ku_0 DBYTE[0X78]
#define ku_1 DBYTE[0X79]
#define ku_2 DBYTE[0X7A]
#define ki_0 DBYTE[0X7C]
#define ki_1 DBYTE[0X7D]
#define ki_2 DBYTE[0X7E]
uchar xdata t,r,x;
uint xdata iev_y,xl_y,xl_z;//,pp;
ulong xdata pp;
ulong xdata v,ku,point;
//extern void gl_rd(void);
extern void v_i_gl_rd(void);
void did(void){v/=c_e0;}
void bdd(void)
{r=xl_e;did();t=xl_e;did();t<<=xl_c4;} //数据传送子函数
void cdd(void){ku=ku*256;}
void gjs(void)
{v=(ulong)xl_y*b_r6*b_txx/iev_y;} //数据运算子函数
void sqrt_x(void) {v=sqrt(v);}
void gcd(void)
{t=xl_e;did();if(t>=xl_c5)v+=xl_c1;} //数据判断子函数
void viv(void)
{v=(v*ku)/10000; } // 计算当前电压有效值
void v_i_gl_rd(void)
{
ku=v_sam3; cdd();
ku+=v_sam2;cdd(); // 读实时电压高2字节
ku+=v_sam1;cdd(); // 读实时电压高1字节
v=ku+v_sam0; // 读实时电压低字节
ku= z_cir1;cdd();
point = ku+z_cir0;
sqrt_x(); // 电压值开方
ku=ku_2;cdd();ku+=ku_1;cdd();ku+=ku_0; // 电压修正系数
viv(); x=v%100;
if(x>50) x=1;
else x=0;
v=v/100; v+=x;
if(v>300) v=0;
bdd(); v_sam0=r+t; bdd(); v_sam1=r+t;
ku=i_sam3; cdd(); // 读实时电流高3字节
ku+=i_sam2;cdd(); // 读实时电流高2字节
ku+=i_sam1;cdd(); // 读实时电流高1字节
v=ku+i_sam0; // 读实时电流低字节
sqrt_x(); // 电流值开方
ku=ki_2;cdd();ku+=ki_1;cdd();ku+=ki_0; // 电流修正系数
viv();v=v-3;if(v>10000) v=0; bdd(); i_sam0=r+t;bdd();i_sam1=r+t;
}
//void gl_rd(void)
//{ uchar xdata *m;
// fl_num=xl_0_1;//数据传送
// if(fl_num!=xl_pls2_y){xl_pls0_y=xl_pls1_y=xl_c0;xl_pls2_y=xl_c0+xl_x;}//判断数据累加结果是否正确
// iev_y=sev_mr1;xl_z=xl_y=(uint)xl_pls1_y*r_zs+xl_pls0_y;
// xl_y*=100;gjs();gcd();xl_y=xl_z;//数据转移与运算
// bdd();wr_buf4=xl_rt;bdd();wr_buf5=xl_rt;bdd();wr_buf6=xl_rt;//数据转移
// if(xl_j_s!=r_max)xl_j_s=xl_j+xl_c1;m=c_ex;//判断数据转移与运算是否正确
// m+=xl_j*xl_c2;*m=xl_pls0_y;m++;*m=xl_pls1_y;m=c_ex;pp=xl_c0;//继续数据的转移
// for(x=xl_c0;x<xl_j_s;x++)//循环进行数据的转移功能,转移的数据存入预定的位置
// {t=*m++;r=*m++;xl_y=(uint)r*r_zs+t;pp+=xl_y;}
// pp*=100;pp/=xl_j_s;xl_y=pp;if(xl_j_s!=r_max)xl_j_s=xl_c0;xl_j++;//数据的计算与判断
// if(xl_j>=r_max){xl_j=xl_c0;xl_j_s=r_max;}gjs();//运行数据的判断与/过程运算
// gcd();bdd();wr_buf0=xl_rt;bdd();wr_buf1=xl_rt;bdd();wr_buf2=xl_rt;//数据转移
// xl_pls0_y=xl_c0; xl_pls1_y=xl_c0; xl_pls2_y=xl_c0+xl_x;//计算数据设置
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -